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、主机名)调整配置参数,确保集群稳定运行。