在Hadoop中进行故障恢复的主要方式是:
- 使用HDFS的副本机制实现故障恢复:
- 默认每个文件有3个副本,存储在不同的DataNode上。
- 当一个DataNode损坏时,可以从另一个副本恢复数据。
- 支持配置每个文件的副本数量。
- 使用YARN的资源调度实现应用恢复:
- 当NodeManager宕机时,会从其他正常NodeManager中重新分配资源。
- 支持设置每个应用的失败次数与最大重试次数。
- 实现应用的HA与故障转移。
- 使用HDFS的HA功能实现NameNode故障恢复:
- 配置两个NameNode(Active/Standby)实现热备。
- 当Active节点宕机时,Standby节点自动切换为Active状态继续提供服务。
- 需要配置JournalNode实现NameNode元数据的同步。
- 使用HBase的RegionServer故障恢复:
- 单个RegionServer宕机时,其上的所有Region会自动切换到其他RegionServer。
- HMaster监控RegionServer并完成Region的重新分配与负载均衡。
- 需要配置备用的HMaster实现HA。
- HDFS HA 配置示例:
- 配置JournalNode:
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://jn1.example.com:8485;jn2.example.com:8485;jn3.example.com:8485/mycluster</value>
</property>
- 配置Active/Standby NameNode:
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
- 启动集群,NN1为Active,NN2为Standby。
- 当NN1宕机,NN2自动切换为Active状态。
故障恢复的主要作用是:
- 最大限度地减少系统宕机或失效时间。
- 提高集群及应用的稳定性与可用性。
- 实现系统的高可靠与持续服务。
- 减少数据与计算的丢失,满足业务的SLA需求。
来看一些简单示例:
1、 HDFS副本机制:
- 配置每个文件的副本数量:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
- 当某DataNode(包含块副本)宕机,HDFS会自动从其它DataNode恢复丢失的块副本。
2、 YARN应用恢复:
- 设置每个应用的最大重试次数:
<property>
<name>yarn.resourcemanager.am.max-retries</name>
<value>10</value>
</property>
<property>
<name>yarn.resourcemanager.recover.counters.interval-ms</name>
<value>10000</value>
</property>
- 当ApplicationMaster失败,会自动重试指定的次数。
- YARN ResourceManager定期收集ApplicationMaster的状态信息。
- 如果超过一定时间未收到ApplicationMaster的心跳,则认为其已失败并进行恢复。
3、 HDFS HA配置:
- 配置JournalNode:
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://jn1.example.com:8485;jn2.example.com:8485;jn3.example.com:8485/mycluster</value>
</property>
- 配置Active与Standby NameNode:
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
- 当Active NameNode(NN1)失败,Standby NameNode(NN2)会自动切换为Active状态继续提供服务。
4、 HBase RegionServer故障恢复:
- 当某RegionServer失败,其上的所有Region会自动切换到其他RegionServer。
- HMaster监控每个RegionServer,一旦检测到失效会进行Region的重新分配与平衡。
- 我们需要配置HBase的备用HMaster实现HA。
所以通过HDFS副本机制、YARN应用恢复、HDFS HA与HBase RegionServer故障恢复,我们可以构建一个高可用与故障恢复能力非常强的大数据平台,以最大限度地满足业务的连续性需求。
除了这些开源组件外,一些商业分布式平台,如阿里云ESS与AWS EMR等也提供了更为完备的故障恢复与HA方案,这也是我们需要关注的方向。而随着新一代分布式计算引擎的发展,相关技术也会有较大创新与改进。