/etc/sysconfig/network-scripts/ifcfg-eth0),設置靜態IP、子網掩碼、網關和DNS,避免動態IP變動導致節點通信失敗。示例內容:TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100 # 替換為你的節點IP
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes # 開機自動啟用網絡
保存后重啟網絡服務:sudo systemctl restart network(或sudo service network restart,取決于Linux發行版)。master):sudo hostnamectl set-hostname master;/etc/hosts文件,添加所有節點的IP與主機名映射(所有節點需保持一致):192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
Hadoop集群節點間需要無密碼通信(如NameNode與DataNode、ResourceManager與NodeManager),步驟如下:
ssh-keygen -t rsa,按回車鍵接受默認路徑(~/.ssh/id_rsa)和空密碼(-P '')。~/.ssh/authorized_keys文件中(如ssh-copy-id user@slave1、ssh-copy-id user@slave2,user為節點用戶名)。.ssh目錄及文件的訪問權限正確(避免SSH拒絕訪問):chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
修改Hadoop安裝目錄下的配置文件(如$HADOOP_HOME/etc/hadoop/),確保節點間能正確識別和通信:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- 主節點主機名與HDFS端口 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 臨時目錄,需提前創建并授權 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 數據副本數 -->
</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>
<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>
mapred-site.xml.template復制):指定MapReduce運行框架為YARN:<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slave1、slave2),用于Hadoop自動管理集群節點。編輯/etc/sysctl.conf文件,優化TCP緩沖區大小和擁塞控制算法,提升集群內部通信效率:
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。
Hadoop依賴多個端口進行通信(如HDFS的8020、YARN的8032),需開放這些端口:
# 開放HDFS NameNode端口
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
# 開放YARN ResourceManager端口
sudo firewall-cmd --permanent --zone=public --add-port=8032/tcp
# 開放HDFS DataNode端口
sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp
# 重新加載防火墻規則
sudo firewall-cmd --reload
ping slave1、ping slave2,確保能正常訪問所有從節點。ssh slave1,無需輸入密碼即可登錄從節點。hdfs namenode -format(首次啟動需格式化NameNode),然后啟動HDFS和YARN:start-dfs.sh
start-yarn.sh
jps命令,主節點應看到NameNode、ResourceManager等進程,從節點應看到DataNode、NodeManager等進程。http://master:50070)和YARN Web界面(http://master:8088),確認集群狀態正常。通過以上步驟,可完成Linux環境下Hadoop的網絡配置,確保集群節點間通信順暢。配置過程中需注意所有節點的/etc/hosts文件一致性,以及Hadoop目錄的權限設置(如hadoop.tmp.dir需由Hadoop用戶擁有)。