Ubuntu环境下HDFS网络配置的关键注意事项
为所有HDFS节点(NameNode、DataNode、ResourceManager等)配置静态IP地址,避免DHCP动态分配导致IP变动,影响集群稳定性。可通过/etc/netplan/*.yaml(Ubuntu 18.04+)或/etc/network/interfaces文件配置,确保IPADDR、NETMASK、GATEWAY、DNS1等参数正确。例如:
network:
version: 2
ethernets:
ens33:
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。
统一所有节点的主机名(如namenode、datanode1),并在/etc/hostname文件中设置。同时,在/etc/hosts文件中添加IP与主机名的映射关系,确保节点间可通过主机名互相访问。例如:
192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
避免使用localhost作为集群节点的主机名,防止通信混淆。
配置所有节点之间的SSH免密码登录,确保NameNode能无密码连接到DataNode,以及ResourceManager能管理各节点。步骤如下:
ssh-keygen -t rsa(默认保存至~/.ssh/id_rsa)。ssh-copy-id user@datanode1、ssh-copy-id user@datanode2。ssh user@datanode1,无需输入密码即可连接。开放HDFS所需端口,允许节点间通信。常用端口包括:
8020(NameNode RPC)、50010(DataNode数据传输)、50020(DataNode块复制)、50070(NameNode Web UI)、50075(DataNode Web UI);8032(ResourceManager调度)、8042(NodeManager Web UI)。使用ufw(Ubuntu防火墙)配置:
sudo ufw allow 8020/tcp
sudo ufw allow 50010/tcp
sudo ufw allow 50020/tcp
sudo ufw allow 50070/tcp
sudo ufw allow 50075/tcp
sudo ufw allow 8032/tcp
sudo ufw allow 8042/tcp
sudo ufw enable
若系统启用SELinux,需临时关闭(setenforce 0)或永久禁用(修改/etc/selinux/config中的SELINUX=disabled)。
正确配置core-site.xml、hdfs-site.xml等文件,确保HDFS地址和端口正确:
fs.defaultFS需指向NameNode的RPC地址(如hdfs://namenode:8020),hadoop.tmp.dir需设置为绝对路径(如/usr/local/hadoop/tmp)。dfs.namenode.name.dir、dfs.datanode.data.dir)、副本因子(dfs.replication,生产环境建议3,测试环境可设为1)、Web UI端口等。hdfs-site.xml中添加dfs.nameservices(集群名称)、dfs.ha.namenodes.mycluster(NameNode标识,如nn1,nn2)、dfs.namenode.rpc-address.mycluster.nn1(Active NameNode RPC地址)、dfs.namenode.shared.edits.dir(JournalNode共享存储路径)等参数。集群中所有节点的时间必须同步,否则会导致NameNode与DataNode之间的通信异常(如心跳超时)。推荐安装ntp服务:
sudo apt update
sudo apt install ntp -y
sudo systemctl enable ntp
sudo systemctl start ntp
或使用chrony(Ubuntu 20.04+默认):
sudo timedatectl set-ntp true
定期检查时间同步状态:timedatectl status。
/etc/sysctl.conf中的网络参数,如增大net.core.somaxconn(最大连接队列长度,建议设为1024)、net.ipv4.tcp_max_syn_backlog(SYN队列长度,建议设为2048),提升网络吞吐量。修改后执行sudo sysctl -p使配置生效。ping命令测试节点间连通性:ping namenode、ping datanode1;ssh命令测试免密登录:ssh namenode、ssh datanode1;hdfs dfsadmin -report命令查看HDFS集群状态,确认所有DataNode已注册;yarn node -list命令查看YARN节点状态,确认所有NodeManager已连接。