/etc/sysconfig/network-scripts/ifcfg-eth0),设置静态IP、子网掩码、网关和DNS,避免动态IP变动导致节点通信失败。示例内容:TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100 # 替换为你的节点IP
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes # 开机自动启用网络
保存后重启网络服务:sudo systemctl restart network(或sudo service network restart,取决于Linux发行版)。master):sudo hostnamectl set-hostname master;/etc/hosts文件,添加所有节点的IP与主机名映射(所有节点需保持一致):192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
Hadoop集群节点间需要无密码通信(如NameNode与DataNode、ResourceManager与NodeManager),步骤如下:
ssh-keygen -t rsa,按回车键接受默认路径(~/.ssh/id_rsa)和空密码(-P '')。~/.ssh/authorized_keys文件中(如ssh-copy-id user@slave1、ssh-copy-id user@slave2,user为节点用户名)。.ssh目录及文件的访问权限正确(避免SSH拒绝访问):chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
修改Hadoop安装目录下的配置文件(如$HADOOP_HOME/etc/hadoop/),确保节点间能正确识别和通信:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- 主节点主机名与HDFS端口 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 临时目录,需提前创建并授权 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 数据副本数 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/dfs/name</value> <!-- NameNode数据目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/dfs/data</value> <!-- DataNode数据目录 -->
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</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>
</property>
</configuration>
mapred-site.xml.template复制):指定MapReduce运行框架为YARN:<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slave1、slave2),用于Hadoop自动管理集群节点。编辑/etc/sysctl.conf文件,优化TCP缓冲区大小和拥塞控制算法,提升集群内部通信效率:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = cubic
保存后应用更改:sudo sysctl -p。
Hadoop依赖多个端口进行通信(如HDFS的8020、YARN的8032),需开放这些端口:
# 开放HDFS NameNode端口
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
# 开放YARN ResourceManager端口
sudo firewall-cmd --permanent --zone=public --add-port=8032/tcp
# 开放HDFS DataNode端口
sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload
ping slave1、ping slave2,确保能正常访问所有从节点。ssh slave1,无需输入密码即可登录从节点。hdfs namenode -format(首次启动需格式化NameNode),然后启动HDFS和YARN:start-dfs.sh
start-yarn.sh
jps命令,主节点应看到NameNode、ResourceManager等进程,从节点应看到DataNode、NodeManager等进程。http://master:50070)和YARN Web界面(http://master:8088),确认集群状态正常。通过以上步骤,可完成Linux环境下Hadoop的网络配置,确保集群节点间通信顺畅。配置过程中需注意所有节点的/etc/hosts文件一致性,以及Hadoop目录的权限设置(如hadoop.tmp.dir需由Hadoop用户拥有)。