1. 配置Linux基础网络环境
首先需要为每个节点设置静态IP地址、主机名,并绑定IP与主机名的映射关系,确保节点间网络可达。
ip address show命令查看当前网络接口的IP信息。hostnamectl set-hostname <主机名>(如master、slave1)修改节点主机名,重启后生效。/etc/sysconfig/network-scripts/ifcfg-ens33,Debian/Ubuntu为/etc/network/interfaces),设置静态IP、子网掩码、网关和DNS。例如:TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
systemctl restart network(CentOS/RHEL)或service networking restart(Debian/Ubuntu)应用配置。2. 配置主机名解析(/etc/hosts文件)
在所有节点的/etc/hosts文件中添加IP地址与主机名的映射,避免依赖DNS解析,提高通信效率。例如:
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
保存后无需重启,直接生效。
3. 配置SSH免密码登录
实现节点间无密码通信,是Hadoop集群管理的核心要求(如NameNode与DataNode、ResourceManager与NodeManager之间的通信)。
master)上执行ssh-keygen -t rsa,按回车键生成默认路径的密钥对(~/.ssh/id_rsa为私钥,~/.ssh/id_rsa.pub为公钥)。slave1、slave2),执行ssh-copy-id user@slave1(user为节点用户名),重复此步骤分发到其他节点。ssh slave1,若无需输入密码即可登录,则配置成功。4. 关闭防火墙与SELinux(开发环境推荐)
防火墙和SELinux可能会阻止Hadoop服务的端口通信,建议在开发环境中关闭。
systemctl stop firewalld # CentOS/RHEL
systemctl disable firewalld
# 或Ubuntu(使用ufw)
ufw disable
setenforce 0 # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭
5. 配置Hadoop核心网络参数(关键配置文件)
Hadoop的网络行为主要由core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml和slaves文件控制。
<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>
<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>
<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>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- MapReduce运行框架 -->
</property>
</configuration>
slave1
slave2
该文件位于$HADOOP_HOME/etc/hadoop目录下。6. 验证网络配置
完成上述步骤后,需验证节点间通信及Hadoop服务是否正常。
ping slave1、ping slave2,确保能正常访问从节点。ssh slave1,验证无需输入密码即可登录。hdfs namenode -format(首次启动需格式化NameNode)、start-dfs.sh(启动HDFS)、start-yarn.sh(启动YARN)。jps命令,查看主节点是否有NameNode、ResourceManager进程,从节点是否有DataNode、NodeManager进程。http://master:50070(Hadoop 2.x)、YARN管理界面http://master:8088,确认集群状态正常。