1. 配置静态IP地址
Debian系统需为Hadoop节点配置静态IP,避免动态IP变动导致节点间通信中断。根据Debian版本选择配置文件:
/etc/network/interfaces,示例如下:auto eth0
iface eth0 inet static
address 192.168.1.100 # 节点IP(如namenode为192.168.1.100,datanode1为192.168.1.101)
netmask 255.255.255.0 # 子网掩码
gateway 192.168.1.1 # 网关
dns-nameservers 8.8.8.8 8.8.4.4 # DNS服务器
netplan,编辑/etc/netplan/01-netcfg.yaml(文件名可能不同),示例如下:network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
配置完成后,执行sudo netplan apply使设置生效。2. 配置主机名解析(/etc/hosts文件)
为避免DNS解析延迟或失败,需在所有节点的/etc/hosts文件中添加集群节点的IP与主机名映射,示例如下:
127.0.0.1 localhost
192.168.1.100 namenode # NameNode主机名与IP
192.168.1.101 datanode1 # DataNode1主机名与IP
192.168.1.102 datanode2 # DataNode2主机名与IP
确保所有节点的/etc/hosts内容一致,便于节点间通过主机名直接通信。
3. 配置SSH免密码登录
Hadoop节点间(如NameNode与DataNode、ResourceManager与NodeManager)需通过SSH无密码通信,步骤如下:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"(直接按回车键使用默认路径和空密码)。ssh-copy-id user@remote_node_ip(如ssh-copy-id hadoop@192.168.1.101),输入远程节点密码后完成复制。ssh user@remote_node_ip(如ssh hadoop@192.168.1.101),无需输入密码即可登录。4. 配置DNS解析(/etc/resolv.conf文件)
为确保节点能解析外部主机名(如Hadoop依赖的外部服务),需在/etc/resolv.conf中添加DNS服务器地址,示例如下:
nameserver 8.8.8.8
nameserver 8.8.4.4
注意:若系统使用resolvconf或systemd-resolved,直接修改/etc/resolv.conf可能被覆盖,需通过对应工具配置。
5. 配置Hadoop网络相关参数
修改Hadoop核心配置文件,确保网络通信正常:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode主机名与端口 -->
</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/hdfs/namenode</value> <!-- NameNode数据目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/hdfs/datanode</value> <!-- DataNode数据目录 -->
</property>
</configuration>
<configuration>
<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>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- MapReduce运行在YARN上 -->
</property>
</configuration>
6. 防火墙设置
允许Hadoop服务所需端口通过防火墙,避免网络阻断:
ufw配置(推荐):sudo ufw allow 22/tcp # SSH
sudo ufw allow 9000/tcp # HDFS NameNode
sudo ufw allow 50010/tcp # HDFS DataNode数据传输
sudo ufw allow 50020/tcp # HDFS DataNode IPC
sudo ufw allow 8032/tcp # YARN ResourceManager
sudo ufw allow 8042/tcp # YARN NodeManager
sudo ufw enable # 启用防火墙
或使用iptables添加对应规则。7. 网络性能优化(可选但推荐)
/etc/sysctl.conf,启用TCP窗口缩放、紧急确认等特性,提升网络吞吐量,示例如下:net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
执行sudo sysctl -p使配置生效。/etc/network/interfaces),添加mtu 9000,示例如下:iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
mtu 9000 # 增大MTU值(默认1500)
重启网络服务使设置生效。