一、前期准备工作
JAVA_HOME
等基础环境变量。ping
、telnet
测试);关闭防火墙或放行Hadoop相关端口(如NameNode的8020、DataNode的50010等);配置SSH免密登录(NameNode到新DataNode、新DataNode到自身),避免后续操作需要手动输入密码。ntpdate
或集群时间同步服务(如Chrony),确保新节点与现有节点时间差小于1秒(可通过date
命令验证),防止因时间不同步导致的数据块校验失败。二、新增DataNode节点步骤
hadoop-3.3.6.tar.gz
)至指定目录(如/opt/software
);配置核心环境变量(HADOOP_HOME
、PATH
),并执行source /etc/profile
使配置生效。core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
复制到新节点的$HADOOP_HOME/etc/hadoop/
目录下。core-site.xml
中,确认fs.defaultFS
指向集群NameNode的RPC地址(如hdfs://nn1.example.com:8020
)。hdfs-site.xml
中,设置dfs.datanode.data.dir
为新节点的数据存储目录(如/data/hadoop/datanode
,需提前创建并授权hadoop:hadoop
);添加dfs.namenode.datanode.registration.ip-hostname-check
为false
(避免IP与主机名不匹配导致注册失败)。$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
启动DataNode服务;或在YARN环境下,执行start-yarn.sh
同时启动NodeManager服务(若需支持MapReduce计算)。hdfs dfsadmin -report
,查看“Live DataNodes”列表是否包含新节点;或通过NameNode Web界面(默认http://nn1.example.com:9870
)的“Datanodes” tab确认新节点状态为“Live”。三、新增NameNode节点步骤(可选,用于HA扩展)
core-site.xml
、hdfs-site.xml
(需包含现有集群的dfs.nameservices
、dfs.ha.namenodes.mycluster
等HA配置)。nn1
)上执行hdfs namenode -bootstrapStandby
,将元数据同步到新NameNode(如nn2
),确保两者元数据一致。hdfs namenode -bootstrapStandby
后,启动NameNode服务($HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
);此时新NameNode会处于Standby状态。hdfs haadmin -getServiceState nn1
和hdfs haadmin -getServiceState nn2
,确认两个NameNode分别处于“active”和“standby”状态(或反之)。四、数据再均衡
hdfs balancer
命令,默认阈值(dfs.balancer.threshold
)为10%(即节点存储利用率差异超过10%时开始平衡);若需调整阈值,可添加-threshold
参数(如hdfs balancer -threshold 5
)。hdfs balancer -status
查看平衡状态(如“Balancing is in progress”或“Balancing succeeded”);平衡过程可能需要数小时(取决于数据量和集群规模),建议在低峰时段进行。五、扩容验证
hdfs dfsadmin -report
,确认新节点的“Storage Used”“Non DFS Used”等指标正常,数据块分布均匀(各节点存储利用率差异小于阈值)。test.txt
)到HDFS,然后执行hdfs dfs -cat /user/hadoop/test.txt
读取内容,确认文件能正常访问;或使用hdfs fsck /
检查数据块的复制因子是否符合配置(如dfs.replication=3
)。hadoop distcp
复制大量数据到集群,观察新节点的CPU、内存、磁盘IO使用率(可通过top
、iostat
命令),确认新节点能有效分担负载。六、注意事项
hdfs dfs -cp /data /backup/data
),防止操作失误导致数据丢失。dfs.replication
(如从3调整为2,减少存储开销)、dfs.namenode.handler.count
(如从100调整为200,提升NameNode的并发处理能力)等参数,优化集群性能。