1. 環境準備
在Debian系統上實現Hadoop高可用(HA),需先完成基礎環境配置:安裝Java(建議使用Temurin 8+)、下載并解壓Hadoop(如3.3.0+版本);規劃集群角色(至少3個JournalNode、2個NameNode、2個ResourceManager、多個DataNode),確保節點間網絡互通(關閉防火墻或開放必要端口,如8020、50070、2181等);安裝ZooKeeper集群(至少3節點),用于協調NameNode狀態和自動故障轉移。
2. 配置ZooKeeper集群
ZooKeeper是Hadoop HA的核心協調組件,需在每個ZooKeeper節點上完成以下配置:
/etc/hadoop/conf/zoo.cfg
,添加集群節點信息(server.X=節點IP:2888:3888
,X為節點ID);/opt/module/zookeeper-3.4.6/zkData
目錄下創建myid
文件,內容為對應節點ID(如node1的myid
內容為1);zkServer.sh start
),并通過zkServer.sh status
驗證集群狀態(需有1個Leader和2個Follower)。3. 配置HDFS高可用(NameNode HA)
HDFS HA通過Active/Standby NameNode模式實現,核心配置如下:
core-site.xml
:設置HDFS命名空間地址(fs.defaultFS=hdfs://cluster1
,cluster1為命名服務ID)和ZooKeeper集群地址(ha.zookeeper.quorum=zk1:2181,zk2:2181,zk3:2181
);hdfs-site.xml
:
dfs.nameservices=cluster1
,dfs.ha.namenodes.cluster1=namenode1,namenode2
);dfs.namenode.rpc-address.cluster1.namenode1=namenode1:8020
,dfs.namenode.http-address.cluster1.namenode1=namenode1:50070
,同理配置namenode2);dfs.namenode.shared.edits.dir=qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/cluster1
);dfs.ha.automatic-failover.enabled=true
);dfs.ha.fencing.methods=sshfence
,dfs.ha.fencing.ssh.private-key-files=/home/user/.ssh/id_rsa
,用于強制終止故障NameNode進程);hdfs namenode -format
,初始化元數據;hadoop-daemons.sh start journalnode
,啟動日志同步服務;start-dfs.sh
,啟動所有NameNode、DataNode和JournalNode進程。4. 配置YARN高可用(ResourceManager HA)
YARN HA通過Active/Standby ResourceManager模式實現,核心配置如下:
yarn-site.xml
:
yarn.resourcemanager.ha.enabled=true
);yarn.resourcemanager.cluster-id=yarn1
,yarn.resourcemanager.ha.rm-ids=rm1,rm2
);yarn.resourcemanager.zk-address=zk1:2181,zk2:2181,zk3:2181
);yarn.resourcemanager.rpc-address.rm1=rm1:8032
,yarn.resourcemanager.http-address.rm1=rm1:8088
,同理配置rm2);start-yarn.sh
,啟動所有ResourceManager和NodeManager進程。5. 配置數據備份策略
通過Hadoop的數據復制功能保障數據可靠性:
hdfs-site.xml
中設置dfs.replication=3
(默認3副本),確保數據塊在多個DataNode上冗余存儲;hdfs snapshot
命令),備份關鍵目錄(如/user
、/data
),便于故障恢復。6. 配置監控與告警系統
通過監控工具實時跟蹤集群狀態,及時發現故障:
hdfs dfsadmin -report
查看DataNode狀態,yarn node -list
查看NodeManager狀態);7. 驗證高可用性
通過模擬故障測試自動故障轉移功能:
hadoop-daemon.sh stop namenode
),觀察Standby NameNode是否自動切換為Active(通過hdfs haadmin -getServiceState nn1
命令驗證);yarn-daemon.sh stop resourcemanager
),觀察Standby ResourceManager是否自動切換為Active(通過yarn rmadmin -getServiceState rm1
命令驗證);hdfs dfs -put
和hdfs dfs -get
命令測試數據讀寫,確保服務連續性。