Hadoop集群需要稳定的网络环境,建议为所有节点(NameNode、DataNode、ResourceManager、NodeManager等)配置静态IP。
ip a命令,确认网络接口(如ens33,不同系统可能为eth0)。/etc/netplan/01-netcfg.yaml(备份原文件后编辑)。network:
version: 2
ethernets:
ens33:
addresses: ["192.168.1.100/24"] # 静态IP及子网掩码
gateway4: "192.168.1.1" # 网关地址
nameservers:
addresses: ["8.8.8.8", "8.8.4.4"] # DNS服务器
sudo netplan apply使设置生效,验证IP是否正确:ip a | grep ens33。Hadoop集群节点间通过主机名通信,需将各节点的IP与主机名映射写入所有节点的/etc/hosts文件。
sudo nano /etc/hosts
192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
192.168.1.103 resourcemanager
192.168.1.104 nodemanager
/etc/hosts文件内容一致。Hadoop集群节点间需要频繁通信(如NameNode与DataNode、ResourceManager与NodeManager),配置SSH无密码登录可避免重复输入密码。
ssh-keygen -t rsa # 默认保存路径~/.ssh/id_rsa
ssh-copy-id namenode@192.168.1.100 # 将本机公钥复制到namenode
ssh-copy-id datanode1@192.168.1.101 # 复制到datanode1
ssh-copy-id datanode2@192.168.1.102 # 复制到datanode2
ssh namenode # 无需输入密码即可登录
ssh datanode1
修改Hadoop配置文件,指定集群通信的IP、端口及副本策略。
/usr/local/hadoop):cd /usr/local/hadoop/etc/hadoop
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- 替换为namenode的实际主机名 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 副本数,根据集群规模调整 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value> <!-- 替换为resourcemanager的实际主机名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- MapReduce Shuffle服务 -->
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Hadoop需要开放多个端口用于节点间通信,需配置防火墙(如ufw)允许这些端口。
sudo ufw status
sudo ufw allow 9000/tcp # NameNode RPC端口
sudo ufw allow 50070/tcp # HDFS Web UI端口
sudo ufw allow 50075/tcp # DataNode Web UI端口
sudo ufw allow 8088/tcp # YARN ResourceManager Web UI端口
sudo ufw allow 8030/tcp # YARN ResourceManager调度端口
sudo ufw allow 8040/tcp # NodeManager Web UI端口
sudo ufw allow 8042/tcp # NodeManager Web UI端口
sudo ufw enable # 开启防火墙(可选)
首次配置Hadoop需格式化NameNode(会清除原有数据,仅第一次执行),然后启动集群服务。
hdfs namenode -format
start-dfs.sh
start-yarn.sh
hdfs dfsadmin -reportyarn node -listhttp://namenode:9000(HDFS)、http://resourcemanager:8088(YARN)。/etc/hosts映射是否正确,防火墙是否阻止端口,网络接口IP是否配置正确。~/.ssh目录权限为700,~/.ssh/authorized_keys权限为600。/usr/local/hadoop/data/namenode),重新格式化。