設置靜態IP地址:為避免DHCP動態分配導致的IP變動,需為每個節點配置靜態IP。編輯網絡配置文件(Debian/Ubuntu使用/etc/network/interfaces,CentOS/RHEL使用/etc/sysconfig/network-scripts/ifcfg-ens33),設置IPADDR(IP地址)、NETMASK(子網掩碼)、GATEWAY(網關)等參數。例如:
# CentOS示例(ifcfg-ens33)
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
重啟網絡服務使配置生效:systemctl restart network(CentOS)或systemctl restart systemd-networkd(Debian)。
配置主機名與hosts文件:為每個節點設置唯一主機名(如master、slave1),并通過/etc/hosts文件實現主機名與IP的映射(避免依賴DNS)。編輯/etc/hosts文件,添加如下內容:
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
同步所有節點的/etc/hosts文件,確保主機名解析一致。
關閉防火墻與SELinux:臨時關閉防火墻(測試環境):systemctl stop firewalld(CentOS)或systemctl stop ufw(Ubuntu);永久關閉:systemctl disable firewalld。關閉SELinux(避免權限問題):setenforce 0,并修改/etc/selinux/config文件,將SELINUX=enforcing改為SELINUX=disabled。
Hadoop集群節點間需要無密碼通信(如NameNode與DataNode、ResourceManager與NodeManager),需配置SSH免密碼登錄:
master)生成RSA密鑰對:ssh-keygen -t rsa(直接按回車鍵,無需設置密碼)。slave1、slave2):ssh-copy-id master(主節點自身)、ssh-copy-id slave1、ssh-copy-id slave2。ssh master、ssh slave1,確認無需輸入密碼即可登錄。Hadoop的網絡通信依賴以下核心配置文件的正確設置(位于$HADOOP_HOME/etc/hadoop目錄):
core-site.xml:配置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> <!-- Hadoop臨時文件目錄 -->
</property>
</configuration>
hdfs-site.xml:配置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>
<property>
<name>dfs.namenode.rpc-address</name>
<value>master:9000</value> <!-- NameNode RPC地址 -->
</property>
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:50010</value> <!-- DataNode數據傳輸端口 -->
</property>
</configuration>
yarn-site.xml:配置YARN ResourceManager地址和Shuffle服務。
<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> <!-- Shuffle處理器類 -->
</property>
</configuration>
mapred-site.xml(若未自動生成,需從mapred-site.xml.template復制):配置MapReduce運行框架為YARN。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- MapReduce運行在YARN上 -->
</property>
</configuration>
slaves文件:列出所有DataNode和NodeManager節點(每行一個主機名)。
slave1
slave2
同步slaves文件到所有節點,確保集群節點信息一致。
調整TCP緩沖區大小,提升Hadoop集群內部通信效率。編輯/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。
ping命令檢查節點間是否可達(如ping slave1)。ssh slave1,確認無需密碼即可登錄。hdfs namenode -format。start-dfs.sh。start-yarn.sh。jps(主節點應看到NameNode、ResourceManager;從節點應看到DataNode、NodeManager)。http://master:50070)、YARN Web UI(http://master:8088),確認集群狀態正常。通過以上步驟,可完成Linux環境下Hadoop的網絡配置,確保集群節點間通信正常,為后續大數據處理任務奠定基礎。