環境檢查
ssh-keygen -t rsa
生成密鑰并分發至所有節點);/etc/hosts
文件包含所有節點的IP與主機名映射(避免DNS解析問題)。apt install ntp && systemctl enable --now ntp
)確保時間偏差小于1秒。新節點基礎配置
apt install openjdk-11-jdk
)和Hadoop(從現有集群復制安裝包或通過apt install hadoop
安裝,版本需一致)。~/.bashrc
,添加export HADOOP_HOME=/usr/local/hadoop
、export PATH=$PATH:$HADOOP_HOME/bin
,執行source ~/.bashrc
生效。core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
)至新節點的$HADOOP_HOME/etc/hadoop/
目錄。NameNode節點(修改hdfs-site.xml
)
添加dfs.hosts
屬性,指定允許連接的DataNode列表(若未使用dfs.hosts
,則無需修改,默認允許所有節點連接):
<property>
<name>dfs.hosts</name>
<value>/etc/hadoop/conf/slaves</value> <!-- 或自定義路徑,如/opt/hadoop/slaves -->
</property>
若修改了該文件,需重啟NameNode使配置生效(hadoop-daemon.sh stop namenode && hadoop-daemon.sh start namenode
)。
ResourceManager節點(修改yarn-site.xml
)
添加yarn.resourcemanager.nodes.include-path
屬性,指定允許連接的NodeManager列表(通常與dfs.hosts
路徑一致):
<property>
<name>yarn.resourcemanager.nodes.include-path</name>
<value>/etc/hadoop/conf/slaves</value>
</property>
同樣,修改后需重啟ResourceManager(yarn-daemon.sh stop resourcemanager && yarn-daemon.sh start resourcemanager
)。
添加至集群清單
編輯現有集群的slaves
文件(位于$HADOOP_HOME/etc/hadoop/
),添加新節點的主機名(每行一個,如datanode3
)。該文件用于定義DataNode和NodeManager的列表。
新節點本地配置
$HADOOP_HOME/etc/hadoop/
目錄下的配置文件與現有集群完全一致(尤其是core-site.xml
中的fs.defaultFS
、hdfs-site.xml
中的dfs.replication
等核心配置)。hdfs datanode -format
hadoop-daemon.sh start datanode # 啟動DataNode
yarn-daemon.sh start nodemanager # 啟動NodeManager
可通過jps
命令驗證服務是否運行(應看到DataNode
和NodeManager
進程)。
刷新節點列表
在NameNode節點執行以下命令,使集群識別新節點:
hdfs dfsadmin -refreshNodes # 刷新HDFS節點列表
yarn rmadmin -refreshNodes # 刷新YARN節點列表
檢查節點狀態
hdfs dfsadmin -report
命令查看HDFS集群狀態,確認新節點的IP、主機名、存儲容量、數據塊數量等信息已顯示。http://resourcemanager:8088
),查看“Nodes”頁面,確認新NodeManager已注冊。數據平衡(可選但推薦)
新節點加入后,HDFS數據可能分布不均,執行數據平衡操作使數據均勻分布:
start-balancer.sh # 啟動平衡器(默認閾值10%,可在hdfs-site.xml中調整dfs.balancer.threshold)
hdfs balancer -status # 監控平衡進度(直到顯示“Balancing is not running”)
平衡完成后,各DataNode的存儲利用率差異應小于閾值。
slaves
文件、Hadoop配置文件及關鍵數據,避免操作失誤導致數據丟失。hdfs-site.xml
中的dfs.network.script
屬性),避免多個副本集中在同一機架,提高容錯能力。以上步驟適用于Debian環境下HDFS集群的動態擴容(添加DataNode)。若需縮容(移除節點),可參考類似流程:先停止目標節點服務、從slaves
文件中移除主機名、刷新節點列表,最后停止節點服務即可。