HDFS容错机制可通过以下配置实现,核心配置项及说明如下:
副本数设置
通过hdfs-site.xml中dfs.replication属性配置,默认3副本。
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 可根据需求调整 -->
</property>
副本放置策略
HDFS默认将副本分布在不同机架,可通过dfs.network.script配置机架感知策略。
dfs.heartbeat.interval:DataNode发送心跳间隔,默认3秒。dfs.namenode.heartbeat.recheck-interval:NameNode检测心跳超时时间,默认10分钟。<property>
<name>dfs.heartbeat.interval</name>
<value>3</value> <!-- 单位:秒 -->
</property>
共享存储与ZooKeeper
dfs.namenode.shared.edits.dir指向JournalNode共享目录(需至少3个JournalNode)。ha.zookeeper.quorum指定ZooKeeper集群地址。<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node1:8485;node2:8485;node3:8485/cluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>zk1:2181,zk2:2181,zk3:2181</value>
</property>
隔离机制
配置dfs.ha.fencing.methods防止脑裂,常用sshfence(需配置SSH免密)。
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
io.bytes.per.checksum:校验和字节长度,默认512字节。dfs.datanode.checksum.type配置校验算法(如CRC32)。dfs.client.retry.max.attempts和dfs.client.retry.interval控制重试次数和间隔。hdfs dfsadmin -report查看节点状态,监控Under-replicated blocks(未复制块)等指标。/usr/local/hadoop/sbin/stop-dfs.sh
/usr/local/hadoop/sbin/start-dfs.sh
以上配置可确保HDFS在节点故障时通过副本恢复数据、自动切换主节点,保障系统高可用性。