Ubuntu Hadoop网络设置指南
在Ubuntu系统上搭建Hadoop集群时,稳定的网络环境是节点间通信的基础。以下是详细的网络配置步骤,涵盖静态IP设置、主机名解析、SSH无密码登录等关键环节:
Hadoop集群需要固定的IP地址以保证节点间通信稳定。Ubuntu 18.04及以上版本推荐使用netplan工具配置静态IP。
/etc/netplan/01-netcfg.yaml或/etc/netplan/00-installer-config.yaml):sudo nano /etc/netplan/01-netcfg.yaml
ens33网卡为例,需替换为实际网卡名称,可通过ip a命令查看):network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no # 关闭DHCP
addresses: [192.168.1.100/24] # 静态IP地址及子网掩码
gateway4: 192.168.1.1 # 默认网关(与路由器或宿主机网关一致)
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # DNS服务器(推荐使用国内公开DNS)
sudo netplan apply
ip a | grep ens33 # 检查IP地址是否生效
为确保系统能解析主机名(如master、slave1),需修改/etc/resolv.conf文件(部分系统可能需要修改/etc/resolvconf/resolv.conf.d/base以实现永久生效)。
/etc/resolv.conf:sudo nano /etc/resolv.conf
netplan已配置则无需重复):nameserver 8.8.8.8
nameserver 8.8.4.4
resolvconf(Ubuntu 18.04及以上常用),编辑base文件:sudo nano /etc/resolvconf/resolv.conf.d/base
添加相同内容后,执行以下命令更新DNS缓存:sudo resolvconf -u
Hadoop依赖主机名识别节点,需在所有节点的/etc/hosts文件中添加IP与主机名的映射关系(避免使用127.0.0.1映射主机名,否则会导致通信异常)。
/etc/hosts:sudo nano /etc/hosts
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
ping命令验证主机名解析是否生效:ping master -c 3
ping slave1 -c 3
Hadoop集群中,NameNode需要无密码SSH登录到所有DataNode,ResourceManager需要无密码登录到所有NodeManager。
master)上生成SSH密钥对(若已存在密钥,可跳过生成步骤):ssh-keygen -t rsa # 直接按回车键,使用默认路径和空密码
slave1、slave2):ssh-copy-id master@slave1 # 替换为实际从节点IP或主机名
ssh-copy-id master@slave2
ssh master@slave1 # 应无需输入密码即可登录
ssh master@slave2
修改Hadoop核心配置文件,指定集群通信地址、端口等参数(配置文件位于$HADOOP_HOME/etc/hadoop目录下)。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- 若使用主机名,需确保DNS解析正确 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/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>
</configuration>
mapred-site.xml.template复制):指定MapReduce框架为YARN:<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Ubuntu默认使用ufw防火墙,需开放Hadoop所需端口以保证节点间通信。
sudo ufw allow 8020/tcp # HDFS NameNode端口
sudo ufw allow 50010/tcp # HDFS DataNode数据传输端口
sudo ufw allow 50070/tcp # HDFS Web UI端口
sudo ufw allow 8088/tcp # YARN ResourceManager Web UI端口
sudo ufw allow 22/tcp # SSH端口(必需)
sudo ufw enable
sudo ufw status # 查看已开放的端口
完成上述步骤后,需通过以下命令验证网络是否满足Hadoop集群要求:
ping所有从节点,确保能正常通信:ping slave1 -c 3
ping slave2 -c 3
ssh slave1
ssh slave2
hdfs dfsadmin -report # 查看DataNode是否注册
yarn node -list # 查看NodeManager是否注册
通过以上步骤,Ubuntu系统的网络配置将满足Hadoop集群的需求,为后续集群启动和数据处理奠定基础。若遇到网络问题,可通过tail -f $HADOOP_HOME/logs/*查看Hadoop日志定位具体原因。