Hadoop HDFS概念学习系列之DataNode(六)

  HDFS的管理节点是NameNode,用于存储并管理元数据。那么具体的文件数据存储在哪里呢?DataNode就是负责存储数据的组件,一个数据块Block会在多个DataNode中进行冗余备份;而一个DataNode对于一个块最多只包含一个备份。所以可以简单地认为DataNode上存储了数据块ID和数据块内容,以及它们的映射关系。一个HDFS集群可能包含上千个DataNode节点,这些DataNode定时和NameNode进行通信,接受NameNode的指令,为了减轻NameNode的负担,NameNode上并不永久保存哪个DataNode上有哪些数据块的信息,而是通过DataNode启动时的上报来更新NameNode上的映射表。DataNode和NameNode建立连接后,就会不断地和NameNode保持联系,反馈信息中也包含了NameNode对DataNode的一些命令,如删除数据库或者把数据块复制到另一个DataNode。应该注意的是:NameNode不会发起到DataNode的请求,在这个通信过程中,它们严格遵从客户端/服务器架构。

  当然DataNode也作为服务器接受来自客户端的i方问,处理数据块读/写请求。DataNode之间还会相互通信,执行数据块复制任务,同时,在客户端执行写操作的时候,DataNode之间需要相互配合,以保证写操作的一致性。
HDFS体系结构中有两类节点,一类是NameNode,另一类是DataNode。这两类节点分别承担Master和Worker的任务。NameNode就是Master管理集群中的执行调度,DataNode就是Worker具体任务的执行节点。NameNode管理文件系统的命名空间,维护整个文件系统的文件目录树及这些文件的索引目录(本质上还是名字)这些信息以两种形式存储在本地文件系统中,一种是命名空间镜像(Namespaee image );一种是编辑日志(Edit log )。从NameNode中你可以获得每个文件的每个块所在的DataNode。有一点需要注意的是,这些信息不是永久保存的,NameNode会在每次启动系统时动态地重建这些信息。当运行任务时,客户端通过NameNode获取元数据信息,和DataNode进行交互以访问整个文件系统。系统会提供一个类似于POSIX的文件接口,这样用户在编程时无须考虑NameNode和DataNode的具体功能。

  DataNode是文件系统Worker中的节点,用来执行具体的任务:存储文件块,被客户端和NameNode调用。同时,它会通过心跳(Heartbeat)定时向NameNode发送所存储的文件块信息

 

 

本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5081183.html,如需转载请自行联系原作者

上一篇:Hadoop HDFS概念学习系列之NameNode和Secondary NameNode通信模型(十一)


下一篇:Ceph分布式存储学习指南1.11 HDFS