提示:如果還不瞭解Hadoop的,可以下查看這篇文章Hadoop生態系統,通過這篇文章,我們可以首先大致瞭解Hadoop及Hadoop的生態系統中的工具的使用場景。
搭建一個分佈式的hadoop集羣環境,下面是詳細步驟,使用cdh5 。
一、硬件準備
基本配置:
操作系統 |
64位 |
CPU |
(英特爾)Intel(R) I3處理器 |
內存 |
8.00 GB ( 1600 MHz) |
硬盤剩餘空間 |
50G |
流暢配置:
操作系統 |
64位 |
CPU |
(英特爾)Intel(R) I5處理器或以上配置 |
內存 |
16.00 GB ( 1600 MHz) |
硬盤剩餘空間 |
100G |
注意:上面是在單個pc機上搭建集羣,所以對內存要求較高。若是在多臺pc機上搭建集羣環境,則只需要內存足夠即可。
二、軟件環境準備
這篇文章是搭建CDH5集羣環境,以上軟件可以在此網址下載
三、主機規劃
由於我們要安裝5個節點的集羣環境,所以我們分配好ip地址和主機功能
|
CDHNode1
/192.168.3.188
|
CDHNode2
/192.168.3.189
|
CDHNode3
/192.168.3.190
|
CDHNode4
/192.168.3.191
|
CDHNode5
/192.168.3.192
|
namenode
|
是
|
是
|
否
|
否
|
否
|
datanode
|
否
|
否
|
是
|
是
|
是
|
resourcemanager
|
是
|
是
|
否
|
否
|
否
|
journalnode
|
是
|
是
|
是
|
是
|
是
|
zookeeper
|
是
|
是
|
是
|
否
|
否
|
注意:Journalnode和ZooKeeper保持奇數個,最少不少於 3 個節點。具體原因,以後詳敘。
我的主機分配情況是在兩臺pc的虛擬機上安裝centos系統,具體分配情況如下:
|
CDHNode1 |
CDHNode2 |
CDHNode3 |
CDHNode4 |
CDHNode4 |
PC1 |
是 |
|
是 |
|
|
PC2 |
|
是 |
|
是 |
是 |
這樣分配的原因是爲了採用HA時,兩臺namenode在不同pc上,若有一臺pc出現異常,導致一個namenode無法運作,而standy namenode(備用namenode)可以active(激活),而不會影響整個集羣的運作。
三、詳細安裝步驟
我們首先在1個主機(CHDNode1/192.168.3.188)上安裝centos6.5操作系統,使用root用戶配置網絡,創建hadoop用戶,關閉防火牆,安裝一些必備軟件。爲記下來的集羣軟件安裝做準備。
CentOS6.5安裝
在主機CHDNode1/192.168.3.188,安裝CentOS6.5操作系統。詳細安裝步驟可以查看CentOS安裝這篇文章。此處就不再贅敘。
網絡配置
1.打開安裝好的CentOS虛擬機CDHNode1
2、登錄CentOS系統
3.輸入ifconfig命令,先查看ip地址
4、這個時候我們發現除了迴環地址以外,我們並不能和外界通信,比如我們可以使用ping命令進行測試。
注意:ping 127.0.0.1時,結束icmp報文,使用Ctrl+C命令
第一次ping 百度,ping不通,說明虛擬機無法連接外網
第二次ping 虛擬機NAT網關,ping不通
注:虛擬機網關查看方法
點擊虛擬機網絡編輯器,點擊VMnet8
點擊Nat設置
第三次ping物理機ip地址,ping不通
注:查看物理機IP地址,開啓cmd.exe ,輸入ipconfig
第四次ping虛擬機的迴環地址,ping成功,說明虛擬機的網絡協議是正確的
5、修改網卡的配置文件
可以看到虛擬機網卡沒有開啓,因此修改ONBOOT=yes,然後保存退出(按Esc鍵,然後輸入:wq)
6、重啓網絡服務
7、再次輸入ifconfig命令,查看ip地址。
注意:我的虛擬機設置的是橋接模式,所以ip地址是192.168.2.X網段,或192.168.3.X網段;因爲橋接模式是直接使用物理網卡,而我的物理主機的網關是192.168.0.1,子網掩碼是255.255.252.0,所以我的虛擬機ip地址可以在192.168.0.2-192.168.3.255之間任意選擇(除了物理主機的ip)。若你的虛擬機是使用nat模式,可能就是,如:以我的虛擬機爲例,nat網關是192.168.117.2,子網掩碼爲255.255.255.0,所以虛擬機的ip地址可以在192.168.117.3-192.168.117.255之間任意選擇。
此時網卡已經成功開啓。
8.再次ping步驟4的ip或域名,查看具體情況
檢查本機網絡協議
檢查網卡鏈路
檢查Nat網關
檢查外網
此時虛擬機連接互聯網成功,但使用dhcp(動態主機配置協議)配置ip地址,此時的IP地址時動態生成的,不方便以後hadoop集羣環境的搭建。所以我們還需要配置靜態Ip地址,配置詳情,下面細說。
9、使用ifconfig命令可以查看動態ip地址爲192.168.3.188,所以接下來我們把此ip作爲CDHNode1的靜態ip地址。注:你可以使用你的動態ip作爲你當前主機的靜態ip。然後後面幾臺IP地址可以緊跟着設置成,如192.168.3.189。DHCP生成ip地址是隨機的,你可具體問題具體分析。
10、修改網卡配置信息,把BOOTPROTO=dhcp修改爲BOOTPROTO=static,並且添加上設置的ip地址,子網掩碼,和網關。
注意:由於我是在兩臺pc上配置集羣環境,所以我使用的是橋接模式。若你是在一臺主機上建議你使用Nat(網絡地址轉換)模式。因爲nat模式的網關在不同的電腦上虛擬機VMWare虛擬出來的網段是不同的。不方便使用Xshell連接。
下面是橋接模式的配置,IPADDR是設置ip地址,NETMASK(子網掩碼)與GATEWAY(網關)可以設置成與物理主機一樣的NETMASK(子網掩碼)與GATEWAY(網關)。注:物理主機ip配置具體查看,看上面的步驟4。
下面是Nat模式的配置,IPADDR是設置ip地址,NETMASK(子網掩碼)與GATEWAY(網關)可以設置成與物理主機一樣的NETMASK(子網掩碼)與GATEWAY(網關)。注:Nat模式ip配置具體查看,看上面的步驟4。
上面步驟中我們可以看到Nat模式的網關是192.168.117.2,子網掩碼爲255.255.255.0
所以具體可配置成
BOOTPROTO=static
IPADDR=192.168.117.40
NETMASK=255.255.255.0
GATEWAY=192.168.117.2
最後按Esc,然後:wq保存退出。(注意編輯按i或a即可進入編輯模式,具體操作查看vi命令的使用說明)
11、重啓網絡服務
至此網絡配置完畢。
下載必備軟件
注:1、在CDHNode1節點上安裝,使用yum命令 ,參數-y表示,下載過程中的自動回答yes,有興趣的話,可以試試不加的情況;install表示從網上下載安裝。
2、使用yum命令安裝軟件必須是root用戶。
1、安裝lrzsz,可以方便在Xshell上,上傳和下載文件,輸入rz命令,可以上傳文件,sz命令可以從遠程主機上下載文件到本地。
2、安裝ssh服務器。
3、安裝ssh客戶端。
用戶創建戶
1、使用useradd命令添加用戶hadoop,並同時創建用戶的home目錄,關於useradd的參數使用可以使用 useradd -h查看參數
2、可以切換到/home目錄下查看,是否創建成功
3、爲hadoop用戶創建密碼,這是爲了接下來使用XShell軟件遠程連接CDHNode1節點做準備,出現successfully表示創建密碼成功,注意:密碼創建必須是root用戶。
4、可以切換到hadoop用戶,使用 su命令,可以看到,此時root@CDHNode1已經改成hadoop@CDHNode1。
5、從hadoop用戶退出,使用exit命令
克隆虛擬機
由於我們使用VMware創建的Centos虛擬機,所以我們可以直接克隆虛擬機,就減少了安裝的時間,提高效率。
若你是在一臺pc機上配置集羣環境,就可以按照以下步驟連續克隆出四個虛擬機分別是CDHNode2、CDHNode3、CDHNode4、CDHNode5;我是在兩個pc機上配置的所以,我就需要在另一臺pc上重新按照第一臺pc機上安裝CDHNode1一樣,再安裝CDHNode2,然後從CDHNode2克隆CDHNode4、CDHNode5。
下面我以在CDHNode2上克隆出CDHNode5虛擬機爲例,演示以下克隆的步驟。
1、右鍵CDHNode2虛擬機--》快照--》拍攝快照
2、點擊拍攝快照,快照拍攝成功
3、再右鍵CDHNode2虛擬機--》管理--》克隆
4、下一步
5、選擇現有快照--》下一步
6、選擇創建完整克隆--》下一步
7、輸入虛擬機名稱,點擊完成,等待克隆完成。
8、至此我們完成了克隆虛擬機的任務
9、接下來是修改配置虛擬機的網卡信息,下面我們在CDHNode5爲例,其他節點自己按照下面的自行配置。
首先打開CDHNode5,此時顯示的主機名稱爲CDHNode2,因爲CDHNode5是從CDHNode2克隆來的,所以主機名稱還是CDHNode2。
10、暫時不該主機名,我們先查看一下,此時顯示沒有網卡
11、克隆後的網卡變成了eth1,如果想改回eth0,則需要修改配置文件70-persistent-net.rules配置文件
11、我們先設置行號輸入:set number,我們需要修改第8行和第11行,然後輸入i或a進入編輯模式,使用#註釋第8行,並把第10行的eth1改爲eth0,可以記一下第二個網卡的mac硬件地址
12、我們先移除網卡e1000,使用modprobe -r e1000命令
13、重新安裝網卡e000
14、修改網卡配置信息
15、把設備號修改爲DEVICE=eth0,先註釋掉mac地址(硬件地址),在修改ip地址。
16、重啓網絡服務
注意:如果不正確,ip已經被使用,可以重新設置成其他的ip地址,按照以上方式配置。
17、接下來是修改主機名,把CDHNode2改成CDHNode5
18、重啓主機後,就可以看到主機名的變成CDHNode5。
19、由於我們註釋了mac地址,所以我們開改成新的mac地址,首先使用ifconfig查看新的mac地址,記住下面地址,
20、進入ifcfg-eth0文件,修改HWaddr,改爲剛纔查看的mac地址
再使用service network restart命令重啓網絡服務。至此配置完畢,最後按Esc,然後:wq保存退出。
接下來在其他節點上進行相應的配置。
配置host文件
在5個節點上分別配置hosts文件,注意使用root用戶配置
最後按Esc,然後:wq保存退出。
關閉防火牆
在所有節點上使用root用戶,關閉防火牆。由於要使用ssh協議來進行主機間的無密碼訪問,所以需要關閉防火牆。
1、首先查看防火牆的狀態,顯示防火牆正在運行
2、然後永久關閉防火牆,使用chkconfig iptables off命令,此時當前虛擬機的防火牆還沒有關閉。只有在關機重啓後才能生效。
3、關閉ipv6的防火牆
4、也可以使用service iptables stop命令,暫時關閉當前主機的防火牆。
5、關閉selinux
將其SELINUX=enforcing設置爲SELINUX=disabled
最後按Esc,然後:wq保存退出。
時間同步
當我們每一次啓動集羣時,時間基本上是不同步的,所以需要時間同步。要求所以節點保持一致的時間。
注意:使用root用戶修改,5個節點同時修改
1、我們先使用date命令查看當前系統時間
如果系統時間與當前時間不一致,可以按照如下方式修改
2、查看時區設置是否正確。我們設置的統一時區爲Asia/Shanghai,如果時區設置不正確,可以按照如下步驟把當前時區修改爲上海。
3、下面我們使用ntp(網絡時間協議)同步時間。如果ntp命令不存在,則需要在線安裝ntp
4、安裝ntp後,我們可以使用ntpdate命令進行聯網時間同步。
5、最後我們在使用date命令查看,時間是否同步成功。
注意:在橋接模式下,上述同步時鐘的方法行不通。換一下方法,我們使用手動配置時間,在xshell中,全部xshell會話的方式的方式同時更改所有節點。
a、使用date查看時間
b、設置日期,比如設置成2016年5月20日
c、設置時間,比如設置成下午1點48分45秒
d、最後將當前時間和日期寫入BIOS,避免重啓後失效
使用Xshell遠程連接centos系統
由於在centos中複製修改等操作方便,我們使用windows上的一款遠程連接工具Xshell,下面簡單講一下連接步驟。你需要先從網上下載安裝Xshell和Xftp(可以用來可視化的文件傳輸)這兩款工具。
連接步驟如下,以連接CDHNode1爲例。
1、首先點擊新建按鈕,如下;在新建會話屬性對話框中輸入名稱和需要連接的主機ip地址。
2、接下來點擊左側的用戶身份驗證,輸入要登錄主機的用戶名和密碼,點擊確定,此時創建成功。
3、在打開會話對話框中選中剛創建的CDHNode1,然後點擊連接
4、此時連接成功,即可進行遠程操作
5、爲了以後方便打開遠程主機,我們可以把當前連接的主機添加到鏈接欄中,只需點擊添加到鏈接欄按鈕即可添加
6、爲了防止一個命令在多個主機中輸入,我們也可以使用撰寫欄,快速的把一個命令傳送到所以打開的會話框。提示:撰寫欄可以在查看菜單欄中打開。
配置免密碼登錄ssh
接上面的配置,我們已經使用Xshell遠程登錄上五個節點。下面我們就配置免密碼登錄hadoop用戶,如果你使用root用戶登錄的,需要先切換到hadoop用戶,使用 su hadoop命令切換。步驟如下:
1、首先切換到hadoop的家目錄下,使用cd /home/hadoop命令來切換。然後在hadoop家目錄下創建 .ssh目錄。
2、然後生成hadoop用戶的rsa(非對稱加密算法),運行如下命令後,一直回車,即可生成hadoop的公鑰和私鑰
3、切換到 .ssh目錄下,即可看到已經生成的公鑰和私鑰。
4、按照上面的步驟,在所有節點上生成公鑰和私鑰,接下來需要把所有節點的公鑰發到CDHNode1節點的授權文件。如下圖,我們使用Xshell最下方的撰寫欄向所有節點發送ssh-copy-id CDHNode1命令。
5、執行結果如下,每個節點包括CDHNode1節點,都把自己剛纔生成的公鑰 id_rsa.pub文件發送到CDHNode1節點的授權文件authorized_keys中。
注意:也可以在所有節點使用
cat ~/.ssh/id_rsa.pub | ssh hadoop@CDHNode1 'cat >> ~/.ssh/authorized_keys' 命令把自己的公鑰追加到CDHNode1節點的授權文件authorized_keys中。
6、可以查看CDHNode1節點的授權文件authorized_keys中是否把所有節點的公鑰都添加到此文件中,若有節點沒有加入,則可以使用上一步命令重新添加。
7、然後我們就把這個文件拷貝到其他節點的.ssh目錄下。
CDHNode4、CDHNode5按照上述命令自己執行。注意,這個命令是在CDHNode1節點上執行的。
8、根據下圖,可以看到CDHNode5下已經複製了一份authorized_keys文件。下面以CDHNode5爲例,修改.ssh目錄以及.ssh目錄下的文件的權限。其他節點按照如下步驟
一 一 修改。
9、修改好權限後,至此ssh配置成功,可以使用ssh測試是否配置成功,第一次使用ssh連接其他節點時需要輸入yes,退出使用exit命令,在第二次登陸時,就不需要在輸入,如下圖直接登陸並顯示最後登錄時間。
提示:rsa非對稱加密算法是把公鑰發送個對方,對方使用公鑰對數據進行加密後,自己在使用私鑰對數據進行解密。
免密碼登錄的原理:
- 需要依靠密鑰,也就是自己創建的一對密鑰,並把公鑰放到需要訪問的服務器上。
- 如果你需要連接SSH服務器,客戶端軟件就會向服務器發出請求,請求用你的密鑰進行安全驗證。
- 服務器收到請求後,現在該服務器上的主目錄下尋找你的公鑰,然後把它和你發送過來的公鑰進行比較。如果兩個密鑰一致,服務端就用公鑰加密“質詢”(challenge),並把它發送給客戶端軟件。
- 客戶端收到“質詢”後,就用你的私鑰進行解密。再把它發送個服務器。
- 服務器比較發送來的“質詢”和原先的是否一致,如果一致則進行授權,完成建立會話的操作。
腳本工具的使用
此處使用腳本文件的目的是爲了簡化安裝步驟,畢竟有五個節點,如果全部使用命令一個一個操作,太費時費力了。爲了簡化操作,我們使用腳本文件來幫助我們執行多個重複的命令。就就相當於windows的批處理,把所有的命令集中起來,一個命令完成多個操作。
下面我們在CDHNode1節點上新建三個文件,deploy.conf(配置文件),deploy.sh(實現文件複製的shell腳本文件),runRemoteCdm.sh(在遠程節點上執行命令的shell腳本文件)。
1、我們把三個文件放到/home/hadoop/tools目錄下,先創建此目錄
-
[hadoop@CDHNode1 ~]$ mkdir /home/hadoop/tools
2、然後切換到tools目錄下
[hadoop@CDHNode1 ~]$cd tools
3、首先創建deploy.conf文件
-
[hadoop@CDHNode1 tools]$ vi deploy.conf
-
CDHNode1,all,zookeeper,journalnode,namenode,resourcemanager,
-
CDHNode2,all,slave,zookeeper,journalnode,namenode,datanode,resourcemanager,
-
CDHNode3,all,slave,zookeeper,journalnode,datanode,nodemanager,
-
CDHNode4,all,slave,journalnode,datanode,nodemanager,
-
CDHNode5,all,slave,journalnode,datanode,nodemanager,
先解釋一下這個文件,這個文件就是配置在每個幾點上的功能,就是上面所講的主機規劃。比如zookeeper安裝在CDHnode1、CDHnode2、CDHnode3這三個主機上。其他的自己對比查看。
4、創建deploy.sh文件
-
[hadoop@CDHNode1 tools]$ vi deploy.sh
-
#!/bin/bash
-
#set -x
-
-
#判斷參數是否小於3個,因爲運行deploy.sh需要有源文件(或源目錄)和目標文件(或目標目錄),
-
#以及在MachineTag(哪些主機)上執行,這個標記就是上面deploy.conf中的標記 ,如 zookeeper、all等
-
#使用實例如:我們把app目錄下的所有文件複製到遠程標記爲zookeeper的主機上的/home/hadoop/app目錄下
-
# ./deploy.sh /home/hadoop/app /home/hadoop/app zookeeper
-
#執行完上述命令後,shell腳本文件就自動把CDHNode1下的app目錄中的文件複製到三個zookeeper節點的app目錄下
-
if [ $# -lt 3 ]
-
then
-
echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"
-
echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"
-
exit
-
fi
-
#源文件或源目錄
-
src=$1
-
#目標文件或目標目錄
-
dest=$2cat
-
#標記
-
tag=$3
-
-
#判斷是否使用deploy.conf配置文件,或者自己指定配置文件
-
-
if [ 'a'$4'a' == 'aa' ]
-
then
-
confFile=/home/hadoop/tools/deploy.conf
-
else
-
confFile=$4
-
fi
-
-
#判斷配置文件是否是普通文本文件
-
if [ -f $confFile ]
-
then
-
#判斷原件是普通文件還是目錄
-
if [ -f $src ]
-
then
-
#如果是普通文件就把解析出標記對應的主機名的ip
-
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
-
do
-
scp $src $server":"${dest} #使用循環把文件複製到目標ip上的相應目錄下
-
done
-
elif [ -d $src ]
-
then
-
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
-
do
-
scp -r $src $server":"${dest}
-
done
-
else
-
echo "Error: No source file exist"
-
fi
-
-
else
-
echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
-
fi
5、創建 runRemoteCmd.sh 腳本文件
-
[hadoop@CDHNode1 tools]$ vi runRemoteCmd.sh
-
#!/bin/bash
-
#set -x
-
#判斷參數個數
-
#實例如:顯示所有節點的java進程,中間用引號的就是命令,這個命令將在所以節點上執行
-
#./runRemoteCmd.sh "jps" all
-
if [ $# -lt 2 ]
-
then
-
echo "Usage: ./runRemoteCmd.sh Command MachineTag"
-
echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile"
-
exit
-
fi
-
-
cmd=$1
-
tag=$2
-
if [ 'a'$3'a' == 'aa' ]
-
then
-
-
confFile=/home/hadoop/tools/deploy.conf
-
else
-
confFile=$3
-
fi
-
-
if [ -f $confFile ]
-
then
-
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
-
do
-
echo "*******************$server***************************"
-
ssh $server "source /etc/profile; $cmd"
-
# 注意在使用的時候要根據自己設置的環境變量的配置位置,給定相應的source源 ,
-
# 如 我把環境變量設/home/hadoop/.bash_profile文件下,就需要上面這條命令改爲
-
# ssh $server "source /home/hadoop/.bash_profile;$cmd"
-
#上面的例子:這條命令就是在遠程標記爲tag的主機下執行這個命令jps。
-
done
-
else
-
echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
-
fi
6、給腳本文件添加執行權限。
-
[hadoop@CDHNode1 tools]$chmod u+x deploy.sh
-
[hadoop@CDHNode1 tools]$chmod u+x runRemoteCmd.sh
7、把tools目錄添加到環境變量PATH中。
-
[hadoop@CDHNode1 tools]$vi /home/hadoop/.bash_profile
添加下面內容
-
#tools
-
export PATH=$PATH:/home/hadoop/tools
8、是環境變量及時生效
-
[hadoop@CDHNode1 tools]$source /home/hadoop/.bash_profile
9、在CDHNode1節點上,通過runRemoteCmd.sh腳本,一鍵創建所有節點的軟件安裝目錄/home/hadoop/app。
-
[hadoop@CDHNode1 tools]$ runRemoteCmd.sh "mkdir /home/hadoop/app" all
我們可以在所有節點查看到/home/hadoop/app目錄已經創建成功。
我們先來說一下軟件的安裝步驟:
對於解壓安裝的軟件,安裝步驟爲:
- 使用rz命令上傳要安裝的文件,此命令只能在遠程連接工具xshell上執行,不能再centos虛擬機上執行
- 使用tar -zxvf softwarename.tar.gz
- 修改配置文件(根據需要而定,有時可省略)
- 在環境變量文件中配置環境變量
- 使用source 是環境變量文件即時生效。
安裝JDK
首先在CDHNode1上安裝jdk,然後複製到其他節點。
1、上傳使用rz後,找到下載的jdk文件(jdk-7u79-linux-x64.tar.gz )即可,選擇後就可以上傳,上傳需要時間。
-
[hadoop@CDHNode1 ~]$cd /home/hadoop/app
-
-
[hadoop@CDHNode1 app]$ rz //選擇本地的下載好的jdk-7u79-linux-x64.tar.gz
2、解壓jdk-7u79-linux-x64.tar.gz
-
[hadoop@CDHNode1 app]$ tar zxvf jdk-7u79-linux-x64.tar.gz //解壓
3、修改jdk的名字,刪除上傳的壓縮文件jdk-7u79-linux-x64.tar.gz
-
[hadoop@CDHNode1 app]$ mv jdk1.7.0_79 jdk
-
[hadoop@CDHNode1 app]$ rm -rf jdk-7u79-linux-x64.tar.gz //刪除安裝包
4、配置環境變量
-
[hadoop@CDHNode1 app]$vi /home/hadoop/.bash_profile
添加
-
#java
-
export JAVA_HOME=/home/hadoop/app/jdk
-
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
-
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
5、使環境變量文件即時生效
-
[hadoop@CDHNode1 app]$source /home/hadoop/.bash_profile
6、查看是否安裝成功,查看Java版本
-
[hadoop@CDHNode1 app]# java -version
-
java version "1.7.0_79"
-
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
-
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
出現以上結果就說明CDHNode1節點上的jdk安裝成功。 然後將CDHNode1下的jdk安裝包複製到其他節點上。
-
[hadoop@CDHNode1 app]$ deploy.sh jdk /home/hadoop/app/ slave
CDHNode2、CDHNode3、CDHNode4、CDHNode5加點重複CDHNode1上的jdk配置即可。就是在其他節點上從第4步開始配置。
安裝Zookeeper
首先在CDHNode1上安裝Zookeeper,然後複製到其他節點。
1、將本地下載好的zookeeper-3.4.6.tar.gz安裝包,上傳至CDHNode1節點下的/home/hadoop/app目錄下。
-
[hadoop@CDHNode1 app]$ rz //選擇本地下載好的zookeeper-3.4.6.tar.gz
2、解壓zookeeper-3.4.6.tar.gz
-
[hadoop@CDHNode1 app]$ tar zxvf zookeeper-3.4.6.tar.gz //解壓
3、修改zookeeper的名字,刪除上傳的壓縮文件zookeeper-3.4.6.tar.gz
-
[hadoop@CDHNode1 app]$ rm -rf zookeeper-3.4.6.tar.gz //刪除zookeeper-3.4.6.tar.gz安裝包
-
[hadoop@CDHNode1 app]$ mv zookeeper-3.4.6 zookeeper //重命名
4、修改Zookeeper中的配置文件。
[hadoop@CDHNode1 app]$ cd /home/hadoop/app/zookeeper/conf/
-
[hadoop@CDHNode1 conf]$ cp zoo_sample.cfg zoo.cfg //複製一個zoo.cfg文件
-
[hadoop@CDHNode1 conf]$ vi zoo.cfg
-
#添加下面的
-
# The number of milliseconds of each tick
-
tickTime=2000
-
# The number of ticks that the initial
-
# synchronization phase can take
-
initLimit=10
-
# The number of ticks that can pass between
-
# sending a request and getting an acknowledgement
-
syncLimit=5
-
# the directory where the snapshot is stored.
-
# do not use /tmp for storage, /tmp here is just
-
# example sakes.
-
#數據文件目錄與日誌目錄
-
dataDir=/home/hadoop/data/zookeeper/zkdata
-
dataLogDir=/home/hadoop/data/zookeeper/zkdatalog
-
# the port at which the clients will connect
-
clientPort=2181
-
#server.服務編號=主機名稱:Zookeeper不同節點之間同步和通信的端口:選舉端口(選舉leader)
-
server.1=CDHNode1:2888:3888
-
server.2=CDHNode2:2888:3888
-
server.3=CDHNode3:2888:3888
-
-
# administrator guide before turning on autopurge.
-
#
-
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
-
#
-
# The number of snapshots to retain in dataDir
-
#autopurge.snapRetainCount=3
-
# Purge task interval in hours
-
# Set to "0" to disable auto purge feature
-
#autopurge.purgeInterval=1
-
~
-
~
-
~
5、配置環境變量
-
[hadoop@CDHNode1 app]$vi /home/hadoop/.bash_profile
添加
-
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
-
export PATH=$PATH:$ZOOKEEPER_HOME/bin
6、使環境變量文件即時生效
-
[hadoop@CDHNode1 app]$source /home/hadoop/.bash_profile
7、通過遠程命令deploy.sh將Zookeeper安裝目錄拷貝到其他節點(CDHNode2、CDHNode3)上面
-
[hadoop@CDHNode1 app]$deploy.sh zookeeper /home/hadoop/app/ zookeeper
8、通過遠程命令runRemoteCmd.sh在所有的zookeeper節點(CDHNode1、CDHNode2、CDHNode3)上面創建目錄:
-
[hadoop@CDHNode1 app]$ runRemoteCmd.sh "mkdir -p /home/hadoop/data/zookeeper/zkdata" zookeeper //創建數據目錄
-
[hadoop@CDHNode1 app]$ runRemoteCmd.sh "mkdir -p /home/hadoop/data/zookeeper/zkdatalog" zookeeper //創建日誌目錄
9、然後分別在CDHNode1、CDHNode2、CDHNode3上面,進入zkdata目錄下,創建文件myid,裏面的內容分別填充爲:1、2、3,
這裏我們以CDHNode1爲例。
-
[hadoop@CDHNode1 app]$ cd /home/hadoop/data/zookeeper/zkdata
-
[hadoop@CDHNode1 zkdata]$ vi myid
//輸入數字1
CDHNode2輸入數字2、CDHNode3輸入數字3。
10、在CDHNode2、CDHNode3上面配置Zookeeper環境變量。按照第5、6步配置。
11、使用runRemoteCmd.sh 腳本,啓動所有節點(CDHNode1、CDHNode2、CDHNode3)上面的Zookeeper。
-
[hadoop@CDHNode1 zkdata]$ runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper
12、查看所有節點上面的QuorumPeerMain進程是否啓動。
-
[hadoop@CDHNode1 zkdata]$ runRemoteCmd.sh "jps" zookeeper
13、查看所有Zookeeper節點狀態。
-
[hadoop@CDHNode1 zkdata]$ runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh status" zookeeper
如果一個節點爲leader,另2個節點爲follower,則說明Zookeeper安裝成功。
注意:QuorumPeerMain可能不顯示在jps進程中,可以使用bin/zkServer.sh status 查看狀態,無法啓動的原因可以查看zookeeper.out文件,查看錯誤原因
-
<span style="color:#000000;">[hadoop@CDHNode2 ~]$ cd app/zookeeper/
-
[hadoop@CDHNode2 zookeeper]$ ls
-
bin cloudera-pom.xml ivysettings.xml NOTICE.txt share zookeeper.out
-
build.properties conf ivy.xml README_packaging.txt src
-
build.xml contrib lib README.txt zookeeper-3.4.5-cdh5.4.5.jar
-
CHANGES.txt dist-maven libexec recipes zookeeper-3.4.5-cdh5.4.5.jar.md5
-
cloudera docs LICENSE.txt sbin zookeeper-3.4.5-cdh5.4.5.jar.sha1
-
[hadoop@CDHNode2 zookeeper]$ vi zookeeper.out
-
-
2016-05-20 16:00:30,095 [myid:] - INFO [main:QuorumPeerConfig@101] - Reading configuration from: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
-
2016-05-20 16:00:30,099 [myid:] - INFO [main:QuorumPeerConfig@334] - Defaulting to majority quorums
-
2016-05-20 16:00:30,100 [myid:] - ERROR [main:QuorumPeerMain@86] - Invalid config, exiting abnormally
-
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
-
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:121)
-
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:106)
-
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
-
Caused by: java.lang.IllegalArgumentException: /home/hadoop/data/zookeeper/zkdata/myid file is missing
-
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:344)
-
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:117)
-
... 2 more
-
Invalid config, exiting abnormally
-
</span>
安裝hadoop
首先在CDHNode1上安裝hadoop,然後複製到其他節點。
1、將本地下載好的hadoop-2.6.0-cdh5.4.5.tar.gz安裝包,上傳至CDHNode1節點下的/home/hadoop/app目錄下。
-
[hadoop@CDHNode1 app]$ rz //選擇本地下載好的hadoop-2.6.0-cdh5.4.5.tar.gz
2、解壓hadoop-2.6.0-cdh5.4.5.tar.gz
-
[hadoop@CDHNode1 app]$ tar zxvf hadoop-2.6.0-cdh5.4.5.tar.gz //解壓
3、修改hadoop的名字,刪除上傳的壓縮文件hadoop-2.6.0-cdh5.4.5.tar.gz
-
[hadoop@CDHNode1 app]$ rm -rf hadoop-2.6.0-cdh5.4.5.tar.gz //刪除hadoop-2.6.0-cdh5.4.5.tar.gz 安裝包
-
[hadoop@CDHNode1 app]$ mv hadoop-2.6.0 hadoop //重命名
4、配置環境變量
-
[hadoop@CDHNode1 app]$vi /home/hadoop/.bash_profile
添加
-
# hadoop_home 2.6.0 path
-
HADOOP_HOME=/home/hadoop/app/hadoop
-
PATH=$HADOOP_HOME/bin:$PATH
-
export HADOOP_HOME PATH
5、使環境變量文件即時生效
-
[hadoop@CDHNode1 app]$source /home/hadoop/.bash_profile
6、切換到/home/hadoop/app/hadoop/etc/hadoop/目錄下,修改配置文件。
-
[hadoop@CDHNode1 app]$ cd /home/hadoop/app/hadoop/etc/hadoop/
配置HDFS
配置hadoop-env.sh
[hadoop@CDHNode1 hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_79
配置core-site.xml
-
[hadoop@CDHNode1 hadoop]$ vi core-site.xml
-
<configuration>
-
<property>
-
<name>fs.defaultFS</name>
-
<value>hdfs://cluster1</value>
-
</property>
-
<-- 這裏的值指的是默認的HDFS路徑 ,取名爲cluster1 -->
-
<property>
-
<name>hadoop.tmp.dir</name>
-
<value>/home/hadoop/data/tmp</value>
-
</property>
-
<-- hadoop的臨時目錄,如果需要配置多個目錄,需要逗號隔開,data目錄需要我們自己創建 -->
-
<property>
-
<name>ha.zookeeper.quorum</name>
-
<value>CDHNode1:2181,CDHNode2:2181,CDHNode3:2181,CDHNode4:2181,CDHNode5:2181</value>
-
</property>
-
<-- 配置Zookeeper 管理HDFS -->
-
</configuration>
配置hdfs-site.xml
-
[hadoop@CDHNode1 hadoop]$ vi hdfs-site.xml
-
<configuration>
-
<property>
-
<name>dfs.replication</name>
-
<value>3</value>
-
</property>
-
<-- 數據塊副本數爲3 -->
-
<property>
-
<name>dfs.permissions</name>
-
<value>false</value>
-
</property>
-
<property>
-
<name>dfs.permissions.enabled</name>
-
<value>false</value>
-
</property>
-
<-- 權限默認配置爲false -->
-
<property>
-
<name>dfs.nameservices</name>
-
<value>cluster1</value>
-
</property>
-
<-- 命名空間,它的值與fs.defaultFS的值要對應,namenode高可用之後有兩個namenode,cluster1是對外提供的統一入口 -->
-
<property>
-
<name>dfs.ha.namenodes.cluster1</name>
-
<value>CDHNode1,CDHNode2</value>
-
</property>
-
<-- 指定 nameService 是 cluster1 時的nameNode有哪些,這裏的值也是邏輯名稱,名字隨便起,相互不重複即可 -->
-
<property>
-
<name>dfs.namenode.rpc-address.cluster1.CDHNode1</name>
-
<value>CDHNode1:9000</value>
-
</property>
-
<-- CDHNode1 rpc地址 -->
-
<property>
-
<name>dfs.namenode.http-address.cluster1.CDHNode1</name>
-
<value>CDHNode1:50070</value>
-
</property>
-
<-- CDHNode1 http地址 -->
-
<property>
-
<name>dfs.namenode.rpc-address.cluster1.CDHNode2</name>
-
<value>CDHNode2:9000</value>
-
</property>
-
<-- CDHNode2 rpc地址 -->
-
<property>
-
<name>dfs.namenode.http-address.cluster1.CDHNode2</name>
-
<value>CDHNode2:50070</value>
-
</property>
-
<-- CDHNode2 http地址 -->
-
<property>
-
<name>dfs.ha.automatic-failover.enabled</name>
-
<value>true</value>
-
</property>
-
<-- 啓動故障自動恢復 -->
-
<property>
-
<name>dfs.namenode.shared.edits.dir</name>
-
<value>qjournal://CDHNode1:8485;CDHNode2:8485;CDHNode3:8485;CDHNode4:8485;CDHNode5:8485/cluster1</value>
-
</property>
-
<-- 指定journal -->
-
<property>
-
<name>dfs.client.failover.proxy.provider.cluster1</name>
-
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
-
</property>
-
<-- 指定 cluster1 出故障時,哪個實現類負責執行故障切換 -->
-
<property>
-
<name>dfs.journalnode.edits.dir</name>
-
<value>/home/hadoop/data/journaldata/jn</value>
-
</property>
-
<-- 指定JournalNode集羣在對nameNode的目錄進行共享時,自己存儲數據的磁盤路徑 -->
-
<property>
-
<name>dfs.ha.fencing.methods</name>
-
<value>shell(/bin/true)</value>
-
</property>
-
<property>
-
<name>dfs.ha.fencing.ssh.private-key-files</name>
-
<value>/home/hadoop/.ssh/id_rsa</value>
-
</property>
-
<property>
-
<name>dfs.ha.fencing.ssh.connect-timeout</name>
-
<value>10000</value>
-
</property>
-
<-- 腦裂默認配置 -->
-
<property>
-
<name>dfs.namenode.handler.count</name>
-
<value>100</value>
-
</property>
-
</configuration>
配置 slave
-
[hadoop@CDHNode1 hadoop]$ vi slaves
-
CDHNode3
-
-
CDHNode4
-
-
CDHNode5
YARN安裝配置
配置mapred-site.xml
-
[hadoop@CDHNode1 hadoop]$ vi mapred-site.xml
-
<configuration>
-
<property>
-
<name>mapreduce.framework.name</name>
-
<value>yarn</value>
-
</property>
-
<-- 指定運行mapreduce的環境是Yarn,與hadoop1不同的地方 -->
-
</configuration>
-
配置yarn-site.xml
-
[hadoop@CDHNode1 hadoop]$ vi yarn-site.xml
-
<configuration>
-
<property>
-
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
-
<value>2000</value>
-
</property>
-
<-- 超時的週期 -->
-
<property>
-
<name>yarn.resourcemanager.ha.enabled</name>
-
<value>true</value>
-
</property>
-
<-- 打開高可用 -->
-
<property>
-
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
-
<value>true</value>
-
</property>
-
<-- 啓動故障自動恢復 -->
-
<property>
-
<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
-
<value>true</value>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.cluster-id</name>
-
<value>yarn-rm-cluster</value>
-
</property>
-
<-- 給yarn cluster 取個名字yarn-rm-cluster -->
-
<property>
-
<name>yarn.resourcemanager.ha.rm-ids</name>
-
<value>rm1,rm2</value>
-
</property>
-
<-- 給ResourceManager 取個名字 rm1,rm2 -->
-
<property>
-
<name>yarn.resourcemanager.hostname.rm1</name>
-
<value>CDHNode1</value>
-
</property>
-
<-- 配置ResourceManager rm1 hostname -->
-
<property>
-
<name>yarn.resourcemanager.hostname.rm2</name>
-
<value>CDHNode2</value>
-
</property>
-
<-- 配置ResourceManager rm2 hostname -->
-
<property>
-
<name>yarn.resourcemanager.recovery.enabled</name>
-
<value>true</value>
-
</property>
-
<-- 啓用resourcemanager 自動恢復 -->
-
<property>
-
<name>yarn.resourcemanager.zk.state-store.address</name>
-
<value>CDHNode1:2181,CDHNode2:2181,CDHNode3:2181,CDHNode4:2181,CDHNode5:2181</value>
-
</property>
-
<-- 配置Zookeeper地址 -->
-
<property>
-
<name>yarn.resourcemanager.zk-address</name>
-
<value>CDHNode1:2181,CDHNode2:2181,CDHNode3:2181,CDHNode4:2181,CDHNode5:2181</value>
-
</property>
-
<-- 配置Zookeeper地址 -->
-
<property>
-
<name>yarn.resourcemanager.address.rm1</name>
-
<value>CDHNode1:8032</value>
-
</property>
-
<-- rm1端口號 -->
-
<property>
-
<name>yarn.resourcemanager.scheduler.address.rm1</name>
-
<value>CDHNode1:8034</value>
-
</property>
-
<-- rm1調度器的端口號 -->
-
<property>
-
<name>yarn.resourcemanager.webapp.address.rm1</name>
-
<value>CDHNode1:8088</value>
-
</property>
-
<-- rm1 webapp端口號 -->
-
<property>
-
<name>yarn.resourcemanager.address.rm2</name>
-
<value>CDHNode2:8032</value>
-
</property>
-
<-- rm2端口號 -->
-
<property>
-
<name>yarn.resourcemanager.scheduler.address.rm2</name>
-
<value>CDHNode2:8034</value>
-
</property>
-
<-- rm2調度器的端口號 -->
-
<property>
-
<name>yarn.resourcemanager.webapp.address.rm2</name>
-
<value>CDHNode2:8088</value>
-
</property>
-
<-- rm2 webapp端口號 -->
-
<property>
-
<name>yarn.nodemanager.aux-services</name>
-
<value>mapreduce_shuffle</value>
-
</property>
-
<property>
-
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
-
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
-
</property>
-
<-- 執行MapReduce需要配置的shuffle過程 -->
-
</configuration>
向所有節點分發hadoop安裝包。
[hadoop@CDHNode1 app]$ deploy.sh hadoop /home/hadoop/app/ slave
按照目錄的規劃建立好目錄(用於存放數據的目錄):
-
runRemoteCmd.sh "mkdir -p /home/hadoop/data/name" all
-
-
runRemoteCmd.sh "mkdir -p /home/hadoop/data/hdfs/edits" all
-
-
runRemoteCmd.sh "mkdir -p /home/hadoop/data/datanode" all
-
-
runRemoteCmd.sh "mkdir -p /home/hadoop/data/journaldata/jn" all
-
-
runRemoteCmd.sh "mkdir -p /home/hadoop/data/tmp" all
-
-
runRemoteCmd.sh "touch /home/hadoop/app/hadoop/etc/hadoop/excludes" all
-
-
runRemoteCmd.sh "mkdir -p /home/hadoop/data/pid" all
當你的在初始化工程中出錯,要把相關目錄的文件刪除,然後再重新初始化
-
rm -rf /home/hadoop/data/name/*
-
-
rm -rf /home/hadoop/data/hdfs/edits/*
-
-
rm -rf /home/hadoop/data/datanode/*
-
-
rm -rf /home/hadoop/data/journaldata/jn/*
-
-
rm -rf /home/hadoop/data/tmp/*
集羣初始化
1、啓動所有節點上面的Zookeeper進程
[hadoop@CDHNode1 hadoop]$ runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper
2、啓動所有節點上面的journalnode進程
[hadoop@CDHNode1 hadoop]$ runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all
3、首先在主節點上(比如,CDHNode1)執行格式化
-
[hadoop@CDHNode1 hadoop]$ bin/hdfs namenode -format / /namenode 格式化
-
[hadoop@CDHNode1 hadoop]$ bin/hdfs zkfc -formatZK //格式化高可用
-
[hadoop@CDHNode1 hadoop]$bin/hdfs namenode //啓動namenode
注意:執行完上述命令後,程序就會在等待狀態,只有執行完下一步時,利用按下ctrl+c來結束namenode進程。
4、與此同時,需要在備節點(比如 CDHNode2)上執行數據同步 注意:同時是在執行完上一步後,上一步程序停止的情況下執行此步驟的
[hadoop@CDHNode2 hadoop]$ bin/hdfs namenode -bootstrapStandby //同步主節點和備節點之間的元數據
5、CDHNode2同步完數據後,緊接着在CDHNode1節點上,按下ctrl+c來結束namenode進程。 然後關閉所有節點上面的journalnode進程
[hadoop@CDHNode1 hadoop]$ runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all //然後停掉各節點的journalnode
6、如果上面操作沒有問題,我們可以一鍵啓動hdfs所有相關進程
-
[hadoop@CDHNode1 hadoop]$ sbin/start-dfs.sh
啓動成功之後,查看關閉其中一個namenode ,然後在啓動namenode 觀察切換的狀況
7、驗證是否啓動成功
通過web界面查看namenode啓動情況。
http://CDHNode1:50070
注意:在瀏覽器輸入以上網址時,需要先在本機的hosts目錄下添加如下映射:
192.168.3.188 CDHNode1
192.168.3.189 CDHNode2
192.168.3.190 CDHNode3
192.168.3.191 CDHNode4
192.168.3.192 CDHNode5
啓動成功之後,查看關閉其中一個namenode
,然後在啓動namenode 觀察切換的狀況 使用命令 kill
上傳文件至hdfs
[hadoop@CDHNode1 hadoop]$ vi a.txt //本地創建一個a.txt文件
hadoop CDH
hello world
CDH hadoop
[hadoop@CDHNode1 hadoop]$ hdfs dfs -mkdir /test //在hdfs上創建一個文件目錄
[hadoop@CDHNode1 hadoop]$ hdfs dfs -put djt.txt /test //向hdfs上傳一個文件
[hadoop@CDHNode1 hadoop]$ hdfs dfs -ls /test //查看a.txt是否上傳成功
如果上面操作沒有問題說明hdfs配置成功。
啓動YARN
1、在CDHNode1節點上執行。
[hadoop@CDHNode1 hadoop]$ sbin/start-yarn.sh
2、在CDHNode2節點上面執行。
[hadoop@CDHNode2 hadoop]$ sbin/yarn-daemon.sh start resourcemanager
同時打開一下web界面。
http://CDHNode1:8088
http://CDHNode2:8088
關閉其中一個resourcemanager,然後再啓動,看看這個過程的web界面變化。
3、檢查一下ResourceManager狀態
[hadoop@CDHNode1 hadoop]$ bin/yarn rmadmin -getServiceState rm1
[hadoop@CDHNode1 hadoop]$ bin/yarn rmadmin -getServiceState rm2
4、Wordcount示例測試
[hadoop@djt11 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /test/a.txt /test/out/
如果上面執行沒有異常,說明YARN安裝成功。
集羣關啓順序
關閉YARN
a、在CDHNode2節點上面執行
-
[hadoop@CDHNode2 hadoop]$ sbin/yarn-daemon.sh stop resourcemanager
b、在CDHNode1節點上執行
-
[hadoop@CDHNode1 hadoop]$ sbin/stop-yarn.sh
c、關閉HDFS
-
[hadoop@CDHNode1 hadoop]$ sbin/stop-dfs.sh
d、關閉zookeeper
-
[hadoop@CDHNode1 hadoop]$ runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh stop" zookeeper
再次啓動集羣
a、啓動zookeeper
-
[hadoop@CDHNode1 hadoop]$ runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper
b、啓動HDFS
-
[hadoop@CDHNode1 hadoop]$ sbin/start-dfs.sh
c、在CDHNode1節點上執行
-
[hadoop@CDHNode1 hadoop]$ sbin/start-yarn.sh
d、在CDHNode2節點上面執行
-
[hadoop@CDHNode2 hadoop]$ sbin/yarn-daemon.sh start resourcemanager
至此,hadoop 分佈式集羣搭建完畢。