阅读量:1
Ubuntu Hadoop 容错机制设置指南
一 核心容错机制与推荐配置
- 存储层 HDFS:通过多副本保证数据可靠性,默认副本数为3。在节点年故障率 p=0.02 时,副本数从 1→3 可将年丢失概率从 2% 降至 0.0008%(约 1/125000 年),可靠性提升约2500 倍;继续增加到 4 副本可靠性提升有限但存储成本从 3× 增至 4×,因此通常保持 3 副本作为性价比最优解。
- 计算层 MapReduce:通过任务重试与推测执行降低慢节点对作业完成时间的影响。可配置每个 Map/Reduce 任务的最大尝试次数(如 mapreduce.map.max.attempts、mapreduce.reduce.max.attempts),并为“拖后腿”的任务自动启动备份执行,从而显著缩短整体作业耗时。
- 服务层高可用 HA:为避免 NameNode 与 ResourceManager 单点故障,建议启用基于 ZooKeeper 的自动故障转移(ZKFC)。HDFS 侧配置 dfs.ha.automatic-failover.enabled=true 与合适的隔离方法(如 sshfence);YARN 侧启用 yarn.resourcemanager.ha.enabled=true 并配置 yarn.resourcemanager.zk-address 指向 ZooKeeper 集群。
二 关键配置示例
- HDFS HA(core-site.xml 与 hdfs-site.xml 片段)
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://myclustervalue>
property>
<property>
<name>ha.zookeeper.quorumname>
<value>master:2181,slave1:2181,slave2:2181value>
property>
configuration>
<configuration>
<property>
<name>dfs.nameservicesname>
<value>myclustervalue>
property>
<property>
<name>dfs.ha.namenodes.myclustername>
<value>nn1,nn2value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1name>
<value>master:8020value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2name>
<value>slave1:8020value>
property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1name>
<value>master:50070value>
property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2name>
<value>slave1:50070value>
property>
<property>
<name>dfs.namenode.shared.edits.dirname>
<value>qjournal://master:8485;slave1:8485;slave2:8485/myclustervalue>
property>
<property>
<name>dfs.client.failover.proxy.provider.myclustername>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
property>
<property>
<name>dfs.ha.automatic-failover.enabledname>
<value>truevalue>
property>
<property>
<name>dfs.ha.fencing.methodsname>
<value>sshfencevalue>
property>
<property>
<name>dfs.ha.fencing.ssh.private-key-filesname>
<value>/home/hadoop/.ssh/id_rsavalue>
property>
<property>
<name>dfs.replicationname>
<value>3value>
property>
configuration>
- YARN HA(yarn-site.xml 片段)
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabledname>
<value>truevalue>
property>
<property>
<name>yarn.resourcemanager.cluster-idname>
<value>yarn-clustervalue>
property>
<property>
<name>yarn.resourcemanager.ha.rm-idsname>
<value>rm1,rm2value>
property>
<property>
<name>yarn.resourcemanager.zk-addressname>
<value>master:2181,slave1:2181,slave2:2181value>
property>
<property>
<name>yarn.resourcemanager.hostname.rm1name>
<value>mastervalue>
property>
<property>
<name>yarn.resourcemanager.hostname.rm2name>
<value>slave1value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
configuration>
- MapReduce 容错(mapred-site.xml 片段)
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.map.max.attemptsname>
<value>4value>
property>
<property>
<name>mapreduce.reduce.max.attemptsname>
<value>4value>
property>
<property>
<name>mapreduce.map.speculativename>
<value>truevalue>
property>
<property>
<name>mapreduce.reduce.speculativename>
<value>truevalue>
property>
configuration>
上述配置分别覆盖了 HDFS 的 HA+JournalNode+自动故障转移、YARN 的 ResourceManager HA,以及 MapReduce 的任务重试与推测执行。
三 部署与验证步骤
- 准备与分发:在所有节点完成 JDK、SSH 免密、主机名与 /etc/hosts、时间同步等基础环境配置;将 Hadoop 配置目录分发到各节点保持一致。
- 启动 JournalNode:在各 JournalNode 节点执行启动命令(如 start-dfs.sh journalnode 或 hadoop-daemons.sh start journalnode)。
- 格式化与引导:在第一个 NameNode 执行 hdfs namenode -format;在第二个 NameNode 执行 hdfs namenode -bootstrapStandby 同步元数据。
- 初始化 ZKFC:在任一 NameNode 执行 hdfs zkfc -formatZK,为自动故障转移准备 ZooKeeper 节点。
- 启动与检查:启动 HDFS(start-dfs.sh)与 YARN(start-yarn.sh);使用 hdfs haadmin -report 查看 NameNode 状态,使用 yarn rmadmin -getServiceState rm1/rm2 检查 ResourceManager 状态,确认 Active/Standby 正常。
四 验证容错效果
- 数据可靠性验证:向 HDFS 写入数据后关闭一个包含副本的 DataNode,执行 hdfs fsck / -files -blocks -locations 观察块分布与健康状态,确认数据仍可读且副本数满足策略。
- NameNode 故障转移:在 Active NameNode 上停止进程或断网,观察 ZKFC 是否在秒级将 Standby 切换为 Active,并通过 hdfs haadmin -getServiceState nn1 校验状态切换。
- 任务容错与推测执行:提交一个包含“随机休眠”的 Map 任务以制造“慢任务”,在 YARN Web UI(默认 8088) 可观察到为慢任务启动备份执行;手动 kill 某个 YarnChild 进程后,可在 8088 与作业历史中看到该任务被重新调度与重试。
以上就是关于“Ubuntu Hadoop 容错机制如何设置”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm