在开始网络配置前,需完成以下基础准备:
openjdk-11-jdk)和Hadoop(建议使用稳定版本,如3.3.6);Hadoop集群需要稳定的IP地址,避免动态IP变动导致节点失联。以Ubuntu 20.04及以上版本为例,通过netplan配置静态IP:
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
nano或vim):sudo nano /etc/netplan/01-netcfg.yaml
<your_ip>、<your_gateway>、<your_dns>为实际值,ens33为网络接口名,可通过ip a命令查看):network:
version: 2
ethernets:
ens33:
addresses: ["<your_ip>/24"]
gateway4: "<your_gateway>"
nameservers:
addresses: ["<your_dns>", "8.8.8.8", "8.8.4.4"]
sudo netplan apply
ip a | grep "inet "
确认输出的IP地址与配置一致。为了让节点通过主机名互相识别(而非IP),需统一配置主机名和/etc/hosts文件:
namenode为例):sudo hostnamectl set-hostname namenode
重启节点使主机名生效,或临时生效:sudo hostname namenode
sudo nano /etc/hosts
添加以下内容(替换为实际IP和主机名):192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
保存后,通过ping <hostname>验证主机名解析是否正常。Hadoop集群节点间需要频繁通信(如NameNode与DataNode、ResourceManager与NodeManager),配置SSH无密码登录可避免重复输入密码:
ssh-keygen -t rsa
直接按回车键,使用默认路径(~/.ssh/id_rsa)和空密码。namenode为例):ssh-copy-id namenode
ssh-copy-id datanode1
ssh-copy-id datanode2
输入当前用户的密码,完成后即可实现无密码登录:ssh namenode
ssh datanode1
编辑Hadoop配置文件(位于$HADOOP_HOME/etc/hadoop/目录),确保网络相关参数正确:
<namenode_hostname>替换为NameNode的主机名):<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</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>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Hadoop需要开放多个端口用于节点间通信,使用ufw(Ubuntu防火墙工具)配置:
sudo ufw allow 9000/tcp # HDFS NameNode端口
sudo ufw allow 50070/tcp # HDFS Web UI端口
sudo ufw allow 50075/tcp # DataNode Web UI端口
sudo ufw allow 8020/tcp # HDFS客户端通信端口
sudo ufw allow 8032/tcp # YARN ResourceManager端口
sudo ufw allow 8042/tcp # NodeManager Web UI端口
sudo ufw enable # 启用防火墙
hdfs namenode -format
注意:格式化会清除NameNode中的所有数据,请谨慎操作。start-dfs.sh # 启动HDFS服务(NameNode、DataNode)
start-yarn.sh # 启动YARN服务(ResourceManager、NodeManager)
hdfs dfsadmin -report
yarn node -list
http://<namenode_ip>:9870(HDFS Web UI)或http://<resourcemanager_ip>:8088(YARN Web UI)。ping <hostname>检查网络连通性,确保/etc/hosts文件配置正确;~/.ssh/authorized_keys文件权限(应为600),并确认公钥已正确复制;$HADOOP_HOME/logs/hadoop-<username>-namenode-<hostname>.log),常见原因包括端口被占用、数据目录权限不足;$HADOOP_HOME/logs/yarn-<username>-resourcemanager-<hostname>.log),确认yarn.resourcemanager.hostname配置正确。