美文网首页
Hadoop Start(2) ——HDFS原理:HDFS文件系

Hadoop Start(2) ——HDFS原理:HDFS文件系

作者: bclz | 来源:发表于2019-03-07 08:20 被阅读0次

    1. HDFS简介

    HDFS是Hadoop Distributed File System的简称,即Hadoop分布式文件系统。它起源于谷歌发表的GFS论文,是该论文的开源实现,也是整个大数据的基础。

    HDFS专门为解决大数据的存储问题而产生的,具有如下特点:

    • 可存储超大文件:HDFS可存储PB级的数据
    • 流式数据访问:一次写入,多次读取。数据集通常从数据源复制而来,每次分析都涉及该数据集的大部分甚至全部。
    • 商用硬件:Hadoop不需要运行在高昂可靠的硬件上,它是设计运行在普通的商用硬件上,节点的故障不会影响到系统的运行。

    不适用的场景:

    • 低延时的数据访问:HDFS是为高数据吞吐量而设计的,这会以提高时间延迟为代价。因此,对于低延时的访问需求不适合在HDFS上。
    • 大量的小文件:由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。
    • 多用户写入,随意修改文件:HDFS中的文件只支持单个写入者,而且不支持在任意位置进行修改。

    2. HDFS文件块

    每个磁盘有默认的数据块,这是磁盘读写的最小单位。文件系统的块大小一般为磁盘块的整数倍。磁盘块大小一般为512 字节。

    HDFS文件系统也有块(block)的概念,默认值为128M,也可以修改。超过块大小的文件在存储的时候会被分为多个分块(chunk)。有点需要注意:HDFS中小于一个块大小的文件不会占据整个块的空间,而单一磁盘中如果文件小于块大小,那么整个磁盘块的空间都会被占用。

    对文件进行分块存储有很多好处,比如:

    • 文件的大小可以不受限于单个磁盘的容量;
    • 文件的所有块不必存储在同一个磁盘上,可以利用集群上的任意一个磁盘进行存储;
    • 将文件分块存储便于备份和容错,提高可用性。

    对于访问频繁的文件,其对应的块可能会被显示地缓存在内存中。

      # HDFS的文件块信息可以通过fsck命令查看
      hdfs fsck / -files -blocks
    

    3. HDFS节点

    • namenode

    namenode维护HDFS文件系统的元数据。所谓元数据,就是数据的数据。即存储在HDFS文件系统上的数据的基本信息,比如文件系统树及整棵树内所有的文件和目录,每个文件中各个数据块所在数据节点信息,但并不永久保存块的位置信息,因为这块可能随时变化。这部分的信息在系统启动的时候根据数据节点的信息重建。

    • datanode

    datanode是HDFS文件系统存储具体数据的节点。它们根据namenode节点的调度来存储和检索文件的数据块。由于文件的元数据都存储在namenode,如果没有namenode,文件系统将无法工作,如果namenode的数据损坏,那么存储在datanode上的数据就作废了。
    因此,对namenode的容错显得非常重要。

    可以通过NFS或者HA的方式来确保HDFS的高可用。

    相关文章

      网友评论

          本文标题:Hadoop Start(2) ——HDFS原理:HDFS文件系

          本文链接:https://www.haomeiwen.com/subject/bhdqpqtx.html