動態擴容是將新節點加入HDFS集群以提升存儲容量的過程,需提前完成以下基礎準備:
hosts
文件(包含集群所有節點的主機名與IP映射);hadoop.tmp.dir
指定的數據存儲目錄,避免覆蓋元數據);HADOOP_HOME
、PATH
),并執行source /etc/profile
使配置生效。hdfs-site.xml
:dfs.hosts
屬性(指定允許加入集群的DataNode列表文件路徑,如/opt/hadoop/etc/hadoop/dfs.hosts
),用于控制節點準入。<property>
<name>dfs.hosts</name>
<value>/opt/hadoop/etc/hadoop/dfs.hosts</value>
</property>
hdfs-site.xml
復制到集群所有NameNode和DataNode節點。dfs.hosts
文件:在NameNode節點的dfs.hosts
指定路徑下,添加新節點的主機名(如dn-new1.example.com
),保存文件;hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager # 若集群啟用YARN,需同步啟動NodeManager
hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes # 若集群啟用YARN
執行后,可通過Hadoop Web界面(如NameNode的50070端口)查看新節點狀態(顯示為“Live”)。新節點加入后,集群數據分布可能不均勻(舊節點存儲了大部分數據),需使用hdfs balancer
工具調整:
hdfs dfsadmin -setBalancerBandwidth 104857600 # 單位:字節(100MB)
-threshold
參數指定閾值,如5%,表示集群各節點數據利用率差異小于5%時停止):hdfs balancer -threshold 5
均衡過程需監控集群負載,避免在業務高峰期執行。hdfs dfsadmin -report
命令,確認新節點已加入(顯示為“Live”狀態),并檢查磁盤空間使用情況(新節點的“Capacity”應計入總容量);hadoop fs -put /local/testfile /test
),然后從新節點讀取該文件(如hadoop fs -get /test/testfile /local/
),驗證數據是否可正常訪問。core-site.xml
中配置topology.script.file.name
(指向機架感知腳本,如/opt/hadoop/etc/hadoop/topology.sh
),確保數據副本分布在不同機架,提高容錯性;