引言
作為大數據入門的核心實驗,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. 虛擬機創建流程
- 打開 VMware,點擊 “文件→新建虛擬機”,選擇 “自定義(高級)” 模式(推薦,配置更靈活)。
- 硬件兼容性默認即可,選擇 “安裝程序光盤映像文件(ISO)”,瀏覽並選中 CentOS6.8 的 ISO 文件。
- 虛擬機名稱設為 “master”,存儲路徑建議單獨創建文件夾(如
D:\HadoopCluster\master),避免中文路徑。 - 硬件配置(根據物理機性能調整,最低要求如下):
- CPU:2 個處理器,每個處理器 2 核心
- 內存:2GB(2048MB,太少會導致集羣卡頓)
- 網絡類型:選擇 “僅主機模式”(集羣內部通信穩定,避免外網干擾)
- 磁盤:40GB,選擇 “將虛擬磁盤存儲為單個文件”(管理方便)
- 點擊 “完成” 啓動虛擬機,按 CentOS 安裝嚮導操作:設置 root 密碼(建議設簡單密碼如
123456,實驗用),選擇 “最小化安裝” 或 “帶 GUI 安裝” 均可(GUI 更直觀,新手推薦)。
2. 初始配置(必做)
安裝完成後登錄 root 用户,執行以下命令安裝基礎工具(後續配置需要):
bash
yum install -y vim openssh-server # 安裝vim編輯器和SSH服務
三、Step2:設置固定 IP(避免 IP 漂移)
虛擬機默認是動態 IP,重啓後可能變化,導致集羣通信失敗,必須設置固定 IP。
1. 查找網絡配置信息
- 打開 VMware,點擊 “編輯→虛擬網絡編輯器”,選擇 “僅主機模式” 對應的虛擬網卡(如 VMnet1),記錄子網網段(如
192.168.28.x)。
2. 修改網卡配置文件
- 執行命令打開配置文件: bash
vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 按以下內容修改關鍵參數(其他參數保留默認):
BOOTPROTO=static(靜態 IP 模式)ONBOOT=yes(開機自動啓動網卡)IPADDR=192.168.28.140(master 節點 IP,網段需和虛擬網卡一致)NETMASK=255.255.255.0(子網掩碼,默認即可)GATEWAY=192.168.28.1(網關,和虛擬網卡 IP 一致)
- 保存退出後,重啓網絡服務: bash
service network restart
- 驗證:執行
ifconfig,若 eth0 的 IP 顯示為設置的192.168.28.140,則配置成功。
四、Step3:克隆 3 個從節點(slave1~slave3)
手動創建 3 個從節點太耗時,通過克隆 master 節點快速生成,再修改關鍵配置避免衝突。
1. 克隆前準備
右鍵 master 虛擬機→“電源→關閉客户機”,必須完全關機才能克隆。
2. 克隆操作(重複 3 次)
- 右鍵 master→“管理→克隆”,選擇 “虛擬機中的當前狀態”→“創建完整克隆”(獨立虛擬機,更穩定)。
- 分別命名為 slave1、slave2、slave3,存儲路徑分別設為
D:\HadoopCluster\slave1等,避免混淆。
3. 克隆後修改配置(每個 slave 都要做)
克隆的節點和 master 完全一致,需修改 MAC 地址、IP、主機名,否則會衝突:
- 啓動 slave1,登錄 root 用户,執行
ifconfig -a查看 eth0 的 MAC 地址(如00:0C:29:XX:XX:XX)。 - 修改網卡配置文件: bash
vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 替換
HWADDR為剛才查看的 MAC 地址 - 修改
IPADDR=192.168.28.141(slave2 設為 142,slave3 設為 143)
- 修改主機名: bash
vim /etc/sysconfig/network
- 將
HOSTNAME改為 slave1(slave2、slave3 對應修改)
- 重啓網絡和主機名生效: bash
service network restart
hostname # 驗證主機名是否正確
五、Step4:配置 SSH 無密碼登錄(集羣通信必備)
Hadoop 集羣節點間需要頻繁通信,無密碼登錄能避免每次輸入密碼,是集羣搭建的關鍵步驟。
1. 所有節點生成密鑰對
在 master、slave1~slave3 上分別執行以下命令(一路回車,不設置密碼):
bash
ssh-keygen -t rsa # 生成RSA密鑰對,存放在/root/.ssh目錄下
2. master 節點複製公鑰到所有節點
- 在 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
- 驗證:在 master 節點執行
ssh slave1,若無需輸入密碼直接進入 slave1 終端,説明配置成功。
六、Step5:配置時間同步(避免集羣時間不一致)
集羣節點時間差異過大會導致 Hadoop 服務異常,需統一時間。
1. 選擇 master 為時間服務器
- 在 master 節點安裝時間同步工具: bash
yum install -y ntp
- 啓動 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
- 將 JDK1.8 安裝包(如
jdk-8u151-linux-x64.tar.gz)上傳到 master 節點的/usr/java目錄(沒有就創建:mkdir /usr/java)。 - 解壓: bash
tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/java/
2. 配置環境變量
- 編輯全局環境變量文件: bash
vim /etc/profile
- 在文件末尾添加以下內容: bash
export JAVA_HOME=/usr/java/jdk1.8.0_151 # JDK解壓路徑
export PATH=$PATH:$JAVA_HOME/bin # 添加Java命令到系統路徑
- 生效配置並驗證: bash
source /etc/profile # 立即生效
java -version # 若顯示JDK版本信息,説明安裝成功
- 同步 JDK 到從節點: bash
scp -r /usr/java root@slave1:/usr/
scp /etc/profile root@slave1:/etc/
- 對 slave2、slave3 重複上述命令,然後在每個從節點執行
source /etc/profile生效。
八、Step7:配置 Hadoop2.6.5(核心步驟)
1. 上傳並解壓 Hadoop
- 將 Hadoop 安裝包(
hadoop-2.6.5.tar.gz)上傳到 master 節點的/usr/local目錄。 - 解壓並重命名(方便操作): 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. 啓動集羣
- 啓動 HDFS(分佈式存儲): bash
cd /usr/local/hadoop/sbin
./start-dfs.sh
- 啓動 YARN(分佈式計算): bash
./start-yarn.sh
3. 驗證集羣狀態
(1)查看進程(master 節點)
執行jps,應顯示以下進程:
- NameNode(HDFS 主節點)
- SecondaryNameNode(HDFS 備用主節點)
- ResourceManager(YARN 主節點)
(2)查看從節點進程(slave1 節點)
執行jps,應顯示:
- DataNode(HDFS 數據節點)
- NodeManager(YARN 數據節點)
(3)Web 界面驗證
- 打開 Windows 瀏覽器,訪問
http://master:50070(HDFS Web 界面),能看到集羣信息和 DataNode 列表。 - 訪問
http://master:8088(YARN Web 界面),能看到從節點狀態。
十、新手必看:常見問題排查
- ping master 超時:檢查 Windows 的 hosts 文件(
C:\Windows\System32\drivers\etc\hosts),添加192.168.28.140 master;關閉 master 節點防火牆(service iptables stop)。 - SSH 登錄需要密碼:重新執行
ssh-copy-id命令,確保公鑰已複製到從節點;檢查~/.ssh/authorized_keys文件權限(chmod 600 ~/.ssh/authorized_keys)。 - 50070 端口打不開:確認 NameNode 進程已啓動;檢查虛擬機網絡模式是否一致(均為僅主機模式);用 IP 直接訪問(
http://192.168.28.140:50070)。 - DataNode 啓動失敗:刪除所有節點的
/usr/local/hadoop/tmp和/usr/local/hadoop/dfs目錄,重新格式化 NameNode。
總結
搭建 Hadoop 完全分佈式集羣的核心是 “按流程操作 + 避坑”,關鍵在於虛擬機網絡配置、無密碼登錄和 Hadoop 配置文件的正確性。新手建議一步步跟着做,每完成一個步驟就驗證一次,遇到問題先看日誌(Hadoop 的 logs 目錄)或參考本文的排查方案。
集羣搭建完成後,就可以進行後續的 MapReduce 實驗、數據上傳下載等操作了。如果在操作中遇到其他問題,歡迎在評論區留言交流~