HDFS中数据管理与容错
1.数据块的放置
每个数据块3个副本,就像上面的数据库A一样,这是因为数据在传输过程中任何一个节点都有可能出现故障(没有办法,廉价机器就是这样的),为了保证数据不能丢失,所以存在3个副本,这样保证了硬件上的容错,保证数据传递过程中准确性。
3个副本数据,放在两个机架上。比如上面机架1存在2个副本,机架2存在1个副本。
(1)如果就像下面的DataNode1数据块无法使用了,可以在机架1上的DataNode2和DataNode3取数据 或者 在机架2上取数据;
(2)如果就像下面这样,机架1不能使用了,我们可以在机架2上取数据;
2.心跳检测
DataNode每隔一段时间就会发送心跳消息给NameNode,NameNode通过解析这些心跳消息判断DataNode的状态,比如判断哪些DataNode是挂掉的,哪些是可以使用的。
3. 二级NameNode
NameNode节点只有一个,但是如果NameNode出现故障,整个集群就会出现问题,所以这里出现一个NameNode的备份,也就是SecondaryNameNode。元数据会定期同步到这个SecondaryNameNode上面。
注意在NameNode正常状态下,这里的SecondaryNameNode只会接收备份,不会接收请求。
如果NameNode出现了故障,如下:
SecondaryNameNode会替换NameNode,成为主的NameNode。