一、基础网络环境配置
设置静态IP地址
为避免动态IP变动导致集群通信故障,需为所有节点配置静态IP。根据Linux发行版差异,编辑对应网络配置文件(如CentOS/RHEL的/etc/sysconfig/network-scripts/ifcfg-ens33、Debian/Ubuntu的/etc/network/interfaces),设置以下参数:
TYPE=Ethernet
BOOTPROTO=static # 静态IP
IPADDR=192.168.1.100 # 节点IP
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 网关
DNS1=8.8.8.8 # DNS服务器
ONBOOT=yes # 开机自启
保存后重启网络服务(systemctl restart network 或 service network restart)。
配置主机名与hosts映射
hadoop-master,DataNode设为hadoop-slave1):hostnamectl set-hostname hadoop-master # 在对应节点执行
/etc/hosts文件,添加IP与主机名映射(确保所有节点映射一致):192.168.1.100 hadoop-master
192.168.1.101 hadoop-slave1
192.168.1.102 hadoop-slave2
配置SSH免密码登录
实现NameNode与DataNode、ResourceManager与NodeManager之间的无密码通信:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 直接回车,无需设置密码
ssh-copy-id hadoop-slave1 # 执行后输入目标节点密码
ssh-copy-id hadoop-slave2
ssh hadoop-slave1,无需密码即可登录)。二、Hadoop核心配置文件调整
core-site.xml
配置Hadoop默认文件系统和临时目录,指定NameNode的RPC地址:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000</value> <!-- NameNode的RPC地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 临时目录,需提前创建并授权 -->
</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>
</configuration>
yarn-site.xml
配置ResourceManager地址和NodeManager的Shuffle服务:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-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
指定MapReduce任务运行框架为YARN:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slaves文件
列出所有DataNode和NodeManager节点(每行一个主机名),用于Hadoop自动管理集群节点:
hadoop-slave1
hadoop-slave2
三、网络相关优化与安全配置
防火墙设置
开放Hadoop必需端口(如HDFS的9000、50010,YARN的8032、8042),允许集群内部通信:
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # HDFS RPC
sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp # DataNode数据传输
sudo firewall-cmd --permanent --zone=public --add-port=8032/tcp # YARN ResourceManager
sudo firewall-cmd --permanent --zone=public --add-port=8042/tcp # NodeManager
sudo firewall-cmd --reload
若无需防火墙,可直接停止并禁用(不推荐生产环境):
systemctl stop firewalld && systemctl disable firewalld
SELinux配置
若系统启用SELinux,需临时或永久关闭以避免权限问题:
setenforce 0 # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭
网络性能调优
编辑/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
四、验证网络配置
节点连通性检查
使用ping命令测试NameNode与各DataNode之间的网络连通性(如ping hadoop-slave1)。
SSH免密码登录验证
从NameNode执行ssh hadoop-slave1,确认无需输入密码即可登录。
Hadoop服务状态检查
hdfs namenode -format
start-dfs.sh && start-yarn.sh
jps命令查看各节点进程(NameNode节点应显示NameNode、SecondaryNameNode;DataNode节点应显示DataNode;ResourceManager节点应显示ResourceManager;NodeManager节点应显示NodeManager)。http://hadoop-master:50070,YARN: http://hadoop-master:8088),确认集群状态正常。