Ubuntu Hadoop网络设置指南
在Ubuntu系统上搭建Hadoop集群时,稳定的网络环境是节点间通信的基础。以下是详细的网络配置步骤,涵盖静态IP设置、主机名解析、SSH无密码登录等关键环节:
1. 配置静态IP地址
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设置:
ip a | grep ens33 # 检查IP地址是否生效
2. 配置DNS解析
为确保系统能解析主机名(如master、slave1),需修改/etc/resolv.conf文件(部分系统可能需要修改/etc/resolvconf/resolv.conf.d/base以实现永久生效)。
- 编辑
/etc/resolv.conf:sudo nano /etc/resolv.conf - 添加DNS服务器地址(可选,若
netplan已配置则无需重复):nameserver 8.8.8.8 nameserver 8.8.4.4 - 若使用
resolvconf(Ubuntu 18.04及以上常用),编辑base文件:
添加相同内容后,执行以下命令更新DNS缓存:sudo nano /etc/resolvconf/resolv.conf.d/basesudo resolvconf -u
3. 修改hosts文件实现主机名映射
Hadoop依赖主机名识别节点,需在所有节点的/etc/hosts文件中添加IP与主机名的映射关系(避免使用127.0.0.1映射主机名,否则会导致通信异常)。
- 编辑
/etc/hosts:sudo nano /etc/hosts - 添加集群节点信息(示例,需替换为实际IP和主机名):
192.168.1.100 master 192.168.1.101 slave1 192.168.1.102 slave2 - 保存后,可通过
ping命令验证主机名解析是否生效:ping master -c 3 ping slave1 -c 3
4. 配置SSH无密码登录
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
5. 配置Hadoop网络相关参数
修改Hadoop核心配置文件,指定集群通信地址、端口等参数(配置文件位于$HADOOP_HOME/etc/hadoop目录下)。
- core-site.xml:设置HDFS的默认文件系统地址(需替换为NameNode的实际IP或主机名):
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> <!-- 若使用主机名,需确保DNS解析正确 --> </property> </configuration> - hdfs-site.xml:配置HDFS副本数(生产环境建议设为3)及数据存储目录(需提前创建):
<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> - yarn-site.xml:配置ResourceManager地址及Shuffle服务:
<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(若未创建,需从
mapred-site.xml.template复制):指定MapReduce框架为YARN:<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
6. 配置防火墙允许Hadoop端口通信
Ubuntu默认使用ufw防火墙,需开放Hadoop所需端口以保证节点间通信。
- 允许常用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 # 查看已开放的端口
7. 验证网络配置
完成上述步骤后,需通过以下命令验证网络是否满足Hadoop集群要求:
- 测试节点间连通性:在主节点上
ping所有从节点,确保能正常通信:ping slave1 -c 3 ping slave2 -c 3 - 测试SSH无密码登录:从主节点登录到所有从节点,确认无需输入密码:
ssh slave1 ssh slave2 - 检查Hadoop服务状态:启动Hadoop集群后,使用以下命令查看节点状态:
hdfs dfsadmin -report # 查看DataNode是否注册 yarn node -list # 查看NodeManager是否注册
通过以上步骤,Ubuntu系统的网络配置将满足Hadoop集群的需求,为后续集群启动和数据处理奠定基础。若遇到网络问题,可通过tail -f $HADOOP_HOME/logs/*查看Hadoop日志定位具体原因。