Hadoop在Linux中的网络配置指南
在Linux环境中配置Hadoop网络是搭建Hadoop集群的核心步骤,需确保各节点(NameNode、DataNode、ResourceManager、NodeManager等)能通过网络正确通信。以下是详细的配置流程及关键要点:
为避免DHCP动态分配导致的IP变动,需为每个节点设置静态IP。以Ubuntu为例,使用ip命令配置(旧版本可用ifconfig):
sudo ip addr add 192.168.1.100/24 dev eth0 # 设置IP和子网掩码
sudo ip route add default via 192.168.1.1 # 设置网关
配置完成后,通过ip a命令验证IP是否生效。
编辑所有节点的/etc/hosts文件,添加集群节点的IP与主机名映射(替换为实际IP和主机名):
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
修改后重启网络服务(或系统)使配置生效:
sudo systemctl restart network # CentOS/RHEL
sudo systemctl restart systemd-networkd # Ubuntu/Debian
确保节点间能通过主机名互相访问(如ping master)。
sudo systemctl stop firewalld # CentOS/RHEL
sudo systemctl disable firewalld # 禁止开机启动
setenforce 0 # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭
防火墙关闭后,需确保后续配置的Hadoop端口(如HDFS的9000、YARN的8088)能正常通信。
Hadoop集群节点间需频繁通信(如NameNode与DataNode),配置SSH免密码登录可避免重复输入密码。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成无密码RSA密钥
ssh-copy-id master # 将公钥复制到自身
ssh-copy-id slave1 # 复制到slave1
ssh-copy-id slave2 # 复制到slave2
ssh master # 无需密码登录自身
ssh slave1 # 无需密码登录slave1
若需删除密钥,可使用ssh-keygen -R <hostname>清除指定主机的密钥。
Hadoop的网络行为主要由core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件控制,需根据集群规模调整参数。
配置Hadoop默认文件系统和临时目录($HADOOP_HOME/etc/hadoop下):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- NameNode的RPC地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 临时文件目录(需提前创建) -->
</property>
</configuration>
配置HDFS副本数、NameNode/DataNode数据目录:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 生产环境建议设为3,测试环境可设为1 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/dfs/name</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/dfs/data</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
配置YARN资源管理器和NodeManager辅助服务:
<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>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
配置MapReduce运行框架为YARN(需提前创建mapred-site.xml,可通过cp mapred-site.xml.template mapred-site.xml生成):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作为资源管理器 -->
</property>
</configuration>
列出所有DataNode和NodeManager节点($HADOOP_HOME/etc/hadoop下):
slave1
slave2
修改后,Hadoop启动时会自动在这些节点上启动DataNode和NodeManager进程。
若集群节点间网络延迟较高,可通过调整TCP缓冲区大小提升数据传输效率。编辑/etc/sysctl.conf文件,添加以下参数:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = cubic
应用配置:
sudo sysctl -p
这些参数可增加TCP接收/发送缓冲区大小,提升大数据量传输性能。
在master节点依次执行以下命令:
hdfs namenode -format # 格式化NameNode(首次启动需执行)
start-dfs.sh # 启动HDFS
start-yarn.sh # 启动YARN
使用jps命令查看各节点进程:
NameNode、ResourceManager、SecondaryNameNode(可选)。DataNode、NodeManager。http://master:50070(查看HDFS状态)。http://master:8088(查看集群资源使用情况)。向HDFS上传文件,验证集群功能:
hdfs dfs -put /path/local/file.txt /user/hadoop/ # 上传文件到HDFS
hdfs dfs -ls /user/hadoop/ # 查看HDFS文件列表
通过以上步骤,可完成Hadoop在Linux中的网络配置,搭建一个具备基本功能的Hadoop集群。需根据实际环境(如节点IP、主机名)调整配置参数,确保集群稳定运行。