写在前面
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系
解答
容错性设计HDFS内置了良好的容错性设计策略,以降低各种故障情况下数据丢失的可能性,接下来针对几个常见的分布式故障场景,分析HDFS对应的容错策略。
-
NameNode故障
NameNode内存中记录了文件系统的元信息,这些元信息一旦丢失,将导致整个文件系统数据不可用。
HDFS允许为每个 Active NameNode 分配个 StandbyNameNode,以防止单个 NameNode 宕机后导致元信息丢失和整个集群不可访问。
-
DataNode故障
每个 DataNode 保存了实际的数据块,这些数据块在其他 DataNode 上存在相同的副本。
DataNode 能通过心跳机制向 NameNode 汇报状态信息,当某个DataNode 宕机后, NameNode 可在其他节点上重构该 DataNode 上的数据块,以保证每个文件的副本数在正常水平线上。
-
数据块损坏
DataNode 保存数据块时,会同时生成一个校验码。
当存取数据块时, 如果发现校验码不一致,则认为该数据块已经损坏, NameNode 会通过其他节点上的正常副本重构受损的数据块。