hdfs 的容灾

dfs.name.dir (namenode的路径) 可以配置多个路径(也就是说可以多磁盘)但这些目录中的文件都是一样的 (可以防止某磁盘挂掉,做备份)

dfs.data.dir (datanode的路径) 也可配置多个。但数据时不一样的也就是利用多块磁盘来存储数据。至于datanode 的容灾措施, hdfs 会默认把datanode数据copy三份  一个放在本地机架的节点,一个放在同一机架的另一节点,另一个放在其他机架上。 当namenode长时间接收不到(默认1h)datanode的心跳 就认为其挂掉 就会自动从备份数据中取数据块。

 

(1)在Namenode和Datanode之间维持心跳检测,当由于网络故障之类的原因,导致Datanode发出的心跳包没有被Namenode正常收 到的时候,Namenode就不会将任何新的IO操作派发给那个Datanode,该Datanode上的数据被认为是无效的,因此Namenode会检 测是否有文件block的副本数目小于设置值,如果小于就自动开始复制新的副本并分发到其他Datanode节点。
(2)检测文件block的完整性,HDFS会记录每个新创建的文件的所有block的校验和。当以后检索这些文件的时候,从某个节点获取block,会首先确认校验和是否一致,如果不一致,会从其他Datanode节点上获取该block的副本。
(3)集群的负载均衡,由于节点的失效或者增加,可能导致数据分布的不均匀,当某个Datanode节点的空闲空间大于一个临界值的时候,HDFS会自动从其他Datanode迁移数据过来。
(4)Namenode上的fsimage和edits日志文件是HDFS的核心数据结构,如果这些文件损坏了,HDFS将失效。因而, Namenode可以配置成支持维护多 个 FsImage和 Editlog的拷贝。任何对 FsImage或者 Editlog的修改,都将同步到它们的副本上。 它总是选取最近的一致的 FsImage和 Editlog使用。 Namenode在 HDFS是单点存在,如果 Namenode所在的机器错误,手工的干预是必须的。
(5)文件的删除,删除并不是马上从Namenode移出namespace,而是放在/ trash目录随时可恢复,直到超过设置时间才被正式移除。

你可能感兴趣的:(云计算)