在Linux環境下配置Hadoop網絡,核心目標是確保集群節點間通信暢通,主要涉及基礎網絡設置、SSH免密登錄、Hadoop配置文件調整及網絡訪問控制等環節。以下是詳細操作流程:
首先需要為每個節點(NameNode、DataNode、ResourceManager、NodeManager等)設置靜態IP地址,避免DHCP動態分配導致的IP變動,確保節點間通信穩定。
/etc/network/interfaces
文件,添加如下內容(以192.168.1.100
為例):auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
/etc/sysconfig/network-scripts/ifcfg-ens33
(網卡名以ip a
命令為準),修改如下: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
(Debian/Ubuntu)或systemctl restart network.service
(CentOS/RHEL)。為了讓節點間通過主機名而非IP地址訪問,需修改/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 -P '' -f ~/.ssh/id_rsa
(直接按回車鍵,生成無密碼密鑰)slave1
、slave2
為實際節點主機名):ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
ssh master
ssh slave1
若無需輸入密碼即可登錄,則配置成功。Hadoop的網絡配置主要通過$HADOOP_HOME/etc/hadoop
目錄下的XML配置文件實現,關鍵文件及參數如下:
配置Hadoop的默認文件系統(HDFS地址)和臨時目錄(用于存儲臨時數據):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- 替換為NameNode的主機名 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 臨時目錄路徑,需提前創建 -->
</property>
</configuration>
配置HDFS的副本數(集群規?!?時設為3,測試環境可設為1)、NameNode數據目錄和DataNode數據目錄:
<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>
配置YARN的ResourceManager主機名和NodeManager輔助服務(用于MapReduce Shuffle):
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value> <!-- 替換為ResourceManager的主機名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- Shuffle服務名稱 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value> <!-- Shuffle處理器類 -->
</property>
</configuration>
配置MapReduce任務的運行框架(必須為YARN):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
列出所有DataNode和NodeManager節點的主機名(每行一個,NameNode無需列入):
slave1
slave2
修改后需同步到所有節點。
Hadoop需要開放特定端口供節點間通信,需配置防火墻(或關閉防火墻,僅測試環境使用):
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # HDFS NameNode端口
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp # HDFS Web UI端口
sudo firewall-cmd --permanent --zone=public --add-port=8032/tcp # YARN ResourceManager端口
sudo firewall-cmd --permanent --zone=public --add-port=8042/tcp # YARN NodeManager端口
sudo firewall-cmd --reload
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 # 臨時關閉
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久關閉
ping slave1
、ping slave2
,確保能正常訪問所有節點。ssh slave1
,確認無需輸入密碼即可登錄。hdfs namenode -format # 第一次啟動需格式化NameNode
start-dfs.sh # 啟動HDFS
start-yarn.sh # 啟動YARN
jps
,應看到NameNode
、DataNode
、ResourceManager
、NodeManager
等進程;在瀏覽器中訪問http://master:50070
(HDFS Web UI)和http://master:8088
(YARN Web UI),確認集群啟動成功。通過以上步驟,即可完成Hadoop在Linux環境中的網絡配置,確保集群節點間通信正常,為后續數據處理任務奠定基礎。