Centos mini系統下的Hadoop叢集搭建

拾得歲月盡好發表於2021-03-10

1.事前瞭解

1.1 Hadoop

百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin

Hadoop是一個由Apache基金會所開發的分散式系統基礎架構。。使用者可以在不瞭解分散式底層細節的情況下,開發分散式程式。充分利用叢集的威力進行高速運算和儲存。Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),其中一個元件是HDFS。

  • Hadoop的框架最核心的設計: HDFSMapReduce。HDFS為海量的資料提供了儲存,而MapReduce則為海量的資料提供了計算

  • Hadoop核心架構:

    • 元素:
      • Hadoop 由許多元素構成。其最底部是 Hadoop Distributed File System(HDFS),它儲存 Hadoop 叢集中所有儲存節點上的檔案。HDFS的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。
    • HDFS:
      • 對外部客戶機而言,HDFS就像一個傳統的分級檔案系統。可以建立、刪除、移動或重新命名檔案,等等。HDFS 的架構是基於一組特定的節點構建的,這是由它自身的特點決定的,這些節點包括:
        • NameNode(僅一個):它在 HDFS 內部提供後設資料服務,可以控制所有檔案操作,也作為主伺服器;
        • DataNode(若干個):它為 HDFS 提供儲存塊。
    • MapReduce:
      • MapReduce是一種程式設計模型,用於大規模資料集(大於1TB)的並行運算。概念"Map(對映)"和"Reduce(歸約)"。
    • 基本所需節點:
      • master:至少需要一個,為了防止此節點發生故障也可以弄個備份節點。此節點作為主機(主節點),主要配置NameNode和JobTracker,是整個叢集的唯一的全域性管理者,功能包括:作業管理、狀態監控和任務排程等。
      • Salve:至少需要三個,此節點作為從機,主要配置DataNode 和TaskTracker,負責分散式資料儲存以及任務的執行和任務狀態的回報。
  • 功能實現: 在Hadoop部署中,有三種伺服器角色,他們分別是客戶端、Masters節點以及Slave 節點。Master 節點,Masters 節點又稱主節點,主節點負責監控兩個核心功能:大資料儲存(HDFS)以及資料平行計算(Map Reduce)。其中,Name Node 負責監控以及協調資料儲存(HDFS)的工作,JobTracker 則負責監督以及協調 Map Reduce 的平行計算。 而Slave 節點則負責具體的工作以及資料儲存。每個 Slave 執行一個 Data Node 和一個 Task Tracker 守護程式。這兩個守護程式負責與 Master 節點通訊。Task Tracker 守護程式與 Job Tracker 相互作用,而 Data Node 守護程式則與 Name Node 相互作用。

1.2.關於CentOS

Minimal ISO
Mini版本,只有必要的軟體,自帶的軟體最少(沒有圖形化介面)
DVD ISO
標準版本安裝(伺服器安裝推薦使用,包含一些基本的軟體和圖形化介面)
Everything ISO
對完整版安裝盤的軟體進行補充,整合所有軟體(圖形化介面版)
很大,沒下過,好像有十幾個G,似乎在官方的安裝指南看到的。

2.準備

  • 以下搭建所用到的軟體和外掛的版本不一定和我一樣:
軟體/外掛 下載地址 作用
VMware Workstation Pro16 http://www.opdown.com/soft/262811.html 建立虛擬機器的工具
CentOS-7-x86_64-Minimal-2009 1.https://www.centos.org/download/ 2.https://developer.aliyun.com/mirror/ ISO映象,建立虛擬機器是要用到
xshell7 1.http://www.j9p.com/down/531725.html 2.https://www.xshellcn.com/xiazai.html 使虛擬機器操作更簡單化
jdk-8u171-linux-x64.tar 1.https://repo.huaweicloud.com/java/jdk/ 2.https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/ jdk,虛擬機器連線Xshell後要用到
hadoop-2.7.7.tar 1.https://archive.apache.org/dist/hadoop/common/ 2.http://mirror.bit.edu.cn/apache/hadoop/common/ Hadoop,後面要用到
Centos mini系統下的Hadoop叢集搭建

我的機器環境: (注意: 由於一些原因下面類容中由於自己的一些問題導致IP發生了變化,剛開始為 192.168.30.~,後面才變成了 192.168.6.~,)

機器名 IP
master.hadoop 192.168.6.10
slave1.hadoop 192.168.6.11

3.相關命令

ping www.baidu.com				//用於檢視網路是否連線
service network restaet			//重啟網路

su								//切換root使用者
vi /etc/sysconfig/network-scripts/ifcfg-ens33		//配置靜態網路

systemctl stop firewalld.service 		//停止防火牆
systemctl disable firewalld.service 	//禁止防火牆開機啟動
systemctl status firewalld.service	//檢視防火牆,下面顯示(dead)為普通顏色則關閉,綠色則啟動狀態。
firewall-cmd --state			//檢視防火牆狀態(關閉顯示:not running,開啟後顯示:running)

service iptables status 		//檢視當前系統是否安裝防火牆
yum install -y iptables			//安裝防火牆
yum install iptables-services	//安裝防火牆服務
iptables -L -n 					//檢視防火牆現有規則
systemctl enable iptables		//設定防火牆開機自啟
service iptables save			//儲存設定

service iptables start			//啟動防火牆,之後須重啟虛擬機器生效
service iptables restart		//重啟防火牆,之後須重啟虛擬機器生效
reboot 							//重啟虛擬機器		

ip addr			//檢視當前機器IP
ifconfig		//檢視當前機器IP

hostnamectl set-hostname 本機名稱		//修改本機名稱
hostname		//檢視本機名稱

ls				//檢視目錄
cd  //返回主master目錄
cd .. //返回上級目錄

yum install lrzsz -y 		//安裝rz工具
yum install rsync			//安裝拷貝檔案工具


scp /etc/opt/package/*.gz root@192.168.6.11:/etc/opt/package  //檔案拷貝複製

ssh-keygen –t rsa –P ''		//生成⽆密碼金鑰對
ssh-keygen -b 1024 -t rsa 		//生成⽆密碼金鑰對
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //追加公鑰
ssh-copy-id             //追加公鑰
passwd root 		//改密碼
rm -fr package	//刪除目錄
tail-				//檢視日誌

4.開始搭建

注意: 在進行相關配置時 按 A 鍵進入編輯模式才能向檔案裡面新增內容,配置完成後先按 Esc 鍵退出編輯模式後再次輸入 :wq(儲存並退出) 後回車退出,這個內容我下面不會再提及。

4.1網路配置(下面內容兩臺機子步驟一樣)

(1)靜態網路配置

​ 配置需要root使用者,如果不是就輸入 su 會要你輸入密碼後進入root使用者:

[root@192 ~]#su					//切換root使用者

​ 接下來按以下命令進行網路配置:

[root@192 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

​ 開啟虛擬機器上的虛擬網路編輯器,先點選更改設定,然後點選VMnet8,向檔案配置裡面按VMnet8裡面的內容填寫ip地址(注意:ip地址只設定最後位數,自己隨便設定數,比如我設定的為10),子網掩碼(不變)預設閘道器(不變),dns(注意:可設定一個,也可設定兩個,你可以設定為自己本機電腦的dns,也可設定網上的dns),

Centos mini系統下的Hadoop叢集搭建

​ 配置內容如下:

IPADDR="" 			//IP地址
NETMASK=""			//子網掩碼
GATEWAY=""			//預設閘道器
DNS1=""				//DNS
DNS2=""				//DNS

​ 結果:(注意: 配置完成後先別急著儲存,要先虛擬網路編輯器中視窗都 確定 後再檔案儲存退出,下面圖片中的閘道器中的31 應該是30)

Centos mini系統下的Hadoop叢集搭建

​ 之後重啟網路,ping 百度,看能通嗎,通了則成功,最好再ping下自己設定的IP

service network restaet			//重啟啟網路
ping www.baidu.com				/看能否ping通
Centos mini系統下的Hadoop叢集搭建

(2)關閉防火牆

systemctl stop firewalld.service 		//停止防火牆
systemctl disable firewalld.service 	//禁止防火牆開機啟動
firewall-cmd --state			//檢視防火牆狀態(關閉顯示:not running,開啟後顯示:running)
Centos mini系統下的Hadoop叢集搭建

(3)修改當前機器名

​ 在以下命令後面新增想要改的名稱,我改的名為 :master.Hadoop

hostnamectl set-hostname  master.hadoop			//修改主機名
reboot				//重啟虛擬機器檢視成功沒
hostname			//檢視本機名稱
Centos mini系統下的Hadoop叢集搭建

(4)編輯hosts檔案

hostname -i				//檢視你本機的IP,並記住
vi /etc/hosts			//進入hosts檔案

​ 需要新增的內容:(本機IP 本機名稱),(從機IP 從機名稱 )

192.168.6.10 master.hadoop
192.168.6.11 slave1.hadoop
Centos mini系統下的Hadoop叢集搭建

檢驗: 互相ping一下看是否成功

master機:ping slave1.hadoop
slave1機:ping master.hadoop
Centos mini系統下的Hadoop叢集搭建

4.2.必要安裝(slave步驟一樣)

  • 以下的安裝後面需要用到

SSH服務:用於免密登入及後面Xshell連線虛擬機器可能需要用到,及其它用處

[root@master ~]# rpm -qa | grep ssh			//檢視有沒有安裝SSH服務,如果沒有就執行下面命令
[root@master ~]# yum install openssh-server -y		//安裝SSH服務
[root@master ~]# yum install openssh-clients -y		//安裝SSH客戶
[root@master ~]# rpm –qa | grep openssh				檢視是否安裝成功

Service服務:用於啟動SSH服務,及其它用處

[root@master ~]# service sshd restart			//安裝srevice
[root@master ~]# service sshd restart			//啟動SSH
[root@master ~]# yum install net-tools			//網路配置工具

vim編輯器:使編輯檔案更方便

[root@master ~]#  yum install vim -y

安裝遠端資料同步工具:可用於拷貝等

[root@master ~]#  yum install rsync				//安裝
[root@master ~]# rpm –qa | grep rsync			//檢視

安裝rz工具:用於後面的檔案傳輸

[root@master ~]# yum install lrzsz -y 

安裝passwd工具,用於更該密碼

yum install passwd

4.3Xshell操作虛擬機器

(1)檔案傳輸(slave步驟一樣)

​ 這裡需要將剛我們開始下載的jdkHadoop包 傳入虛擬機器,為了檔案不混亂及今後方便查詢,我們需要自己在系統中新建存放相應檔案的目錄,可以自己選則,一般選在opthome目錄下,我選擇opt目錄下建立:

注意:我這次在opt目錄下建立了個 package 目錄用於存放 jdk 與 hadoop,由於後面以後需要解壓安裝兩個包,所以我順便在 opt 目錄下再建了個 module 目錄備用,用於作為以後兩個包解壓的目錄。

傳輸檔案需要輸入 rz 命令: 輸入命令後如果顯示未找到命令,則是因為沒有安裝該工具,則需要安裝;如果彈出本機資料夾,則說明有該工具,不需要安裝


[root@master ~]# rpm -qa |grep lrzsz		//檢查是否安裝rz
[root@master ~]# sudo mkdir /opt/package 	//opt目錄下建立存放jdk與hadoop包的目錄
[root@master ~]# sudo mkdir /opt/module		//opt目錄下建立解壓jdk與hadoop包的目錄
/*
檢視建立的目錄
[root@master ~]# cd /opt
[root@master opt]# ls
*/
/*
傳輸檔案
[root@master ~]# cd /opt/package		//進入package目錄
[root@master package]# rz					//開始傳輸本地檔案,選中自己要傳輸的檔案
[root@master package]# ls					//完成後進入package目錄檢視,有以下兩個檔案
-- hadoop-2.7.7.tar.gz  jdk-8u171-linux-x64.tar.gz --
*/
Centos mini系統下的Hadoop叢集搭建

(2)SSH免密登入

  • 這個主機從機一起做

​ 用於節點之間的訪問不需要每次輸入密碼,而且叢集操作的時候需要訪問許多節點,可每個節點訪問需要輸入密碼,但當叢集執行的時候不會每次都彈出輸入密碼,容易造成卡頓,導致叢集執行不通暢,所以就設定所有節點之間的免密碼訪問許可權。

  • 設定master免密自己,步驟:
/*
生成⽆密碼金鑰對:
[root@master ~]# ssh-keygen -b 1024 -t rsa 		//生成⽆密碼金鑰對,一路回車,直至出現圖形
[root@master ~]# ls
-- anaconda-ks.cfg --
[root@master ~]# ls -all
[root@master ~]# cd .ssh
[root@master .ssh]# ls			//檢視有沒有生成公鑰(id_rsa.pub),私鑰(id_rsa)
-- id_rsa  id_rsa.pub  known_hosts --
*/
/*
設定master.hadoop免密:
[root@master .ssh]# ssh-copy-id master.hadoop		//設定master.hadoop免密,期間可能會要你輸入一個 yes 和 master密碼
[root@master .ssh]# ls			//檢視,會發現多了個authorized_keys 檔案
-- authorized_keys  id_rsa  id_rsa.pub  known_hosts --
*/
/*
修改master.hadoop的 authorized_keys許可權:
[root@master .ssh]# chmod 600 ~/.ssh/authorized_keys
[root@master .ssh]# ll				//檢視
-- 總用量 16 --
--- rw-------. 1 root root 232 1月  29 13:08 authorized_keys --
*/
/*jie
設定SSH配置:
[root@master .ssh]# cd 			//回到master節點
[root@master ~]# vim /etc/ssh/sshd_config		//進入檔案修改配置
(修改類容:
	 PermitRootLogin prohibit-password禁用
	 port 22 啟動
	 PermitRootLogin yes	#啟用
	 RSAAuthentication yes # 啟⽤ RSA 認證
	 PubkeyAuthentication yes # 啟⽤公鑰私鑰配對認證⽅式
	 AuthorizedKeysFile .ssh/authorized_keys # 公鑰⽂件路徑(和上⾯⽣成的⽂件同)
)
[root@master ~]# service sshd restart		//重啟SSH服務,使配置生效
*/
[root@master ~]#  ssh master.hadoop			//驗證登入,如果登入不提示輸入密碼,則表示成功

  • 設定master免密登入slave1,步驟:

    ​ 這個大概步驟:還是先進入master的鑰匙對裡面,利用上面步驟中master為自己生成免密的方法,為slave1生成免密,然後進入slave的節點中對authorized_keys許可權的設定與SSH配置和上面相同,具體步驟如下:

    [root@master ~]# ssh-keygen -b 1024 -t rsa 		//生成⽆密碼金鑰對,一路回車,直至出現圖形
    [root@master ~]# cd ~/.ssh					//進入 .ssh檔案
    /*
    設定master對slave1免密:
    [root@master .ssh]# ssh-copy-id slave1.hadoop 		//期間可能會要你輸入一個 yes 和slave的密碼
    

*/


​		進入slave1.Hadoop節點中:

```shell
[root@slave1 ~]# ssh-keygen -b 1024 -t rsa 	//生成⽆密碼金鑰對,一路回車,直至出現圖形
[root@slave1 ~]# cd ~/.ssh				//進入 .ssh檔案
[root@slave1 .ssh]# ls					//檢視,會發現已有authorized_keys檔案,因為這是我們在master上為它生成的
-- authorized_keys  id_rsa  id_rsa.pub --
/*
修改slave1.hadoop的 authorized_keys許可權:與上面master中步驟一樣
*/
/*
設定SSH配置:與上面master中步驟一樣
*/
*/
通過master登入slave1,登入成功可以看見: [root@slave1 ~]# 個標誌
[root@master ~]#  ssh slave1.hadoop	//驗證登入,如果登入不提示輸入密碼,則表示成功
*/
  • 設定slave1免密登入master,步驟:
[root@slave1 ~]# ssh-keygen -b 1024 -t rsa 
[root@slave1 ~]# cd ~/.ssh
[root@slave1 .ssh]# ssh-copy-id master.hadoop		//免密

(3)解壓安裝jdk(slave一樣)

注意:下面我們將把 /opt/package/ 中的jdk 解壓到 /opt/module/ 中,其中module 目錄是我再前面已經建的,具體可檢視前面內容:檔案傳輸。

  • 解壓:
/*
檢視將要解藥的檔案
[root@master ~]# cd /opt/package	//進入package目錄
[root@master package]# ls			//檢視
-- hadoop-2.7.7.tar.gz  jdk-8u171-linux-x64.tar.gz --  
*/
/*
解壓:
[root@master package]#  tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/module/   //解壓到 /opt/module/ 目錄中
*/
[root@master package]# ls /opt/module		//解壓完成後檢視module有沒有
-- jdk1.8.0_171 --
  • 改名:由於後面操作會大量用到這個檔案。而由於這個檔名太長,所以我們把 檔名 jdk1.8.0_171 改為 jdk1.8
[root@master package]# cd 		//回到主目錄
[root@master ~]# cd /opt/module		//進入module目錄
[root@master module]# mv jdk1.8.0_171/ jdk1.8		//改名
[root@master module]# ls		//檢視
-- jdk1.8 --

  • 配置JDK環境變數:
/*
獲取jdk路徑:
[root@master module]# cd jdk1.8		//進入jdk1.8目錄
[root@master jdk1.8]# pwd			//檢視目錄結構,並記住
-- /opt/module/jdk1.8 --
*/
/*
進入profile檔案,新增jdk環境變數:
[root@master jdk1.8]# cd 		//回到主目錄
[root@master ~]# sudo vim /etc/profile		//進入檔案
*/

在 profile 檔案末尾新增 JDK 路徑,我的新增內容如下:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8    
export PATH=$PATH:$JAVA_HOME/bin
Centos mini系統下的Hadoop叢集搭建
  • 使檔案立即生效:
[root@master ~]# source /etc/profile		//使檔案立即生效
[root@master ~]# java -version		//測試jdk是否安裝成功,即下面出現版本號
-- java version "1.8.0_171" --

(4)Hadoop叢集安裝搭建(slave1一樣)

1.解壓和環境變數

  • 解壓安裝Hadoop:

    • 解壓:

      /*
      檢視將要解藥的檔案
      [root@master ~]# cd /opt/package	//進入package目錄
      [root@master package]# ls			//檢視
      -- hadoop-2.7.7.tar.gz  jdk-8u171-linux-x64.tar.gz --  
      */
      /*
      解壓:
      [root@master package]#  tar -zxvf hadoop-2.7.7.tar.gz -C /opt/module/   //解壓到 /opt/module/ 目錄中
      */
      [root@master package]# ls /opt/module		//解壓完成後檢視module有沒有,可以看見多了個檔案
      -- hadoop-2.7.7  jdk1.8 --
      
    • 改名:為了後面操作簡單點

      [root@master package]# cd 		//回到主目錄
      [root@master ~]# cd /opt/module		//進入module目錄
      [root@master module]# mv hadoop-2.7.7/ hadoop2.7		//改名
      [root@master module]# ls		//檢視
      -- hadoop2.7  jdk1.8 --
      
    • 配置Hadoop環境變數:

      /*
      獲取Hadoop路徑:
      [root@master module]# cd hadoop2.7		//進入Hadoop2.7目錄
      [root@master jdk1.8]# pwd			//檢視目錄結構,並記住
      -- /opt/module/hadoop2.7 --
      */
      /*
      進入profile檔案,新增jdk環境變數:
      [root@master jdk1.8]# cd 		//回到主目錄
      [root@master ~]# sudo vim /etc/profile		//進入檔案
      */
      

      在 profile 檔案末尾新增 Hadoop 路徑,我的新增內容如下:

      ##HADOOP_HOME
      export HADOOP_HOME=/opt/module/hadoop2.7
      export PATH=$PATH:$HADOOP_HOME/bin
      export PATH=$PATH:$HADOOP_HOME/sbin
      
    Centos mini系統下的Hadoop叢集搭建
    • 使檔案立即生效:

      [root@master ~]# source /etc/profile		//使配置檔案立即生效
      [root@master ~]# hadoop version		//測試Hadoop是否安裝成功,即下面出現版本號
      -- Hadoop 2.7.7 --
      

2.Hadoop目錄結構

  • 首先檢視一下我沒在Hadoop中需要了解的目錄結構:
[root@master ~]# ll /opt/module/hadoop2.7	//檢視解壓的 Hadoop包生成的目錄下的結構
Centos mini系統下的Hadoop叢集搭建

其中重要目錄:

目錄 作用
bin 存放對 Hadoop 相關服務(HDFS,YARN)進行操作的指令碼
etc Hadoop 的配置檔案目錄,存放 Hadoop 的配置檔案
lib 存放 Hadoop 的本地庫(對資料進行壓縮解壓縮功能)
sbin 存放啟動或停止 Hadoop 相關服務的指令碼
share 存放 Hadoop 的依賴 jar 包、文件、和官方案例

3.配置

注意:下面 slaves 配置是master主機特有

3.1配置hadoop-env.sh:
[root@master ~]#  vim /opt/module/hadoop2.7/etc/hadoop/hadoop-env.sh	//進入

​ 編輯內容:向檔案中 export JAVA_HOME= 後面新增 jdk 的安裝路徑


export JAVA_HOME=/opt/module/jdk1.8
Centos mini系統下的Hadoop叢集搭建
3.2配置 core-site.xml (核心元件):
  • 需要先在 opt/module/hadoop2.7 目錄下建立一個tmp目錄
/*
建立目錄:
[root@master ~]# sudo mkdir /opt/module/hadoop2.7/tmp		//建立tmp目錄
[root@master ~]# ls /opt/module/hadoop2.7					//檢視目錄
-- bin  include  libexec      NOTICE.txt  sbin   tmp 
etc  lib      LICENSE.txt  README.txt  share --
*/
[root@master ~]#  vim /opt/module/hadoop2.7/etc/hadoop/core-site.xml	//進入檔案

​ 需要在 【 】中新增以下內容:

<!-- 指定 HDFS 中 NameNode 的地址 -->
<!-- 預設節點(寫自己主機的ip)埠,埠預設為9000 -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://192.168.6.10:9000</value>
</property>
<!-- 指定 Hadoop 執行時產生檔案的儲存目錄 -->
<!-- hdfs的臨時檔案的目錄***這個要記好,後面初始化錯誤可能會用到***  -->
<property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/module/hadoop2.7/tmp</value>
   <description>Abase for other temporary directories.</description>
</property>
Centos mini系統下的Hadoop叢集搭建
3.3配置 hdfs-site.xml(檔案系統):
  • 需要先在tmp目錄下再建立個 name 和 data m目錄
/*
建立目錄:
[root@master ~]# sudo mkdir /opt/module/hadoop2.7/tmp/name	//建立name目錄
[root@master ~]# sudo mkdir /opt/module/hadoop2.7/tmp/data	//建立data目錄
[root@master ~]# ls /opt/module/hadoop2.7/tmp					//檢視目錄
-- data  name --
*/
[root@master ~]#  vim /opt/module/hadoop2.7/etc/hadoop/hdfs-site.xml	//進入檔案

​ 需要在 【 】中新增以下內容:

<!-- 設定資料塊應該被複制的份數(和叢集機器數量相等,目前只有2個,以後有幾臺就填幾臺) -->
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>

<!-- namenode備用節點,目前只有一個填主機的IP地址  -->
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>192.168.6.10:50090</value>
</property>

<!--指定NameNode執行產生的檔案儲存目錄-->
<property>
  <name>dfs.namenode.name.dir</name>
  <value>/opt/module/hadoop2.7/tmp/name</value>
</property>

<!--指定DataNode執行產生的檔案儲存目錄-->
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/opt/module/hadoop2.7/tmp/data</value>
</property>
Centos mini系統下的Hadoop叢集搭建
3.4配置 mapred-site.xml.template 檔案(計算框架檔案):
  • 首先將 mapred-site.xml.template 檔案改名為 mapred-site.xml
/*
檔案改名:
[root@master ~]# cd /opt/module/hadoop2.7/etc/hadoop	//進入目標所在目錄
[root@master hadoop]# mv mapred-site.xml.template mapred-site.xml	//改名
[root@master hadoop]# ls		//檢視有沒有 mapred-site.xml 檔案
[root@master hadoop]# cd 		//返回主目錄
*/
[root@master ~]#  vim /opt/module/hadoop2.7/etc/hadoop/mapred-site.xml	//進入

​ 需要在 【 】中新增以下內容:

<!--配置JobTracker的地址和埠-->
<property>
<name>mapred.job.tracker</name>
<value>http://master.hadoop:9001</value>
</property>

<!-- mapreduce的工作模式:yarn -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<!-- mapreduce的工作地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master.hadoop:10020</value>
</property>

<!-- web頁面訪問歷史服務埠的配置 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master.hadoop:19888</value>
</property>
Centos mini系統下的Hadoop叢集搭建
3.5配置 yarn-site.xml 檔案:
[root@master ~]#  vim /opt/module/hadoop2.7/etc/hadoop/yarn-site.xml

​ 需要在 【 】中新增以下內容:一般情況下只新增前兩個就行

<!-- reducer獲取資料方式 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<!--客戶端通過該地址向RM提交應用程式,殺死應用程式等。-->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>master.hadoop</value>
</property>
<!--ApplicationMaster通過該地址向RM申請資源、釋放資源等。-->
<property>
	<name>yarn.resourcemanager.scheduler.hostname</name>
	<value>master.hadoop</value>
</property>
<!--NodeManager通過該地址向RM彙報心跳,領取任務等。-->
<property>
	<name>yarn.resourcemanager.resource-tracker.hostname</name>
	<value>master.hadoop</value>
</property>
!--管理員通過該地址向RM傳送管理命令等。-->
<property>
	<name>yarn.resourcemanager.admin.hostname</name>
	<value>master.hadoop</value>
</property>
<!--使用者可通過該地址在瀏覽器中檢視叢集各類資訊-->
<property>
	<name>yarn.resourcemanager.webapp.hostname</name>
	<value>master.hadoop</value>
</property>
<!-- 日誌聚集功能使用 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 日誌保留時間設定7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
Centos mini系統下的Hadoop叢集搭建
3.6配置 slaves 檔案:(Master主機特有
[root@master ~]# vim /opt/module/hadoop2.7/etc/hadoop/slaves

​ 配置類容:

瞭解:偽分散式時:slaves檔案中master主機即作為 NameNode ,也作為DataNode;而完全分散式時:master主機作為 NameNode ,slave1 從機作為DataNode。所以下面我們需要寫入從機名

slave1.hadoop
Centos mini系統下的Hadoop叢集搭建
3.7配置masters檔案:
[root@master ~]# vim /opt/module/hadoop2.7/etc/hadoop/masters

​ 配置內容:masters這是一個新檔案,我們只再裡面新增自己的主機IP

192.168.6.10
Centos mini系統下的Hadoop叢集搭建

(5)遠端複製(推薦)

  • 原因:
    • 我們已經完成了master主機的Hadoop檔案配置,所以現在需要去為slave1從機配置Hadoop檔案
      • 方法一:根據當前slave1實際情況,且按照上面master的方法為slave1配置
      • 方法二:將配置好的master主機下的 /opt/module/hadoop2.7/ 下的所有檔案克隆到slave1下的 /opt/module/hadoop2.7 檔案下
    • 而方法二是相對方便的,所以我選則的時採用方法二的方
  • 克隆:方法二注意:按自己的目錄結構進行遠端複製
[root@master ~]# scp -r /opt/module/hadoop2.7/* root@192.168.6.11:/opt/module/hadoop2.7
  • master 檔案複製到slave1後,slave1中由於主機名和IP等與master不同,所以需要對slave1中的配置進行稍微改動
Centos mini系統下的Hadoop叢集搭建

改動如上圖下文:

檔案 改動
hadoop-evn.sh 檢視jdk路徑是否是本機的路徑
core-site.xml 將裡面的master的 IP 改為本機的 IP
hdfs-site.xml 將裡面的master的 IP 改為本機的 IP
mapred-site.xml 將裡面master的主機名改為當前主機名
yarn-site.xml 將裡面master的主機名改為當前主機名
slaves(master特有) 去掉裡面的slave1從機的主機名
masters 去掉裡面master 的IP
slave1 向裡面新增本機的IP

5.啟動叢集

5.1格式化HDFS檔案系統(slave1一樣)

  • 第一次啟動時格式化,以後就不要總格式化
  • 這裡如果安裝的時候多次初始化,會導致錯誤,解決方法是刪除/opt/hadoop目錄下的tmp檔案
[root@master ~]# hdfs namenode -format

5.2.啟動(slave1一樣)

[root@master ~]# start-all.sh	//啟動
[root@master ~]# jps			//檢視

master:jps

**slave1: **jps

檢視web網頁:

http://192.168.6.10:50070

Centos mini系統下的Hadoop叢集搭建

5.3關閉叢集

stop-all.sh

相關文章