环境检查
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文件中移除主机名、刷新节点列表,最后停止节点服务即可。