Hadoop基礎(chǔ)之HA的安裝與配置

即上篇文章Hadoop基礎(chǔ)之HA(高可用)之后民褂,本文將介紹HDFS HA的搭建與配置。參考官方文檔:http://hadoop.apache.org/docs/r2.7.4/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html#Configuration_details

1.主要步驟

  1. 時間同步(ntp時間同步) 網(wǎng)絡(luò) hosts 防火墻關(guān)閉等
    時間同步命令:
yum install ntp
ntpdate -u s1a.time.edu.cn

ntp時間服務(wù)器列表:http://www.ntp.org.cn/
關(guān)于網(wǎng)絡(luò)配置請參考:Virtualbox配置centos7網(wǎng)絡(luò)

  1. 安裝jdk1.7以上
  2. 上傳 解壓
  3. 需要做免密鑰璧尸,兩天NameNode之間一定要做免密鑰。
node1到node1-4
node2到node1-4

關(guān)于免密鑰熬拒,參考文章:centos7設(shè)置SSH免密碼登錄教程

  1. 修改配置文件(需要先停止hdfs集群)
如果是1.x中的爷光,需要手動刪除masters文件(一定要保證每臺服務(wù)器都刪除)
etc/profile: HADOOP_HOME
hadoop-env.sh 中的JAVA_HOME
core-site.xml:hadoop.tmp.dir配置,需要保證每臺服務(wù)器的該目錄不存在或者為空目錄
hdfs-site.xml:   HA不需要SNN
slaves 指定datanode
  1. 同步配置文件到各個節(jié)點

  2. 格式化之前必須先啟動journalnode:

hadoop-daemon.sh start journalnode

8.格式化namenode:在一臺NameNode上執(zhí)行格式化命令

hdfs namenode -format

格式化完成后澎粟,需要啟動當(dāng)前服務(wù)器的NameNode (node1):

hadoop-daemon.sh start namenode
  1. 同步fsimage,其他沒有格式化的NameNode上執(zhí)行命令(node2):
hdfs namenode -bootstrapStandby
  1. 安裝ZK蛀序,啟動Zookeeper集群(node1 node2 node3)

Zookeeper集群安裝請參考:Zookeeper 安裝、配置活烙、使用

zkServer.sh start
  1. 格式化ZK:
hdfs zkfc -formatZK(在其中一臺NameNode上)
  1. 啟動hdfs:
start-dfs.sh
  1. 第二次啟動集群的時候只需要以下命令:
1.啟動ZK集群
2.start-dfs.sh

2.HA節(jié)點分布

HA節(jié)點分布.png

需要注意的是:ZKFC無需配置徐裸,只需要確定了NameNode節(jié)點位置,ZKFC就自動確定了啸盏。建議:DN與JN在相同的節(jié)點上重贺。

3.配置hdfs-site.xml

<!--定義NameServices邏輯名稱,此處為lyx -->
<property>
  <name>dfs.nameservices</name>
  <value>lyx</value>
</property>
<!--映射nameservices邏輯名稱到namnode邏輯名稱 -->
<property>
  <name>dfs.ha.namenodes.lyx</name>
  <value>nn1,nn2</value>
</property>
<!--映射namenode邏輯名稱到真實主機名稱(RPC) -->
<property>
  <name>dfs.namenode.rpc-address.lyx.nn1</name>
  <value>master:8020</value>
</property>
<!--映射namenode邏輯名稱到真實主機名稱(RPC) -->
<property>
  <name>dfs.namenode.rpc-address.lyx.nn2</name>
  <value>slave1:8020</value>
</property>
<!--映射namenode邏輯名稱到真實主機名稱(HTTP) -->
<property>
  <name>dfs.namenode.http-address.lyx.nn1</name>
  <value>master:50070</value>
</property>
<!--映射namenode邏輯名稱到真實主機名稱(HTTP) -->
<property>
  <name>dfs.namenode.http-address.lyx.nn2</name>
  <value>slave1:50070</value>
</property>
<!--配置JN集群位置信息及目錄 -->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://slave1:8485;slave2:8485;slave3:8485/lyx</value>
</property>
<!--配置故障遷移實現(xiàn)類 -->
<property>
  <name>dfs.client.failover.proxy.provider.lyx</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--指定切換方式為SSH免密鑰方式 -->
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>
<!--設(shè)置自動切換 -->
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
</property>
<!--配置journalnode edits文件位置 -->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/usr/local/hadoop/current/journal/data</value>
</property>
<property>
   <name>dfs.webhdfs.enabled</name>
   <value>true</value>
</property>
<property>
   <name>dfs.permissions.superusergroup</name>
   <value>staff</value>
</property>
<property>
   <name>dfs.permissions.enabled</name>
   <value>false</value>
</property>

4.配置core-site.xml

<!--設(shè)置fs.defaultFS為Nameservices的邏輯主機名 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://lyx</value>
  </property>
  <!--設(shè)置數(shù)據(jù)存放目錄 -->
  <property>
      <name>hadoop.tmp.dir</name>
      <value>/usr/local/hadoop/current/tmp</value>
  </property>
  <!--設(shè)置Zookeeper位置信息 -->
  <property>
     <name>ha.zookeeper.quorum</name>
     <value>master:2181,slave1:2181,slave2:2181</value>
  </property>

5.同步配置文件

scp hdfs-site.xml slave1://usr/local/hadoop/etc/hadoop
scp hdfs-site.xml slave2://usr/local/hadoop/etc/hadoop
scp hdfs-site.xml slave3://usr/local/hadoop/etc/hadoop

scp core-site.xml slave1://usr/local/hadoop/etc/hadoop
scp core-site.xml slave2://usr/local/hadoop/etc/hadoop
scp core-site.xml slave3://usr/local/hadoop/etc/hadoop

6.啟動journalnode(node2-4)

hadoop-daemon.sh start journalnode
journalnode.png

7.格式化namenode

在一臺NameNode(node1)上執(zhí)行格式化命令:

hdfs namenode -format
格式化namenode.png

格式化完成后,需要啟動當(dāng)前服務(wù)器的NameNode :hadoop-daemon.sh start namenode

8.同步fsimage

其他沒有格式化的NameNode上執(zhí)行命令(node2):

hdfs namenode -bootstrapStandby

此時若沒有先執(zhí)行上面的啟動Namenode操作(在node1上)气笙,則會報以下錯誤:


錯誤信息.png

所以必須在格式化后先啟動NameNode(node1):hadoop-daemon.sh start namenode


啟動node1的NameNode.png

啟動完成后次企,再在node2上執(zhí)行同步命令就正常了


同步.png

9.啟動zk

hdfs zkfc -formatZK(在其中一臺NameNode上)
啟動zk.png

10.啟動hdfs

start-dfs.sh
啟動hdfs.png

以上,因為在之前啟動了JN和NN潜圃,故出現(xiàn)stop it first,下一次啟動就不會出現(xiàn)了缸棵。
啟動完成。在node1和node2節(jié)點谭期,有如下進(jìn)程:

node1含有NN,ZK,ZKFC:


node1.png

node2含有NN,ZK,ZKFC,DN,JN:


node2.png

node3含有DN,JN,ZK:
node3.png

node4含有DN,JN,ZK:


node4.png

符合最初設(shè)定的節(jié)點設(shè)置堵第。

11.網(wǎng)頁查看情況

查看node1(master)節(jié)點,目前是active狀態(tài)


image.png

node2(slave1)是standby狀態(tài):


image.png

處于standby狀態(tài)隧出,HDFS文件系統(tǒng)也是進(jìn)不去的:

image.png

12.發(fā)現(xiàn)問題

12.1 問題

把node1中的namenode進(jìn)程關(guān)掉:hadoop-daemon.sh stop namenode踏志,此時,發(fā)現(xiàn)node2狀態(tài)還是standby胀瞪,不會自動切換狰贯,然后重新啟動namenode1,則恢復(fù)正常赏廓,namenode1變?yōu)閟tandby涵紊,namenode2變?yōu)閍ctive。


image.png
image.png

查看node1中的hadoop-root-zkfc-master.log日志文件發(fā)現(xiàn):


hadoop-root-zkfc-master.log.png

查看node2中的hadoop-root-zkfc-slave1.log日子文件發(fā)現(xiàn):


hadoop-root-zkfc-slave1.log.png

12.2 原因查找

由slave1上的錯誤日志信息可以看出幔摸,fuser: 未找到命令摸柄,在做主備切換時執(zhí)行fuser命令失敗了。
查看hdfs-site.xml配置文件既忆,

<property>
     <name>dfs.ha.fencing.methods</name>
     <value>sshfence</value>
</property>

hdfs-site.xml通過參數(shù)dfs.ha.fencing.methods來實現(xiàn)驱负,在出現(xiàn)故障時通過哪種方式登錄到另一個namenode上進(jìn)行接管工作。

12.3 dfs.ha.fencing.methods參數(shù)解釋

系統(tǒng)在任何時候只有一個namenode節(jié)點處于active狀態(tài)患雇。在主備切換的時候跃脊,standby namenode會變成active狀態(tài),原來的active namenode就不能再處于active狀態(tài)了苛吱,否則兩個namenode同時處于active狀態(tài)會有問題酪术。所以在failover的時候要設(shè)置防止2個namenode都處于active狀態(tài)的方法,可以是Java類或者腳本翠储。

fencing的方法目前有兩種绘雁,sshfence和shell,sshfence方法是指通過ssh登陸到active namenode節(jié)點殺掉namenode進(jìn)程援所,所以你需要設(shè)置ssh無密碼登陸庐舟,還要保證有殺掉namenode進(jìn)程的權(quán)限。

12.4 解決方案

  1. 查找fuser
[root@master .ssh]#  yum provides "*/fuser"
image.png
  1. 在namenode主住拭、備節(jié)點上安裝fuser(datanode節(jié)點不用安裝)
[root@master .ssh]#  yum -y install psmisc
[root@slave1 logs]#  yum -y install psmisc

13.故障遷移測試

通過以上修正挪略,則可以順利的進(jìn)行NameNode的自動切換历帚。
把node1中的namenode進(jìn)程關(guān)掉:hadoop-daemon.sh stop namenode


image.png

node1(master)不能訪問了,而node2(slave1)就自動切換為了active狀態(tài)杠娱。

image.png

重新啟動node1挽牢,hadoop-daemon.sh start namenode ,此時墨辛,master變?yōu)榱藄tandby狀態(tài)

image.png

此時再次停止node2(slave1)的話,node1(master)節(jié)點就自動切換為active狀態(tài)趴俘。

image.png

由上面的測試可知睹簇,hdfs ha集群環(huán)境已經(jīng)搭建成功!

14.寫在后面

一開始故障遷移zkfc不會實行自動切換寥闪,找了很久太惠,一開始懷疑SSH免密登錄無效,可是我是配置了四臺了主機都互通的疲憋,這條已經(jīng)否定凿渊。后面懷疑,是不是必須要datanode和journalNode在一起缚柳,(一開始埃脏,我配置的journalnode是node1-node3節(jié)點),后面經(jīng)證實秋忙,也非必須彩掐。到后面,竟然還懷疑灰追,是不是我的hostname配置的有問題堵幽,(因為我配置了好幾組的/etc/hosts),當(dāng)時懷疑/etc/hostname中的配置的需要跟/etc/hosts中配置的一致,后面發(fā)現(xiàn)非必須弹澎。我的配置如下:
node1為例:


/etc/hostname.png
/etc/hosts .png

倒騰了半天后朴下,從日志文件中找出錯誤信息,從而在網(wǎng)上找到類似的問題苦蒿,進(jìn)而找到解決方案殴胧。故,大數(shù)據(jù)環(huán)境出現(xiàn)問題佩迟,必須要看日志溃肪,必須得認(rèn)真看日志。

15.延伸閱讀

  1. Hadoop安裝與集群配置
  2. Hadoop基本知識點之HDFS
  3. Hadoop之HDFS的Java實現(xiàn)
  4. Hadoop之YARN的安裝與測試
  5. Hadoop基礎(chǔ)之HA的安裝與配置
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末音五,一起剝皮案震驚了整個濱河市惫撰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躺涝,老刑警劉巖厨钻,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扼雏,死亡現(xiàn)場離奇詭異,居然都是意外死亡夯膀,警方通過查閱死者的電腦和手機诗充,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诱建,“玉大人蝴蜓,你說我怎么就攤上這事“吃常” “怎么了茎匠?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長押袍。 經(jīng)常有香客問我诵冒,道長,這世上最難降的妖魔是什么谊惭? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任汽馋,我火速辦了婚禮,結(jié)果婚禮上圈盔,老公的妹妹穿的比我還像新娘豹芯。我一直安慰自己,他們只是感情好驱敲,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布告组。 她就那樣靜靜地躺著,像睡著了一般癌佩。 火紅的嫁衣襯著肌膚如雪木缝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天围辙,我揣著相機與錄音我碟,去河邊找鬼。 笑死姚建,一個胖子當(dāng)著我的面吹牛矫俺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掸冤,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厘托,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了稿湿?” 一聲冷哼從身側(cè)響起铅匹,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饺藤,沒想到半個月后包斑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體流礁,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年罗丰,在試婚紗的時候發(fā)現(xiàn)自己被綠了神帅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡萌抵,死狀恐怖找御,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绍填,我是刑警寧澤霎桅,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站沐兰,受9級特大地震影響哆档,放射性物質(zhì)發(fā)生泄漏蔽挠。R本人自食惡果不足惜住闯,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澳淑。 院中可真熱鬧比原,春花似錦、人聲如沸杠巡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氢拥。三九已至蚌铜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫩海,已是汗流浹背冬殃。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叁怪,地道東北人审葬。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像奕谭,于是被迫代替她去往敵國和親涣觉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 官方文檔翻譯血柳,官方鏈接官册。翻譯水平有限,且以學(xué)習(xí)為主难捌,請諒解和提意見攀隔。轉(zhuǎn)載請注明出處T矸贰!昆汹! 接著上一篇發(fā)布的文章繼續(xù)...
    mikeliuy閱讀 1,046評論 1 3
  • 1. Zookeeper介紹: 1.基本介紹: Zookeeper: 為分布式應(yīng)用提供分布式協(xié)作(協(xié)調(diào))服務(wù)明刷。使用...
    奉先閱讀 4,568評論 0 10
  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載满粗。 目錄-[-]1 先決條件2 實驗環(huán)境搭建 21 準(zhǔn)備工...
    三三At你閱讀 839評論 0 3
  • 之前的有點忘記了,這里在云筆記拿出來再玩玩.看不懂的可以留言 大家可以嘗試下Ambari來配置Hadoop的相關(guān)環(huán)...
    HT_Jonson閱讀 2,958評論 0 50
  • 明天不一定美好,你努力捅彻,就一切美好组去。 黎明的到來,是告訴你明天到來的鬧鐘步淹,是明天告訴你到來的禮儀从隆。也許,沒有那么期...
    Kayan阿嘉閱讀 817評論 0 19