HDFS是一个master/slave结构的服务,其中NameNode是master,一般只在一台节点上启动;DataNode是slave,一般每台节点都会启动一个;DataNode不断地主动向NameNode发送心跳、汇报block信息等;为了对NameNode进行备份,还会有一个SecondaryNameNode
对于某个DN发生故障的情况:1,先关闭数据流通道,正在写的数据包由于没有收到ack,不会从队列中删除,数据不会丢失;2,正常的DN上的数据块会被赋予一个新的版本号,并通知NN。主要是故障节点恢复后,发现版本号跟NN上的不一致就会自动删除了;3,数据流管道删除错误节点并重新建立管道,继续在正常几点上写数据;4,文件关闭后,NN发现此数据库没有达到副本数要求,会选择一个新的DN来复制数据块。
https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-name-node/index.html