温馨提示×

linux hadoop如何容灾

小樊
40
2026-10-22 01:21:30
栏目: 智能运维

在 Linux 环境下,Hadoop 的“容灾”通常包含**集群内部高可用(HA)和跨集群/异地灾备(DR)**两个层面。下面按实际运维常见做法系统说明。


一、Hadoop 集群内部容灾(高可用 HA)

1. HDFS 高可用(最核心)

目标:NameNode 单点故障消除

关键组件

  • Active NameNode
  • Standby NameNode
  • JournalNode(至少 3 个)
  • ZooKeeper(自动故障转移)

典型架构

NameNode(Active)  <-> JournalNode(3+) <-> NameNode(Standby)
ZKFC + ZooKeeper 负责自动切换

核心配置示例

<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://jn1:8485;jn2:8485;jn3:8485/mycluster</value>
</property>

容灾效果

  • NameNode 宕机:秒级自动切换
  • JournalNode 丢 1 个不影响写入

2. 数据副本容灾

HDFS 副本机制

dfs.replication=3

机架感知(重要)

  • 副本跨机架
  • 防止整个机架断电
<property>
  <name>net.topology.script.file.name</name>
  <value>/etc/hadoop/rack-awareness.sh</value>
</property>

3. YARN 高可用

<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>

<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>

二、Linux 系统级容灾

1. 磁盘级

  • 系统盘:RAID1
  • 数据盘:JBOD + HDFS 副本(不要 RAID5)

2. 网络级

  • 多网卡绑定(bonding)
  • 跨交换机部署

3. 电源级

  • 双路电源
  • UPS

三、跨机房 / 异地灾备(真正容灾)

方案 1:HDFS DistCp(最常用)

hadoop distcp hdfs://clusterA/path hdfs://clusterB/path
  • 异步
  • 可定时执行(cron / Airflow)

方案 2:HDFS Snapshot + DistCp

hdfs dfs -createSnapshot /data snap1
hadoop distcp /data/.snapshot/snap1 remote:/data

方案 3:HBase / Kafka 专用容灾

  • HBase Replication
  • Kafka MirrorMaker

四、运维级容灾建议(非常重要)

✅ 定期演练 NameNode 故障切换
✅ 定期恢复测试(不是只备份)
✅ 监控:

  • NameNode 状态
  • JournalNode 健康
  • 副本缺失率

✅ 文档化切换流程(人肉兜底)


五、简单总结

层级 手段
进程 NameNode HA
数据 副本 + 机架感知
主机 RAID + 多电源
机房 DistCp / 异地集群
运维 演练 + 监控

如果你有 具体场景(如:单集群怎么配 HA、两个机房怎么同步、云上 Hadoop 容灾),可以直接说,我可以给你更针对性的方案。

0 踩