设置静态IP地址:为避免DHCP动态分配导致的IP变动,需为每个节点配置静态IP。编辑网络配置文件(Debian/Ubuntu使用/etc/network/interfaces,CentOS/RHEL使用/etc/sysconfig/network-scripts/ifcfg-ens33),设置IPADDR(IP地址)、NETMASK(子网掩码)、GATEWAY(网关)等参数。例如:
# CentOS示例(ifcfg-ens33)
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
重启网络服务使配置生效:systemctl restart network(CentOS)或systemctl restart systemd-networkd(Debian)。
配置主机名与hosts文件:为每个节点设置唯一主机名(如master、slave1),并通过/etc/hosts文件实现主机名与IP的映射(避免依赖DNS)。编辑/etc/hosts文件,添加如下内容:
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
同步所有节点的/etc/hosts文件,确保主机名解析一致。
关闭防火墙与SELinux:临时关闭防火墙(测试环境):systemctl stop firewalld(CentOS)或systemctl stop ufw(Ubuntu);永久关闭:systemctl disable firewalld。关闭SELinux(避免权限问题):setenforce 0,并修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled。
Hadoop集群节点间需要无密码通信(如NameNode与DataNode、ResourceManager与NodeManager),需配置SSH免密码登录:
master)生成RSA密钥对:ssh-keygen -t rsa(直接按回车键,无需设置密码)。slave1、slave2):ssh-copy-id master(主节点自身)、ssh-copy-id slave1、ssh-copy-id slave2。ssh master、ssh slave1,确认无需输入密码即可登录。Hadoop的网络通信依赖以下核心配置文件的正确设置(位于$HADOOP_HOME/etc/hadoop目录):
core-site.xml:配置Hadoop默认文件系统和临时目录。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- NameNode的RPC地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- Hadoop临时文件目录 -->
</property>
</configuration>
hdfs-site.xml:配置HDFS副本数、NameNode/DataNode数据目录。
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 数据块副本数(生产环境建议3,测试环境可设为1) -->
</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>
<property>
<name>dfs.namenode.rpc-address</name>
<value>master:9000</value> <!-- NameNode RPC地址 -->
</property>
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:50010</value> <!-- DataNode数据传输端口 -->
</property>
</configuration>
yarn-site.xml:配置YARN ResourceManager地址和Shuffle服务。
<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> <!-- Shuffle处理器类 -->
</property>
</configuration>
mapred-site.xml(若未自动生成,需从mapred-site.xml.template复制):配置MapReduce运行框架为YARN。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- MapReduce运行在YARN上 -->
</property>
</configuration>
slaves文件:列出所有DataNode和NodeManager节点(每行一个主机名)。
slave1
slave2
同步slaves文件到所有节点,确保集群节点信息一致。
调整TCP缓冲区大小,提升Hadoop集群内部通信效率。编辑/etc/sysctl.conf文件,添加以下参数:
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。
ping命令检查节点间是否可达(如ping slave1)。ssh slave1,确认无需密码即可登录。hdfs namenode -format。start-dfs.sh。start-yarn.sh。jps(主节点应看到NameNode、ResourceManager;从节点应看到DataNode、NodeManager)。http://master:50070)、YARN Web UI(http://master:8088),确认集群状态正常。通过以上步骤,可完成Linux环境下Hadoop的网络配置,确保集群节点间通信正常,为后续大数据处理任务奠定基础。