1. 配置Linux基礎網絡環境
首先需要為每個節點設置靜態IP地址、主機名,并綁定IP與主機名的映射關系,確保節點間網絡可達。
ip address show命令查看當前網絡接口的IP信息。hostnamectl set-hostname <主機名>(如master、slave1)修改節點主機名,重啟后生效。/etc/sysconfig/network-scripts/ifcfg-ens33,Debian/Ubuntu為/etc/network/interfaces),設置靜態IP、子網掩碼、網關和DNS。例如:TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
systemctl restart network(CentOS/RHEL)或service networking restart(Debian/Ubuntu)應用配置。2. 配置主機名解析(/etc/hosts文件)
在所有節點的/etc/hosts文件中添加IP地址與主機名的映射,避免依賴DNS解析,提高通信效率。例如:
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
保存后無需重啟,直接生效。
3. 配置SSH免密碼登錄
實現節點間無密碼通信,是Hadoop集群管理的核心要求(如NameNode與DataNode、ResourceManager與NodeManager之間的通信)。
master)上執行ssh-keygen -t rsa,按回車鍵生成默認路徑的密鑰對(~/.ssh/id_rsa為私鑰,~/.ssh/id_rsa.pub為公鑰)。slave1、slave2),執行ssh-copy-id user@slave1(user為節點用戶名),重復此步驟分發到其他節點。ssh slave1,若無需輸入密碼即可登錄,則配置成功。4. 關閉防火墻與SELinux(開發環境推薦)
防火墻和SELinux可能會阻止Hadoop服務的端口通信,建議在開發環境中關閉。
systemctl stop firewalld # CentOS/RHEL
systemctl disable firewalld
# 或Ubuntu(使用ufw)
ufw disable
setenforce 0 # 臨時關閉
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久關閉
5. 配置Hadoop核心網絡參數(關鍵配置文件)
Hadoop的網絡行為主要由core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml和slaves文件控制。
<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>
<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>
<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>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- MapReduce運行框架 -->
</property>
</configuration>
slave1
slave2
該文件位于$HADOOP_HOME/etc/hadoop目錄下。6. 驗證網絡配置
完成上述步驟后,需驗證節點間通信及Hadoop服務是否正常。
ping slave1、ping slave2,確保能正常訪問從節點。ssh slave1,驗證無需輸入密碼即可登錄。hdfs namenode -format(首次啟動需格式化NameNode)、start-dfs.sh(啟動HDFS)、start-yarn.sh(啟動YARN)。jps命令,查看主節點是否有NameNode、ResourceManager進程,從節點是否有DataNode、NodeManager進程。http://master:50070(Hadoop 2.x)、YARN管理界面http://master:8088,確認集群狀態正常。