HDFS在Ubuntu上的网络设置指南
静态IP是集群节点稳定通信的基础,避免DHCP动态分配导致的IP变动。以Ubuntu 22.04为例,通过netplan工具配置(配置文件路径通常为/etc/netplan/01-network-manager-all.yaml):
network:
version: 2
renderer: NetworkManager
ethernets:
ens33: # 网卡名称(通过`ip a`命令查看)
dhcp4: no
addresses: ["192.168.88.10/24"] # 设置静态IP及子网掩码
gateway4: 192.168.88.2 # 网关地址(与物理网络一致)
nameservers:
addresses: ["8.8.8.8", "1.1.1.1"] # DNS服务器
应用配置:sudo netplan apply。
通过/etc/hosts文件实现节点名称与IP的映射,避免依赖DNS解析(提升通信效率并减少外部依赖)。编辑/etc/hosts,添加集群所有节点的信息:
192.168.88.10 master # 主节点(NameNode、ResourceManager)
192.168.88.11 slave1 # 从节点1(DataNode、NodeManager)
192.168.88.12 slave2 # 从节点2(DataNode、NodeManager)
确保所有节点的/etc/hosts文件内容一致。
实现节点间无密码通信,是Hadoop集群管理的核心需求(如NameNode向DataNode分发任务)。操作步骤:
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa(直接回车,默认保存路径)。ssh-copy-id hadoop@slave1、ssh-copy-id hadoop@slave2(hadoop为节点用户名,需提前创建并设置密码)。ssh slave1,若无需输入密码即可登录,则配置成功。修改Hadoop核心配置文件(位于$HADOOP_HOME/etc/hadoop目录),确保网络通信端口和路径正确:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- 替换为你的主节点IP或主机名 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 副本数(根据集群规模调整,生产环境建议3) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</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>
```。
Hadoop需要开放多个端口用于节点间通信,使用ufw(Ubuntu防火墙工具)放行所需端口:
sudo ufw allow 9000/tcp # NameNode RPC端口
sudo ufw allow 50070/tcp # NameNode Web UI端口(Hadoop 3.x可能为9870)
sudo ufw allow 8088/tcp # ResourceManager Web UI端口
sudo ufw allow 50010/tcp # DataNode数据传输端口
sudo ufw allow 50020/tcp # DataNode IPC端口
sudo ufw allow 50090/tcp # SecondaryNameNode端口
sudo ufw enable # 启用防火墙
验证防火墙状态:sudo ufw status,确保上述端口处于“ALLOW”状态。
在所有节点上执行以下命令,确保网络配置正确:
ping master、ping slave1,确保节点间IP连通。telnet master 9000(替换为你的NameNode IP和端口),确保端口可访问。ping slave1,通过主机名能正确解析到IP地址。完成以上步骤后,HDFS的网络基础配置完成,可继续执行hdfs namenode -format(首次启动需格式化)和start-dfs.sh(启动HDFS)命令,启动HDFS服务。