Hadoop2.0中HDFS高可用性的实现原理

        在Hadoop1.0中,NameNode在HDFS集群中存在单点故障问题,每一个集群中只存在一个NameNode,如果NameNode所在的机器出现故障,那么整个集群就无法利用,直到NameNode重启或在另一台主机上启动NameNode守护进程。因此,有两个因素影响了HDFS的高可用性:

        (1)、在不可预知的情况下,如果NameNode所在的机器崩溃了,整个集群将无法利用,直到NameNode被重启。

        (2)、在可预知的情况下,比如NameNode所在的机器硬件或软件需要升级,将导致整个集群宕机。

        在Hadoop2.0中,通过在一个集群中运行两个NameNode(active NN,standbyNN),解决了上面的两个问题:如果active NN所在机器崩溃或需要维护,可以快速的启动standby NN来恢复正常。

        在典型的HA集群中,通常有两台不同的机器作为NameNode,不过只有一台处于Active状态,另一台则处于Standby状态,Active NN负责集群中所有客户端的操作,而Standby NN用于备用。

        为了让Standby NN和Active NN保持同步(元数据保持一致),它们都将会和JournalNodes守护进程通信。当Active NN执行任何有关命名空间的修改的 操作时,它需要持久化到一半以上的JournalNodes上(通过edits log持久化存储),而Standby NN负责观察edits log的变化,它能够从JournalNodes中读取edits的信息,并更新自己的命名空间。一旦Active NN出现故障,Standby NN将会保证从JournalNodes读取了全部的edits(保证和Active NN拥有完全同步的命名空间状态),并切换为Active状态。

        为了提供快速的故障恢复,Standby NN也需要保持集群中各个文件块的存储位置,所以,集群中所有的Database将配置好Active NN和Standby NN的位置,并向它们发送文件块所在的位置及心跳。

       

        在任何时候,集群中只有一个NameNode处于Active状态是极其重要的,否则,在两个NameNode下命名空间状态会出现分歧,这会导致数据的丢失及其他不正确的结果。所以,在任何时候,JournalNodes只允许一个NameNode充当writer。在故障恢复期间,将要切换为Active状态的NameNode会取得writer的角色,并阻止另一个NameNode继续处于Active状态。

        部署HA集群的准备事项:

        (1)、NameNode machines:运行Active NN和Standby NN的机器需要有相同的硬件配置。

        (2)、JournalNode machines:JournalNode守护进程相对来说比较轻量,所以这些守护进程可以和其他守护进程(NameNode、YARN ResourceManager)运行在同一台机器上。在一个集群中,至少要运行3个以上的JournalNode。

        在HA集群中,Standby NN也执行NameSpace状态的checkpoints,所以不必运行Secondary NN、CheckpointNode和BackupNode。事实上,运行这些守护进程是错误的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值