日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Hadoop.2.x_HA部署

發(fā)布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop.2.x_HA部署 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、概念與HA思路

1. 首先Hadoop架構(gòu)為主從架構(gòu)(NameNode/DataNode)
2. NameNode管理著文件系統(tǒng)和與維護(hù)客戶端訪問DataNode
3. Hadoop 2.0 之前的版本,集群中NameNode存在單點(diǎn)故障(SPOF)
4. 單個NameNode機(jī)器宕機(jī)將導(dǎo)致集群無法使用,直到管理員重啟
5. 單個NameNode機(jī)器升級時也會導(dǎo)致集群無法使用
6. HDFS HA用于解決單節(jié)點(diǎn)故障(使用Active/Standby兩個NameNode交替)方案一:借助質(zhì)量好的機(jī)器進(jìn)行讀寫操作保證日志數(shù)據(jù)一致方案二:使用類似與Zookeeper(2n+1特效) 備份日志數(shù)據(jù)(保證日志數(shù)據(jù)的安全性),兩個NameNode共同管理一份元數(shù)據(jù)方案三:使用Zookeeper
7. 使用方案二,日志交于JournalNode進(jìn)程管理,日志節(jié)點(diǎn)為奇數(shù)個 AvtiveNameNode啟動時接收DataNode心跳匯報,StandbyNameNode也需要使用JournalNode至少需要3個節(jié)點(diǎn)
8. 既然ActiveNameNode有可能會宕掉,那么客戶端如何去找到StandbyNameNode這其中有一個Proxy(代理)用于告知客戶端
9. ActiveNameNode與StandbyNameNode通過隔離機(jī)制互不干預(yù)通過代理找到ActiveNameNode,通過Zookeeper選主操作轉(zhuǎn)移故障
10.既然ResourceManager也是一個分布式的系統(tǒng),同樣也可能出現(xiàn)單節(jié)點(diǎn)故障

二、部署與搭建測試

  1. 目錄規(guī)劃(hdfs存儲位置,JournalNode存儲位置,等)
  2. 上傳并解壓Hadoop
  3. 配置自定義(這僅僅配置HDFS NameNode HA)

*.env
# 配置JDK路徑
hdfs-site.xml
# 服務(wù)配置
dfs.nameservices-->ns1
dfs.ha.namenodes.ns1-->nn1,nn2
dfs.namenode.rpc-address.ns1.nn1-->hadoop09-linux-01.ibeifeng.com:8020
dfs.namenode.rpc-address.ns1.nn2-->hadoop09-linux-02.ibeifeng.com:8020
dfs.namenode.http-address.ns1.nn1-->hadoop09-linux-01.ibeifeng.com:50070
dfs.namenode.http-address.ns1.nn2-->hadoop09-linux-02.ibeifeng.com:50070
# JournalNode存儲配置(注意新建自定義目錄)
dfs.namenode.shared.edits.dir-->qjournal://hadoop09-linux-01.ibeifeng.com:8485;hadoop09-linux-02.ibeifeng.com:8485;hadoop09-linux-03.ibeifeng.com:8485/ns1
dfs.journalnode.edits.dir-->/home/liuwl/opt/app/hadoop-2.5.0/data/dfs/jn
# 隔離機(jī)制
dfs.ha.fencing.methods-->sshfence
# 注意測試那幾個節(jié)點(diǎn)是否能夠連通 ssh hadoop09-linux-01.ibeifeng.com
dfs.ha.fencing.ssh.private-key-files-->/home/liuwl/.ssh/id_rsa
# 訪問文件系統(tǒng)權(quán)限
dfs.permissions.enabled-->false
core-site.xml
fs.defaultFS-->hdfs://ns1
hadoop.tmp.dir-->/home/liuwl/opt/app/hadoop-2.5.0/data/tmp
hadoop.http.staticuser.user-->liuwl
slaves
hadoop09-linux-01.ibeifeng.com
hadoop09-linux-02.ibeifeng.com
hadoop09-linux-03.ibeifeng.com

  4. 分發(fā)配置文件目錄(注意剛才新建的data/dfs/jn,其他節(jié)點(diǎn)也要保持一致)

scp -r hadoop/ liuwl@hadoop09-linux-02.ibeifeng.com:/home/liuwl/opt/app/hadoop-2.5.0/etc
scp -r hadoop/ liuwl@hadoop09-linux-03.ibeifeng.com:/home/liuwl/opt/app/hadoop-2.5.0/etc

  5. 分別啟動Zookeeper(轉(zhuǎn)13步)

bin/zkServer start

  6. 分別啟動JournalNode服務(wù)

sbin/hadoop-daemon.sh start journalnode

  7. 在nn1所在節(jié)點(diǎn)進(jìn)行格式化文件系統(tǒng),并啟動

bin/hdfs dfs namenode -format
sbin/hadoop-daemon.sh start namenode

  8. 在nn2所在節(jié)點(diǎn)進(jìn)行同步元數(shù)據(jù)信息,并啟動

bin/hdfs namenode -bootstrapStandby
sbin/hadoop-daemon.sh start namenode

  9. 將nn1切換為Active(手動切換)

bin/hdfs haadmin -transitionToActive nn1

  10. 在nn1所在節(jié)點(diǎn)啟動所有datanode

sbin/hadoop-daemon.sh start datanode

  11. kill掉nn1上的namenode,并手動設(shè)置nn2為Active

nn1: kill -9 xxx/sbin/hadoop-daemon.sh stop namenode
nn2: bin/hdfs haadmin -transitionToActive nn2 --forceactive

  12. 網(wǎng)頁上查看namenode狀態(tài)或使用命令

bin/hdfs haadmin -getServiceState nn2

  13. 使用Zookeeper自動轉(zhuǎn)移故障

hdfs-site.xml
dfs.ha.automatic-failover.enabled-->false
core-site.xml
ha.zookeeper.quorum-->hadoop09-linux-01.ibeifeng.com:2181,hadoop09-linux-02.ibeifeng.com:2181,hadoop09-linux-03.ibeifeng.com:2181

  14. 按照官方文檔,需要初始化Zookeeper,注意每個節(jié)點(diǎn)上的Zookeeper服務(wù)為開啟狀態(tài)(轉(zhuǎn)13步)

bin/hdfs zkfc -formatZK
# 單獨(dú)啟動zookeeper的故障轉(zhuǎn)移監(jiān)控器(DFSZKFailoverController),每個namenode都有一個
sbin/hadoop-deamon.sh start zkfc

  15. 測試Zookeeper存儲

../zookeeper-3.4.6/bin/zkCli.sh

  16. 啟動yarn,上傳一個wc.input,節(jié)點(diǎn)三運(yùn)行MR程序,運(yùn)行時,kill掉ActiveNameNode

sbin/start-yarn.sh
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount tmp/mapreduce/wordcount/input tmp/mapreduce/wordcount/output
kill -9 xxx
# 查看namenode狀態(tài)
# 分析結(jié)論:DFSZKFailoverController監(jiān)控NameNode狀態(tài),NameNode宕掉,監(jiān)聽器馬上告訴Zookeeper,
# Zookeeper告知Standby的DFSZKFailoverController,進(jìn)入切換Active流程
# DFSZKFailoverController進(jìn)行選主操作,
# 確保新的Active節(jié)點(diǎn),然后通過RPC將StandbyNameNode切換為ActiveNameNode,完成故障轉(zhuǎn)移
# HA 解決了元數(shù)據(jù)共享,Active切換,隔離,并保證了元數(shù)據(jù)的安全性

  17. ResourceManager HA (支持一個ActiveResourceManager對應(yīng)多個StandbyResourceManager)

yarn-site.xml
# 運(yùn)行MapRedue程序必配
yarn.nodemanager.aux-services-->mapreduce_shuffle
# 配置日志聚集功能
# 日志聚集是YARN提供的日志中央化管理功能,
# 它能將運(yùn)行完成的Container/任務(wù)日志上傳到HDFS上,
# 從而減輕NodeManager負(fù)載,且提供一個中央化存儲和分析機(jī)制,
# 默認(rèn)情況下,Container/任務(wù)日志是存在各個NodeManager上的
yarn.log-aggregation-enable-->true
# 在HDFS上聚集的日志最多保存多長時間
yarn.log-aggregation.retain-seconds-->604800
# 使用ResourceManager HA
yarn.resourcemanager.ha.enabled-->true
# 添加一個ResourceManager集群ID
yarn.resourcemanager.cluster-id-->yarn-cluster
# 指定兩個ResouceManager
yarn.resourcemanager.ha.rm-ids-->rm109,rm110
# 指定ResourceManager所在機(jī)器
yarn.resourcemanager.hostname.rm109-->hadoop09-linux-02.ibeifeng.com
yarn.resourcemanager.hostname.rm110-->hadoop09-linux-03.ibeifeng.com
# 配置Zookeeper機(jī)器地址
yarn.resourcemanager.zk-address-->hadoop09-linux-01.ibeifeng.com:2181,hadoop09-linux-02.ibeifeng.com:2181,hadoop09-linux-03.ibeifeng.com:2181
# ResourceManager恢復(fù)
yarn.resourcemanager.recovery.enabled-->true
# 修改ResourceManager默認(rèn)存儲日志的方式
yarn.resourcemanager.store.class-->org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
# 分發(fā)到各個節(jié)點(diǎn)

  18. 分別啟動(之前先啟動Zookeeper)

節(jié)點(diǎn)1:sbin/start-dfs.sh
節(jié)點(diǎn)1:sbin/start-yarn.sh
節(jié)點(diǎn)1:sbin/start-yarn.sh

  19. 打開web查看各類信息,當(dāng)使用節(jié)點(diǎn)3打開resourcemanager,發(fā)現(xiàn)它會自動重定向到節(jié)點(diǎn)2
  20. 節(jié)點(diǎn)1測試一個mr程序,斷掉節(jié)點(diǎn)2的ResourceManager,查看web

bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount tmp/mapreduce/wordcount/input tmp/mapreduce/wordcount/output2
kill -9 xx
# 當(dāng)kill節(jié)點(diǎn)2的ResourceManager的一瞬間,節(jié)點(diǎn)報錯(連接超時)
# java.io.IOException: Failed on local exception: java.io.EOFException; Host Details : local host is: "hadoop09-linux-01.ibeifeng.com/10.0.0.108"; destination host is: "hadoop09-linux-02.ibeifeng.com":8032; 
# 打開節(jié)點(diǎn)3的web頁面發(fā)現(xiàn)該程序仍在運(yùn)行,即由節(jié)點(diǎn)3的ResoreceManager接管執(zhí)行mr程序
# 過了幾十秒后mr程序成功運(yùn)行完畢
# 內(nèi)部已設(shè)置一個監(jiān)控器,所以可以自動切換

  21. 進(jìn)入Zookeeper客戶端查看

../zookeeper-3.4.6/bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[rmstore, yarn-leader-election, hadoop-ha, zookeeper] 
[zk: localhost:2181(CONNECTED) 1] ls /rmstore
[ZKRMStateRoot]
[zk: localhost:2181(CONNECTED) 2] ls /rmstore/ZKRMStateRoot
[RMAppRoot, RMVersionNode, RMDTSecretManagerRoot]

轉(zhuǎn)載于:https://www.cnblogs.com/eRrsr/p/5988404.html

總結(jié)

以上是生活随笔為你收集整理的Hadoop.2.x_HA部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。