DataNode

    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也作为服务器接受来自客户端的访问,处理数据块读/写请求。DataNode之间还会相互通信,执行数据块复制任务,同时,在客户端执行写操作的时候,DataNode之间需要相互配合,以保证写操作的一致性。


   当运行任务时,客户端通过NameNode获取元数据信息,和DataNode进行交互以访问整个文件系统。

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



猜你喜欢

转载自blog.csdn.net/HYN205/article/details/80714237