以下是CentOS上配置HDFS容錯機制(高可用)的核心技巧及關鍵步驟,基于搜索資源中的最佳實踐整理:
節點角色
網絡要求
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value> <!-- 集群名稱,需與hdfs-site.xml一致 -->
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>zk1:2181,zk2:2181,zk3:2181</value> <!-- ZooKeeper節點列表 -->
</property>
hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>mycluster</value> <!-- 集群名稱 -->
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value> <!-- 主備NameNode標識 -->
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>nn1-host:8020</value> <!-- 主NameNode RPC地址 -->
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>nn2-host:8020</value> <!-- 備NameNode RPC地址 -->
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://jn1:8485;jn2:8485;jn3:8485/mycluster</value> <!-- JournalNode共享日志路徑 -->
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> <!-- 自動故障轉移代理 -->
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value> <!-- 啟用自動故障轉移 -->
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value> <!-- 隔離機制,通過SSH防止腦裂 -->
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value> <!-- SSH密鑰路徑 -->
</property>
hdfs-site.xml
中指定JournalNode數據存儲目錄:<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/lib/hadoop/journalnode</value> <!-- 確保目錄權限為700 -->
</property>
啟動JournalNode
在所有JournalNode節點上執行:
$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode
格式化主NameNode
在主NameNode節點上執行(僅第一次需要):
hdfs namenode -format
同步元數據到備NameNode
在備NameNode上執行:
hdfs namenode -bootstrapStandby
啟動服務
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-datanode
驗證集群狀態
hdfs dfsadmin -report
echo stat | nc zk1 2181 # 測試ZooKeeper服務是否正常
手動模擬故障
# 在主NameNode節點執行
pkill -9 java # 強制停止NameNode
hdfs dfsadmin -report
確認新主節點已接管服務。數據一致性校驗
hdfs dfs -put /local/file /hdfs/path # 寫入數據
# 停止部分DataNode后再次讀取
hdfs dfs -cat /hdfs/path/file
hdfs-site.xml
中通過dfs.replication
配置默認副本數(通常3份,可根據節點數量調整)。hadoop.tmp.dir
配置),避免磁盤占滿。參考來源: