温馨提示×

centos怎样容灾hdfs

小樊
44
2026-10-12 06:13:21
栏目: 智能运维

在 CentOS 上实现 HDFS 容灾,一般不是靠“单台机器容灾”,而是从 集群架构、数据冗余、跨中心备份、故障切换 几个层面来做。下面按“常见做法 + 可落地方案”说明。


一、HDFS 自身的容灾能力(基础)

1. 数据副本(最基础)

HDFS 默认 3 副本:

<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>

✅ 单节点宕机不影响数据
❌ 机房断电、集群整体故障不行

2. 机架感知(防止机架故障)

<property>
  <name>net.topology.script.file.name</name>
  <value>/etc/hadoop/rack-awareness.sh</value>
</property>

副本分布在不同机架,避免交换机故障。


二、NameNode 容灾(重点)

方案 1:HA(高可用,必须做)

使用 ZKFC + JournalNode

组件:

  • 2 个 NameNode(Active / Standby)
  • 3 个 JournalNode
  • ZooKeeper

关键配置:

dfs.ha.namenodes.ns1 = nn1,nn2
dfs.namenode.shared.edits.dir = qjournal://jn1:8485;jn2:8485;jn3:8485/ns1
dfs.ha.automatic-failover.enabled = true

✅ NameNode 故障自动切换
✅ CentOS 上非常成熟


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

方案 2:HDFS DistCp 定时同步(最常用)

把 A 中心 HDFS 同步到 B 中心

hadoop distcp hdfs://clusterA:/data hdfs://clusterB:/data

建议:

  • 每天 / 每小时
  • 配合 cron
  • 只同步增量(用 -update -diff)

✅ 成本低
❌ RPO 不是 0


方案 3:HDFS Snapshot + DistCp

打开快照:

hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data snap1

容灾时只同步变化数据,速度快。


方案 4:ViewFs / Federation(大规模)

多 NameService:

  • 不同业务不同 namespace
  • 单点影响更小

四、操作系统 & CentOS 层容灾

1. 磁盘

  • 系统盘:RAID1
  • 数据盘:JBOD(HDFS 不推荐 RAID)

2. 网络

  • 双网卡 bond
  • 跨交换机

3. 时间同步

chronyd

NameNode 对时间敏感。


五、灾备恢复演练(很重要)

定期测试:

  1. 停 Active NameNode
  2. 看是否自动切换
  3. 模拟机房断网
  4. 从备集群恢复数据

六、推荐组合(实战)

中小规模:

  • NameNode HA
  • 3 副本
  • DistCp 每日异地备份

大规模:

  • HA + JournalNode
  • 跨机房 DistCp
  • Snapshot
  • 定期演练

如果你愿意,可以告诉我:

  • HDFS 版本(CDH / HDP / 原生)
  • 是否跨机房
  • 数据量 & RPO 要求

我可以直接给你一套 可执行的 CentOS 配置方案。

0 踩