Ubuntu上Hadoop网络配置指南
确保Ubuntu节点的网络接口(如eth0或ens33)配置静态IP地址(集群节点需固定IP,避免DHCP变动导致通信故障)。
ip命令临时配置(重启失效),或编辑/etc/netplan/*.yaml文件永久生效(示例):network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.100/24] # 静态IP及子网掩码
gateway4: 192.168.1.1 # 网关
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # DNS服务器
应用配置:sudo netplan apply。ping <其他节点IP>测试节点间网络是否畅通。统一集群节点的主机名,并在/etc/hosts文件中映射IP与主机名(避免DNS解析延迟或失败)。
sudo hostnamectl set-hostname <节点主机名> # 如namenode、datanode1
/etc/hosts中添加以下内容(替换为实际IP和主机名):192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
192.168.1.103 resourcemanager
192.168.1.104 nodemanager1
保存后,通过ping <主机名>验证解析是否正确。Hadoop集群节点间需无密码通信(如NameNode与DataNode、ResourceManager与NodeManager),配置SSH免密码登录:
ssh-keygen -t rsa # 默认保存到~/.ssh/id_rsa
ssh-copy-id user@datanode1 # 替换为实际用户名和节点主机名
ssh-copy-id user@datanode2
ssh-copy-id user@resourcemanager
测试无密码登录:ssh user@datanode1,无需输入密码即可连接。进入Hadoop安装目录的etc/hadoop子目录,修改以下关键配置文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode的IPC端口 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/path/to/hadoop-tmp</value> <!-- 临时目录,需提前创建 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 数据副本数,根据集群规模调整 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/path/to/namenode/data</value> <!-- NameNode元数据存储目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/path/to/datanode/data</value> <!-- DataNode数据存储目录 -->
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value> <!-- ResourceManager主机名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- MapReduce Shuffle服务 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
保存所有配置文件。允许Hadoop服务所需端口通过防火墙(Ubuntu默认使用ufw,部分系统可能用firewalld):
sudo ufw allow 9000/tcp # HDFS NameNode IPC端口
sudo ufw allow 50070/tcp # HDFS Web UI端口
sudo ufw allow 8020/tcp # HDFS NameNode元数据端口(部分版本)
sudo ufw allow 8032/tcp # YARN ResourceManager端口
sudo ufw allow 8042/tcp # YARN NodeManager端口
sudo ufw allow 10020/tcp # MapReduce JobHistory Server端口
sudo ufw allow 19888/tcp # MapReduce JobHistory Web UI端口
sudo ufw reload
若使用firewalld(如CentOS),可将ufw替换为firewall-cmd命令。若为首次设置Hadoop集群或NameNode元数据损坏,需格式化HDFS(注意:格式化会清除NameNode中的所有数据,仅首次启动或元数据损坏时执行):
hdfs namenode -format
依次启动HDFS和YARN服务:
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
启动后,可通过以下命令查看服务状态:
jps # 查看Hadoop进程(NameNode、DataNode、ResourceManager、NodeManager等)
hdfs dfsadmin -report # 查看DataNode是否注册、存储容量等信息
yarn node -list # 查看NodeManager是否注册、资源使用情况
hdfs dfs -mkdir -p /user/<用户名>/test
hdfs dfs -put ~/test.txt /user/<用户名>/test
hdfs dfs -ls /user/<用户名>/test
/etc/hosts中的主机名与hostnamectl设置的主机名完全一致,避免解析错误。netstat -tulnp | grep <端口>),若有冲突需修改配置文件中的端口号。$HADOOP_HOME/logs目录下),如hadoop-<用户名>-namenode-<主机名>.log,定位具体错误原因。