Ubuntu环境下Hadoop网络配置的关键要点
为所有Hadoop节点(NameNode、DataNode、ResourceManager、NodeManager等)配置静态IP地址(避免DHCP动态分配导致IP变动),确保节点间通信稳定。可通过/etc/netplan/*.yaml(Ubuntu 18.04及以上)或/etc/network/interfaces(旧版本)文件设置,例如:
network:
version: 2
ethernets:
ens33: # 网络接口名称(通过`ip a`命令查看)
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。
为每个节点设置唯一主机名(如namenode、datanode1),并通过/etc/hosts文件将IP地址与主机名关联,避免依赖DNS解析(减少网络延迟)。例如:
192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
修改后需同步所有节点的/etc/hosts文件。
Hadoop集群中,NameNode需要通过SSH无密码访问所有DataNode,ResourceManager需要访问所有NodeManager。配置步骤:
ssh-keygen -t rsa(默认保存到~/.ssh/id_rsa);ssh-copy-id user@datanode1(user为目标节点用户名);ssh user@datanode1(无需输入密码)。修改Hadoop安装目录下(如$HADOOP_HOME/etc/hadoop)的关键配置文件,确保网络通信参数正确:
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode的RPC地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/path/to/hadoop-tmp</value> <!-- 临时文件目录 -->
</property>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 数据副本数(根据集群规模调整) -->
</property>
<property>
<name>dfs.namenode.rpc-address</name>
<value>namenode:9000</value> <!-- NameNode的RPC地址 -->
</property>
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:50010</value> <!-- DataNode的数据传输端口 -->
</property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value> <!-- 关闭IP与主机名匹配检查(避免DNS问题) -->
</property>
<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>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value> <!-- Shuffle处理器 -->
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置完成后需同步所有节点的配置文件。
确保防火墙允许Hadoop所需的端口通信(避免网络阻断):
ufw(Ubuntu防火墙)开放端口,例如:sudo ufw allow 9000/tcp # NameNode RPC端口
sudo ufw allow 50010/tcp # DataNode数据传输端口
sudo ufw allow 50070/tcp # HDFS Web UI端口
sudo ufw allow 8032/tcp # YARN ResourceManager端口
sudo ufw allow 8042/tcp # YARN NodeManager端口
sudo ufw reload # 重新加载防火墙规则
iptables,需添加相应规则并保存。调整操作系统网络参数,提升Hadoop集群的网络性能:
/etc/sysctl.conf文件,添加以下参数:net.core.rmem_max=16777216 # 接收缓冲区最大值
net.core.wmem_max=16777216 # 发送缓冲区最大值
net.ipv4.tcp_rmem=4096 87380 16777216 # TCP接收缓冲区大小范围
net.ipv4.tcp_wmem=4096 65536 16777216 # TCP发送缓冲区大小范围
net.ipv4.tcp_congestion_control=cubic # 拥塞控制算法(优化传输效率)
sudo sysctl -p。为每个节点设置易识别的主机名(如namenode、datanode1),避免使用默认的ubuntu等通用名称。通过以下命令设置:
sudo hostnamectl set-hostname namenode # 设置主机名
修改后需重启节点或重新登录使更改生效。
配置完成后,需验证节点间的网络通信是否正常:
ping命令测试节点间连通性:ping datanode1(替换为目标节点主机名或IP);ssh命令测试无密码登录:ssh datanode1(无需输入密码);hdfs dfsadmin -report(确认DataNode是否注册);yarn node -list(确认NodeManager是否连接)。