引言

作為大數據入門的核心實驗,Hadoop 完全分佈式集羣搭建是很多新手的 “第一道坎”。本文整合了完整的實操流程,從虛擬機安裝到 Hadoop 集羣啓動,每一步都附詳細操作和通俗解釋,哪怕是 Linux 零基礎也能跟着做。實驗環境:VMware + CentOS6.8 + JDK1.8 + Hadoop2.6.5,集羣架構為 1 主(master)3 從(slave1~slave3)。

一、實驗準備:明確環境與目標

1. 核心目標

搭建 “1 主 3 從” 的 Hadoop 分佈式集羣,實現 HDFS 分佈式存儲和 YARN 分佈式計算,最終能通過命令和 Web 界面驗證集羣可用性。

2. 所需工具

  • 虛擬機軟件:VMware Workstation(任意版本均可)
  • 系統鏡像:CentOS6.8(64 位)
  • 依賴軟件:JDK1.8(Hadoop 運行必需)
  • 核心軟件:Hadoop2.6.5(穩定版,適合新手)

二、Step1:安裝基礎虛擬機(master 節點模板)

這一步是搭建集羣的基礎,我們先創建 1 個 master 節點,後續從節點通過克隆生成,減少重複配置。

1. 虛擬機創建流程

  1. 打開 VMware,點擊 “文件→新建虛擬機”,選擇 “自定義(高級)” 模式(推薦,配置更靈活)。
  2. 硬件兼容性默認即可,選擇 “安裝程序光盤映像文件(ISO)”,瀏覽並選中 CentOS6.8 的 ISO 文件。
  3. 虛擬機名稱設為 “master”,存儲路徑建議單獨創建文件夾(如D:\HadoopCluster\master),避免中文路徑。
  4. 硬件配置(根據物理機性能調整,最低要求如下):
  • CPU:2 個處理器,每個處理器 2 核心
  • 內存:2GB(2048MB,太少會導致集羣卡頓)
  • 網絡類型:選擇 “僅主機模式”(集羣內部通信穩定,避免外網干擾)
  • 磁盤:40GB,選擇 “將虛擬磁盤存儲為單個文件”(管理方便)
  1. 點擊 “完成” 啓動虛擬機,按 CentOS 安裝嚮導操作:設置 root 密碼(建議設簡單密碼如123456,實驗用),選擇 “最小化安裝” 或 “帶 GUI 安裝” 均可(GUI 更直觀,新手推薦)。

2. 初始配置(必做)

安裝完成後登錄 root 用户,執行以下命令安裝基礎工具(後續配置需要):

bash

yum install -y vim openssh-server  # 安裝vim編輯器和SSH服務

三、Step2:設置固定 IP(避免 IP 漂移)

虛擬機默認是動態 IP,重啓後可能變化,導致集羣通信失敗,必須設置固定 IP。

1. 查找網絡配置信息

  1. 打開 VMware,點擊 “編輯→虛擬網絡編輯器”,選擇 “僅主機模式” 對應的虛擬網卡(如 VMnet1),記錄子網網段(如192.168.28.x)。

2. 修改網卡配置文件

  1. 執行命令打開配置文件: bash
vim /etc/sysconfig/network-scripts/ifcfg-eth0
  1. 按以下內容修改關鍵參數(其他參數保留默認):
  • BOOTPROTO=static(靜態 IP 模式)
  • ONBOOT=yes(開機自動啓動網卡)
  • IPADDR=192.168.28.140(master 節點 IP,網段需和虛擬網卡一致)
  • NETMASK=255.255.255.0(子網掩碼,默認即可)
  • GATEWAY=192.168.28.1(網關,和虛擬網卡 IP 一致)
  1. 保存退出後,重啓網絡服務: bash
service network restart
  1. 驗證:執行ifconfig,若 eth0 的 IP 顯示為設置的192.168.28.140,則配置成功。

四、Step3:克隆 3 個從節點(slave1~slave3)

手動創建 3 個從節點太耗時,通過克隆 master 節點快速生成,再修改關鍵配置避免衝突。

1. 克隆前準備

右鍵 master 虛擬機→“電源→關閉客户機”,必須完全關機才能克隆。

2. 克隆操作(重複 3 次)

  1. 右鍵 master→“管理→克隆”,選擇 “虛擬機中的當前狀態”→“創建完整克隆”(獨立虛擬機,更穩定)。
  2. 分別命名為 slave1、slave2、slave3,存儲路徑分別設為D:\HadoopCluster\slave1等,避免混淆。

3. 克隆後修改配置(每個 slave 都要做)

克隆的節點和 master 完全一致,需修改 MAC 地址、IP、主機名,否則會衝突:

  1. 啓動 slave1,登錄 root 用户,執行ifconfig -a查看 eth0 的 MAC 地址(如00:0C:29:XX:XX:XX)。
  2. 修改網卡配置文件: bash
vim /etc/sysconfig/network-scripts/ifcfg-eth0
  • 替換HWADDR為剛才查看的 MAC 地址
  • 修改IPADDR=192.168.28.141(slave2 設為 142,slave3 設為 143)
  1. 修改主機名: bash
vim /etc/sysconfig/network
  • HOSTNAME改為 slave1(slave2、slave3 對應修改)
  1. 重啓網絡和主機名生效: bash
service network restart
hostname  # 驗證主機名是否正確

五、Step4:配置 SSH 無密碼登錄(集羣通信必備)

Hadoop 集羣節點間需要頻繁通信,無密碼登錄能避免每次輸入密碼,是集羣搭建的關鍵步驟。

1. 所有節點生成密鑰對

在 master、slave1~slave3 上分別執行以下命令(一路回車,不設置密碼):

bash

ssh-keygen -t rsa  # 生成RSA密鑰對,存放在/root/.ssh目錄下

2. master 節點複製公鑰到所有節點

  1. 在 master 節點執行以下命令,將公鑰複製到自身和 3 個 slave 節點: bash
ssh-copy-id -i /root/.ssh/id_rsa.pub master
ssh-copy-id -i /root/.ssh/id_rsa.pub slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub slave2
ssh-copy-id -i /root/.ssh/id_rsa.pub slave3
  1. 驗證:在 master 節點執行ssh slave1,若無需輸入密碼直接進入 slave1 終端,説明配置成功。

六、Step5:配置時間同步(避免集羣時間不一致)

集羣節點時間差異過大會導致 Hadoop 服務異常,需統一時間。

1. 選擇 master 為時間服務器

  1. 在 master 節點安裝時間同步工具: bash
yum install -y ntp
  1. 啓動 ntp 服務並設置開機自啓: bash
service ntpd start
chkconfig ntpd on

2. 從節點同步 master 時間

在 slave1~slave3 上分別執行:

bash

ntpdate master  # 手動同步master時間
# 設置定時同步(每小時同步一次)
echo "0 * * * * /usr/sbin/ntpdate master" >> /etc/crontab

七、Step6:安裝 JDK(Hadoop 運行依賴)

Hadoop 是 Java 開發的,必須安裝 JDK 並配置環境變量。

1. 上傳並解壓 JDK

  1. 將 JDK1.8 安裝包(如jdk-8u151-linux-x64.tar.gz)上傳到 master 節點的/usr/java目錄(沒有就創建:mkdir /usr/java)。
  2. 解壓: bash
tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/java/

2. 配置環境變量

  1. 編輯全局環境變量文件: bash
vim /etc/profile
  1. 在文件末尾添加以下內容: bash
export JAVA_HOME=/usr/java/jdk1.8.0_151  # JDK解壓路徑
export PATH=$PATH:$JAVA_HOME/bin  # 添加Java命令到系統路徑
  1. 生效配置並驗證: bash
source /etc/profile  # 立即生效
java -version  # 若顯示JDK版本信息,説明安裝成功
  1. 同步 JDK 到從節點: bash
scp -r /usr/java root@slave1:/usr/
scp /etc/profile root@slave1:/etc/
  1. 對 slave2、slave3 重複上述命令,然後在每個從節點執行source /etc/profile生效。

八、Step7:配置 Hadoop2.6.5(核心步驟)

1. 上傳並解壓 Hadoop

  1. 將 Hadoop 安裝包(hadoop-2.6.5.tar.gz)上傳到 master 節點的/usr/local目錄。
  2. 解壓並重命名(方便操作): bash
tar -zxvf hadoop-2.6.5.tar.gz -C /usr/local/
mv /usr/local/hadoop-2.6.5 /usr/local/hadoop

2. 修改 Hadoop 核心配置文件

進入/usr/local/hadoop/etc/hadoop目錄,修改以下 4 個關鍵文件:

(1)core-site.xml(核心配置)

xml

<configuration>
  <!-- 指定HDFS的NameNode地址,master是主機名 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:8020</value>
  </property>
  <!-- Hadoop臨時目錄,存儲數據和日誌 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>
  </property>
</configuration>
(2)hdfs-site.xml(HDFS 配置)

xml

<configuration>
  <!-- 數據塊副本數,設為3(和從節點數量一致,保證數據安全) -->
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
  <!-- NameNode數據存儲目錄 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/usr/local/hadoop/dfs/name</value>
  </property>
  <!-- DataNode數據存儲目錄 -->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/usr/local/hadoop/dfs/data</value>
  </property>
  <!-- 關閉權限檢查(新手友好,避免權限報錯) -->
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
</configuration>
(3)yarn-site.xml(YARN 配置)

xml

<configuration>
  <!-- 指定YARN的ResourceManager地址 -->
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <!--  reducer獲取數據的方式 -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>
(4)slaves(指定從節點)

刪除默認內容,添加 3 個從節點的主機名:

plaintext

slave1
slave2
slave3

3. 同步 Hadoop 到所有從節點

bash

scp -r /usr/local/hadoop root@slave1:/usr/local/
scp -r /usr/local/hadoop root@slave2:/usr/local/
scp -r /usr/local/hadoop root@slave3:/usr/local/

九、Step8:格式化 HDFS 並啓動集羣

1. 格式化 NameNode(僅執行一次)

在 master 節點執行:

bash

cd /usr/local/hadoop/bin
./hdfs namenode -format
  • 成功標誌:日誌中出現 “has been successfully formatted” 和 “Exiting with status 0”。
  • 注意:不要重複格式化,否則會丟失數據。

2. 啓動集羣

  1. 啓動 HDFS(分佈式存儲): bash
cd /usr/local/hadoop/sbin
./start-dfs.sh
  1. 啓動 YARN(分佈式計算): bash
./start-yarn.sh

3. 驗證集羣狀態

(1)查看進程(master 節點)

執行jps,應顯示以下進程:

  • NameNode(HDFS 主節點)
  • SecondaryNameNode(HDFS 備用主節點)
  • ResourceManager(YARN 主節點)
(2)查看從節點進程(slave1 節點)

執行jps,應顯示:

  • DataNode(HDFS 數據節點)
  • NodeManager(YARN 數據節點)
(3)Web 界面驗證
  1. 打開 Windows 瀏覽器,訪問http://master:50070(HDFS Web 界面),能看到集羣信息和 DataNode 列表。
  2. 訪問http://master:8088(YARN Web 界面),能看到從節點狀態。

十、新手必看:常見問題排查

  1. ping master 超時:檢查 Windows 的 hosts 文件(C:\Windows\System32\drivers\etc\hosts),添加192.168.28.140 master;關閉 master 節點防火牆(service iptables stop)。
  2. SSH 登錄需要密碼:重新執行ssh-copy-id命令,確保公鑰已複製到從節點;檢查~/.ssh/authorized_keys文件權限(chmod 600 ~/.ssh/authorized_keys)。
  3. 50070 端口打不開:確認 NameNode 進程已啓動;檢查虛擬機網絡模式是否一致(均為僅主機模式);用 IP 直接訪問(http://192.168.28.140:50070)。
  4. DataNode 啓動失敗:刪除所有節點的/usr/local/hadoop/tmp/usr/local/hadoop/dfs目錄,重新格式化 NameNode。

總結

搭建 Hadoop 完全分佈式集羣的核心是 “按流程操作 + 避坑”,關鍵在於虛擬機網絡配置、無密碼登錄和 Hadoop 配置文件的正確性。新手建議一步步跟着做,每完成一個步驟就驗證一次,遇到問題先看日誌(Hadoop 的 logs 目錄)或參考本文的排查方案。

集羣搭建完成後,就可以進行後續的 MapReduce 實驗、數據上傳下載等操作了。如果在操作中遇到其他問題,歡迎在評論區留言交流~