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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Hadoop.2.x_HA部署

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

一、概念與HA思路

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

二、部署與搭建測試

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

*.env
# 配置JDK路徑
hdfs-site.xml
# 服務配置
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
# 隔離機制
dfs.ha.fencing.methods-->sshfence
# 注意測試那幾個節點是否能夠連通 ssh hadoop09-linux-01.ibeifeng.com
dfs.ha.fencing.ssh.private-key-files-->/home/liuwl/.ssh/id_rsa
# 訪問文件系統權限
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. 分發配置文件目錄(注意剛才新建的data/dfs/jn,其他節點也要保持一致)

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(轉13步)

bin/zkServer start

  6. 分別啟動JournalNode服務

sbin/hadoop-daemon.sh start journalnode

  7. 在nn1所在節點進行格式化文件系統,并啟動

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

  8. 在nn2所在節點進行同步元數據信息,并啟動

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

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

bin/hdfs haadmin -transitionToActive nn1

  10. 在nn1所在節點啟動所有datanode

sbin/hadoop-daemon.sh start datanode

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

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

  12. 網頁上查看namenode狀態或使用命令

bin/hdfs haadmin -getServiceState nn2

  13. 使用Zookeeper自動轉移故障

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,注意每個節點上的Zookeeper服務為開啟狀態(轉13步)

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

  15. 測試Zookeeper存儲

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

  16. 啟動yarn,上傳一個wc.input,節點三運行MR程序,運行時,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狀態
# 分析結論:DFSZKFailoverController監控NameNode狀態,NameNode宕掉,監聽器馬上告訴Zookeeper,
# Zookeeper告知Standby的DFSZKFailoverController,進入切換Active流程
# DFSZKFailoverController進行選主操作,
# 確保新的Active節點,然后通過RPC將StandbyNameNode切換為ActiveNameNode,完成故障轉移
# HA 解決了元數據共享,Active切換,隔離,并保證了元數據的安全性

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

yarn-site.xml
# 運行MapRedue程序必配
yarn.nodemanager.aux-services-->mapreduce_shuffle
# 配置日志聚集功能
# 日志聚集是YARN提供的日志中央化管理功能,
# 它能將運行完成的Container/任務日志上傳到HDFS上,
# 從而減輕NodeManager負載,且提供一個中央化存儲和分析機制,
# 默認情況下,Container/任務日志是存在各個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所在機器
yarn.resourcemanager.hostname.rm109-->hadoop09-linux-02.ibeifeng.com
yarn.resourcemanager.hostname.rm110-->hadoop09-linux-03.ibeifeng.com
# 配置Zookeeper機器地址
yarn.resourcemanager.zk-address-->hadoop09-linux-01.ibeifeng.com:2181,hadoop09-linux-02.ibeifeng.com:2181,hadoop09-linux-03.ibeifeng.com:2181
# ResourceManager恢復
yarn.resourcemanager.recovery.enabled-->true
# 修改ResourceManager默認存儲日志的方式
yarn.resourcemanager.store.class-->org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
# 分發到各個節點

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

節點1:sbin/start-dfs.sh
節點1:sbin/start-yarn.sh
節點1:sbin/start-yarn.sh

  19. 打開web查看各類信息,當使用節點3打開resourcemanager,發現它會自動重定向到節點2
  20. 節點1測試一個mr程序,斷掉節點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
# 當kill節點2的ResourceManager的一瞬間,節點報錯(連接超時)
# 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; 
# 打開節點3的web頁面發現該程序仍在運行,即由節點3的ResoreceManager接管執行mr程序
# 過了幾十秒后mr程序成功運行完畢
# 內部已設置一個監控器,所以可以自動切換

  21. 進入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]

轉載于:https://www.cnblogs.com/eRrsr/p/5988404.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。