在 CentOS 上向已有的 HDFS 集群中添加一个 DataNode(或新增节点),一般步骤如下(以 Hadoop 2.x / 3.x 为例,假设你已有正常运行的集群):
在新节点上:
hostnamectl set-hostname hadoop-new
在 所有节点(包括新节点)的 /etc/hosts 中添加:
192.168.1.10 namenode
192.168.1.11 datanode1
192.168.1.12 datanode2
192.168.1.13 hadoop-new
systemctl stop firewalld
systemctl disable firewalld
或放行 HDFS 端口(如 50010、50020、8020 等)
yum install -y ntp
systemctl start ntpd
systemctl enable ntpd
useradd hadoop
passwd hadoop
yum install -y java-1.8.0-openjdk-devel
从已有节点拷贝:
scp -r /opt/hadoop root@hadoop-new:/opt/
或在新节点单独解压相同版本 Hadoop
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
编辑 $HADOOP_HOME/etc/hadoop/ 下的文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:8020</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/hdfs/datanode</value>
</property>
</configuration>
mkdir -p /data/hadoop/hdfs/datanode
chown -R hadoop:hadoop /data/hadoop
在 NameNode 上:
ssh-copy-id hadoop-new
在 NameNode 上:
vi $HADOOP_HOME/etc/hadoop/workers
添加:
hadoop-new
scp $HADOOP_HOME/etc/hadoop/* hadoop-new:$HADOOP_HOME/etc/hadoop/
在新节点上:
su - hadoop
hdfs --daemon start datanode
在 NameNode 上:
hdfs dfsadmin -report
应能看到新节点 hadoop-new
http://namenode:9870
(Hadoop 3.x,2.x 是 50070)
如果集群已运行,可直接启动 DataNode,无需重启 NameNode。
如果你需要的是:
可以告诉我你的集群架构,我可以给你更具体的步骤。