帶你快速搭建Hadoop的HA集群!
相信在看了上一篇博客《帶你快速認識NamenodeHA和Yarn HA,為搭建HadoopHA集群打下基礎!》后,大家一定對于如何搭建HA集群非常期待?(?????)?不要慌,本篇博客即將為大家帶來搭建HA集群的詳細教程!
碼字不易,先贊后看!
文章目錄
Hadoop HA集群的搭建
友情提示
<1> 安裝配置Hadoop集群
① 備份集群
② 解壓新的集群
③ 配置HDFS
④ 修改core-site.xml
⑤ 修改hdfs-site.xml
⑦ 修改mapred-site.xml
⑧修改yarn-site.xml
⑨修改slaves
⑩配置免密登錄
<2> 啟動各項進程
① 啟動zookeeper集群
② 手動啟動journalnode
③ 格式化namenode
④格式化ZKFC(在active上執行即可)
⑤ 啟動HDFS(在node01上執行)
⑥ 啟動YARN
<3> 瀏覽器訪問
<4> 拓展
Hadoop HA集群的搭建
以下所有的操作均是有Hadoop集群的基礎上執行的
。建議第一次安裝集群的朋友先去看這篇博客《Hadoop(CDH)分布式環境搭建》,先搭建起一個正常可用的集群,再看這篇博客《zookeeper的安裝詳解》在集群上安裝好了Zookeeper后再來看這篇
進階
的博客。
<1> 安裝配置Hadoop集群
因為我們事先已經搭建好了一個集群,所以我們需要先把之前的hadoop集群關閉。
stop-all.sh
然后將之前的hadoop所在的目錄進行備份(三臺節點)
cd /export/servers/
mv mv hadoop-2.6.0-cdh5.14.0 hadoop-2.6.0-cdh5.14.0_bk
進入到hadoop安裝包所在的目錄,重新解壓。
cd /export/softwares/
tar -zxvf hadoop-2.6.0-cdh5.14.0.tar.gz -C ../servers/
需要注意的是,hadoop2.0所有的配置文件都在
$HADOOP_HOME/etc/hadoop
目錄下
這一步本該是做一些添加系統環境變量之類的操作,但因為我們在之前的集群中就已經完成了這些操作,所以這一步的內容就可以直接跳過了~這也是為什么我推薦你們先搭建好一個集群的原因。
進入到指定的目錄下:
cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
編輯core-site.xml,添加如下配置
vim core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
先備份一份
cp mapred-site.xml.template mapred-site.xml
編輯mapred-site.xml,添加如下內容
1
2
3
4
5
6
7
修改yarn-site.xml,添加如下內容:
vim yarn-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
vim slaves
node01 node02 node03
1
2
3
4
將軟件拷貝到所有節點
這里是用scp命令,當然xsync可是可以的~
scp -r hadoop-2.6.0-cdh5.14.0 node02:/$PWD
scp -r hadoop-2.6.0-cdh5.14.0 node03:/$PWD
這里需要對主備節點配置免密登錄,但因為我們在安裝原始集群的時候已經配置好了,所以這一步也可以跳過了~
#首先要配置node01到node01、node02、node03 的免密碼登陸
#在node01上生產一對鑰匙
ssh-keygen
#將公鑰拷貝到其他節點,包括自己
ssh-coyp-id node01
ssh-coyp-id node02
ssh-coyp-id node03
#注意:兩個namenode之間要配置ssh免密碼登陸 ssh遠程補刀時候需要
#在node02上生產一對鑰匙
ssh-keygen
#將公鑰拷貝到node01
ssh-coyp-id node01
<2> 啟動各項進程
嚴格按照下面的步驟,否則不能保證一定能成功
分別在node01,node02,node03節點上啟動zookeeper
bin/zkServer.sh start #查看狀態:一個leader,兩個follower bin/zkServer.sh status
1
2
3
分別在在node01、node02、node03上執行
hadoop-daemon.sh start journalnode #運行jps命令檢驗,node01、node02、node03上多了JournalNode進程
1
2
#在node01上執行命令: hdfs namenode -format #格式化后會在根據core-site.xml中的hadoop.tmp.dir配置的目錄下生成個hdfs初始化文件, hadoop.tmp.dir配置的目錄下所有文件拷貝到另一臺namenode節點所在的機器 scp -r tmp/ node02:/home/hadoop/app/hadoop-2.6.4/
1
2
3
4
5
6
hdfs zkfc -formatZK
1
start-dfs.sh
1
start-yarn.sh 還需要手動在standby上手動啟動備份的 resourcemanager yarn-daemon.sh start resourcemanager
1
2
3
<3> 瀏覽器訪問
配置完上述,用jps查看當前進程
[root@node01 helloworld]# jps 14305 QuorumPeerMain 15186 NodeManager 14354 JournalNode 14726 DataNode 20887 Jps 15096 ResourceManager 15658 NameNode 14991 DFSZKFailoverController
1
2
3
4
5
6
7
8
9
終于可以用瀏覽器進行訪問了~
訪問node01
http://node01:50070
可以發現當前該節點namenode的狀態為Active
訪問node02
http://node02:50070
可以發現當前該節點namenode的狀態為(standby)
說明我們的HA集群部署成功了~
接下來我們向hdfs上傳一個文件
hadoop fs -put /etc/profile /profile
通過UI界面可以看到新的文件上傳上來了
然后再kill掉active狀態節點(也就是node01)的NameNode
kill -9
這個時候我們通過瀏覽器訪問node02
http://node02:50070
發現node01"宕機"之后,node02的namenode處于Active的狀態!
在node02節點運行下列命令,可以發現集群的數據跟node01宕機前是一樣的。
hadoop fs -ls / -rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile
1
2
剛剛我們手動"干掉"了node01節點上的namenode,現在我們手動啟動它。
hadoop-daemon.sh start namenode
前面驗證了HA,現在我們來認證一下Yarn!
任意一個節點,運行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar wordcount /profile /out
看到上述的效果圖,說明我們的HA集群算是搭建成功了!!!
<4> 拓展
OK大功告成!下面拓展一些測試HA集群的命令
hdfs dfsadmin -report 查看hdfs的各節點狀態信息 hdfs haadmin -getServiceState nn1 獲取一個namenode節點的HA狀態 hadoop-daemon.sh start zkfc 單獨啟動一個zkfc進程
1
2
3
4
5
本次分享就到這里,受益的小伙伴或對大數據技術感興趣的朋友不妨關注一下博主~
互相學習,共同進步!
Hadoop XML
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。