Hadoop的HDFS概述

云计算 来源:wanghanlincsdn 16℃ 0评论

HadoopHDFS

HDFS设计思想

  将数据存储到若干台单独的计算机上。

HDFS特点

1.存储超大文件

2.廉价硬件之上

3.一次写入,多次读取

HDFS架构

1.唯一的NameNode,唯一的SecondaryNameNode,都运行在主节点(master)

2.大于等于“1”个DataNode,运行在从节点(slave

3.所有的数据均存放在DataNode里面

4.可以有若干个客户端(Client

HDFS

  默认为128 MB,小于一个块大小的文件不会占据整个块的空间。

HDFSNameNode

  HDFS的“大脑”,运行在master(主节点)中,唯一,掌握整个文件系统的目录树,以及目录树中的所有文件和目录。目录树被存储在FSImageEdit Log中。FSImageHDFS元数据的完整快照(Snapshot)。每次NameNode启动的时候,会默认加载最新的FSImage

HDFSSecondaryNameNode

  NameNode的守护进程,定期合并FSImageEdit Log。在生产环境中,SecondaryNameNode运行在独立的一台服务器上。

NameNodeSecondaryNameNode交互

1.SecondaryNameNode引导NameNode滚动更新Edit Log,并将修改文件名为Edit Log.new

2.SecondaryNameNodeNameNodeFSImageEdit Log复制到SecondaryNameNode的本地检查点中目录。

3.SecondaryNameNode将本地检查点中的复制而来的FSImageEdit Log.new合并,形成新的FSImage文件,压缩,写入磁盘。

4.SecondaryNameNode将新的FSImage发送到NameNodeNameNode直接加载和应用该文件。

5.NameNodeEdit Log.new更名为Edit Log

HDFSDataNode

  DataNodeHDFS中扮演着从节点(slave)的角色,它在Name Node的指导下完成I/O流任务。所有文件块(block)都存于DataNode中,DataNode存放块的目录为:$(dfs.data.dir)/current下,块的文件名为blk_blkID

HDFS的容错

  1.心跳机制

  NameNodeData Node维持心跳检测,确保NameNode与健康的DataNode之间的通信。

  2.文件检测

  HDFS会在文件存储的时候记录每个文件校验和,用来之后对文件进行I/O操作提供文件是否完整的检验标准。如果在一个DataNode中,一个文件在读取时的大小与NameNode所记录的该文件的校验和不一致,则判断该文件已经损坏,不再在该DataNode中取文件,从其他DataNode的上面存放的这份文件的副本(replication)。

  3.集群(Cluster)负载均衡

  HDFSNameNode会根据目前现有的DataNode的负载情况,合理分配各个DataNode的负载。

  4.SecondaryNameNode冷备份NameNode上的FSImageEdit Log

  NameNode 的目录树依赖NameNode上的FSImageEdit Log,若NameNode上的FSImageEdit Log丢失或失效,NameNode的目录树功能也将失效,最终导致HDFS分布式文件系统失效。因此,SecondaryNameNode会定期备份FSImageEdit Log,确保NameNode的目录树可用和处于最新状态。

  5.回收站机制

  客户端想HDFS发出删除一个文件的命令,HDFSNameNode并不是马上将该文件从FSImage删除,而是将文件移动到/trash目录,随时可以恢复,直到超过设置的删除时间才会正式被删除。