在Linux环境下配置Hadoop网络,核心目标是确保集群节点间通信畅通,主要涉及基础网络设置、SSH免密登录、Hadoop配置文件调整及网络访问控制等环节。以下是详细操作流程:
首先需要为每个节点(NameNode、DataNode、ResourceManager、NodeManager等)设置静态IP地址,避免DHCP动态分配导致的IP变动,确保节点间通信稳定。
/etc/network/interfaces文件,添加如下内容(以192.168.1.100为例):auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
/etc/sysconfig/network-scripts/ifcfg-ens33(网卡名以ip a命令为准),修改如下: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(Debian/Ubuntu)或systemctl restart network.service(CentOS/RHEL)。为了让节点间通过主机名而非IP地址访问,需修改/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 -P '' -f ~/.ssh/id_rsa
(直接按回车键,生成无密码密钥)slave1、slave2为实际节点主机名):ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
ssh master
ssh slave1
若无需输入密码即可登录,则配置成功。Hadoop的网络配置主要通过$HADOOP_HOME/etc/hadoop目录下的XML配置文件实现,关键文件及参数如下:
配置Hadoop的默认文件系统(HDFS地址)和临时目录(用于存储临时数据):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- 替换为NameNode的主机名 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 临时目录路径,需提前创建 -->
</property>
</configuration>
配置HDFS的副本数(集群规模≥3时设为3,测试环境可设为1)、NameNode数据目录和DataNode数据目录:
<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>
配置YARN的ResourceManager主机名和NodeManager辅助服务(用于MapReduce Shuffle):
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value> <!-- 替换为ResourceManager的主机名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- Shuffle服务名称 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value> <!-- Shuffle处理器类 -->
</property>
</configuration>
配置MapReduce任务的运行框架(必须为YARN):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
列出所有DataNode和NodeManager节点的主机名(每行一个,NameNode无需列入):
slave1
slave2
修改后需同步到所有节点。
Hadoop需要开放特定端口供节点间通信,需配置防火墙(或关闭防火墙,仅测试环境使用):
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # HDFS NameNode端口
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp # HDFS Web UI端口
sudo firewall-cmd --permanent --zone=public --add-port=8032/tcp # YARN ResourceManager端口
sudo firewall-cmd --permanent --zone=public --add-port=8042/tcp # YARN NodeManager端口
sudo firewall-cmd --reload
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭
ping slave1、ping slave2,确保能正常访问所有节点。ssh slave1,确认无需输入密码即可登录。hdfs namenode -format # 第一次启动需格式化NameNode
start-dfs.sh # 启动HDFS
start-yarn.sh # 启动YARN
jps,应看到NameNode、DataNode、ResourceManager、NodeManager等进程;在浏览器中访问http://master:50070(HDFS Web UI)和http://master:8088(YARN Web UI),确认集群启动成功。通过以上步骤,即可完成Hadoop在Linux环境中的网络配置,确保集群节点间通信正常,为后续数据处理任务奠定基础。