婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程圖解

基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程圖解

熱門標簽:咸陽穩定外呼系統公司 天津外呼系統運營商 漯河電銷外呼系統價格 征服者快捷酒店地圖標注 蕪湖呼叫中心外呼系統哪家強 貴陽語音電銷機器人 ec外呼系統怎么樣 電銷機器人怎么錄音 貴港市機器人外呼系統團隊

一、高可用簡介

Hadoop 高可用 (High Availability) 分為 HDFS 高可用和 YARN 高可用,兩者的實現基本類似,但 HDFS NameNode 對數據存儲及其一致性的要求比 YARN ResourceManger 高得多,所以它的實現也更加復雜,故下面先進行講解:

1.1 高可用整體架構

HDFS 高可用架構如下:

圖片引用自: https://www.edureka.co/blog/how-to-set-up-hadoop-cluster-with-hdfs-high-availability/

HDFS 高可用架構主要由以下組件所構成:

Active NameNode 和 Standby NameNode:兩臺 NameNode 形成互備,一臺處于 Active 狀態,為主 NameNode,另外一臺處于 Standby 狀態,為備 NameNode,只有主 NameNode 才能對外提供讀寫服務。

  • 主備切換控制器 ZKFailoverController:ZKFailoverController 作為獨立的進程運行,對 NameNode 的主備切換進行總體控制。ZKFailoverController 能及時檢測到 NameNode 的健康狀況,在主 NameNode 故障時借助 Zookeeper 實現自動的主備選舉和切換,當然 NameNode 目前也支持不依賴于 Zookeeper 的手動主備切換。
  • Zookeeper 集群:為主備切換控制器提供主備選舉支持。共享存儲系統:共享存儲系統是實現 NameNode 的高可用最為關鍵的部分,共享存儲系統保存了 NameNode 在運行過程中所產生的 HDFS 的元數據。
  • 主 NameNode 和 NameNode 通過共享存儲系統實現元數據同步。在進行主備切換的時候,新的主 NameNode 在確認元數據完全同步之后才能繼續對外提供服務。
  • DataNode 節點:除了通過共享存儲系統共享 HDFS 的元數據信息之外,主 NameNode 和備 NameNode 還需要共享 HDFS 的數據塊和 DataNode 之間的映射關系。
  • DataNode 會同時向主 NameNode 和備 NameNode 上報數據塊的位置信息。

1.2 基于 QJM 的共享存儲系統的數據同步機制分析

目前 Hadoop 支持使用 Quorum Journal Manager (QJM) 或 Network File System (NFS) 作為共享的存儲系統,這里以 QJM 集群為例進行說明:Active NameNode 首先把 EditLog 提交到 JournalNode 集群,然后 Standby NameNode 再從 JournalNode 集群定時同步 EditLog,當 Active NameNode 宕機后, Standby NameNode 在確認元數據完全同步之后就可以對外提供服務。

需要說明的是向 JournalNode 集群寫入 EditLog 是遵循 “過半寫入則成功” 的策略,所以你至少要有3個 JournalNode 節點,當然你也可以繼續增加節點數量,但是應該保證節點總數是奇數。同時如果有 2N+1 臺 JournalNode,那么根據過半寫的原則,最多可以容忍有 N 臺 JournalNode 節點掛掉。

1.3 NameNode 主備切換

NameNode 實現主備切換的流程下圖所示:

HealthMonitor 初始化完成之后會啟動內部的線程來定時調用對應 NameNode 的 HAServiceProtocol RPC 接口的方法,對 NameNode 的健康狀態進行檢測。

HealthMonitor 如果檢測到 NameNode 的健康狀態發生變化,會回調 ZKFailoverController 注冊的相應方法進行處理。

如果 ZKFailoverController 判斷需要進行主備切換,會首先使用 ActiveStandbyElector 來進行自動的主備選舉。

ActiveStandbyElector 與 Zookeeper 進行交互完成自動的主備選舉。

ActiveStandbyElector 在主備選舉完成后,會回調 ZKFailoverController 的相應方法來通知當前的 NameNode 成為主 NameNode 或備 NameNode。

ZKFailoverController 調用對應 NameNode 的 HAServiceProtocol RPC 接口的方法將 NameNode 轉換為 Active 狀態或 Standby 狀態。

1.4 YARN高可用

YARN ResourceManager 的高可用與 HDFS NameNode 的高可用類似,但是 ResourceManager 不像 NameNode ,沒有那么多的元數據信息需要維護,所以它的狀態信息可以直接寫到 Zookeeper 上,并依賴 Zookeeper 來進行主備選舉。

二、集群規劃

按照高可用的設計目標:需要保證至少有兩個 NameNode (一主一備) 和 兩個 ResourceManager (一主一備) ,同時為滿足“過半寫入則成功”的原則,需要至少要有3個 JournalNode 節點。這里使用三臺主機進行搭建,集群規劃如下:

三、前置條件所有服務器都安裝有JDK,安裝步驟可以參見:Linux下JDK的安裝;搭建好ZooKeeper集群,搭建步驟可以參見:Zookeeper單機環境和集群環境搭建所有服務器之間都配置好SSH免密登錄。

四、集群配置

4.1 下載并解壓

下載Hadoop。這里我下載的是CDH版本Hadoop,下載地址為:http://archive.cloudera.com/cdh5/cdh/5/

# tar -zvxf hadoop-2.6.0-cdh5.15.2.tar.gz

4.2 配置環境變量

編輯profile文件:

# vim /etc/profile

增加如下配置:

export HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2export PATH=${HADOOP_HOME}/bin:$PATH

執行source命令,使得配置立即生效:

# source /etc/profile

4.3 修改配置

進入${HADOOP_HOME}/etc/hadoop目錄下,修改配置文件。各個配置文件內容如下:

1. hadoop-env.sh

# 指定JDK的安裝位置export JAVA_HOME=/usr/java/jdk1.8.0_201/

2. core-site.xml

<configuration>
 <property>
 <!-- 指定namenode的hdfs協議文件系統的通信地址 -->
 <name>fs.defaultFS</name>
 <value>hdfs://hadoop001:8020</value>
 </property>
 <property>
 <!-- 指定hadoop集群存儲臨時文件的目錄 -->
 <name>hadoop.tmp.dir</name>
 <value>/home/hadoop/tmp</value>
 </property>
 <property>
 <!-- ZooKeeper集群的地址 -->
 <name>ha.zookeeper.quorum</name>
 <value>hadoop001:2181,hadoop002:2181,hadoop002:2181</value>
 </property>
 <property>
 <!-- ZKFC連接到ZooKeeper超時時長 -->
 <name>ha.zookeeper.session-timeout.ms</name>
 <value>10000</value>
 </property>
</configuration>

3. hdfs-site.xml

<configuration>
 <property>
 <!-- 指定HDFS副本的數量 -->
 <name>dfs.replication</name>
 <value>3</value>
 </property>
 <property>
 <!-- namenode節點數據(即元數據)的存放位置,可以指定多個目錄實現容錯,多個目錄用逗號分隔 -->
 <name>dfs.namenode.name.dir</name>
 <value>/home/hadoop/namenode/data</value>
 </property>
 <property>
 <!-- datanode節點數據(即數據塊)的存放位置 -->
 <name>dfs.datanode.data.dir</name>
 <value>/home/hadoop/datanode/data</value>
 </property>
 <property>
 <!-- 集群服務的邏輯名稱 -->
 <name>dfs.nameservices</name>
 <value>mycluster</value>
 </property>
 <property>
 <!-- NameNode ID列表-->
 <name>dfs.ha.namenodes.mycluster</name>
 <value>nn1,nn2</value>
 </property>
 <property>
 <!-- nn1的RPC通信地址 -->
 <name>dfs.namenode.rpc-address.mycluster.nn1</name>
 <value>hadoop001:8020</value>
 </property>
 <property>
 <!-- nn2的RPC通信地址 -->
 <name>dfs.namenode.rpc-address.mycluster.nn2</name>
 <value>hadoop002:8020</value>
 </property>
 <property>
 <!-- nn1的http通信地址 -->
 <name>dfs.namenode.http-address.mycluster.nn1</name>
 <value>hadoop001:50070</value>
 </property>
 <property>
 <!-- nn2的http通信地址 -->
 <name>dfs.namenode.http-address.mycluster.nn2</name>
 <value>hadoop002:50070</value>
 </property>
 <property>
 <!-- NameNode元數據在JournalNode上的共享存儲目錄 -->
 <name>dfs.namenode.shared.edits.dir</name>
 <value>qjournal://hadoop001:8485;hadoop002:8485;hadoop003:8485/mycluster</value>
 </property>
 <property>
 <!-- Journal Edit Files的存儲目錄 -->
 <name>dfs.journalnode.edits.dir</name>
 <value>/home/hadoop/journalnode/data</value>
 </property>
 <property>
 <!-- 配置隔離機制,確保在任何給定時間只有一個NameNode處于活動狀態 -->
 <name>dfs.ha.fencing.methods</name>
 <value>sshfence</value>
 </property>
 <property>
 <!-- 使用sshfence機制時需要ssh免密登錄 -->
 <name>dfs.ha.fencing.ssh.private-key-files</name>
 <value>/root/.ssh/id_rsa</value>
 </property>
 <property>
 <!-- SSH超時時間 -->
 <name>dfs.ha.fencing.ssh.connect-timeout</name>
 <value>30000</value>
 </property>
 <property>
 <!-- 訪問代理類,用于確定當前處于Active狀態的NameNode -->
 <name>dfs.client.failover.proxy.provider.mycluster</name>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
 </property>
 <property>
 <!-- 開啟故障自動轉移 -->
 <name>dfs.ha.automatic-failover.enabled</name>
 <value>true</value>
 </property>
</configuration>

4. yarn-site.xml

<configuration>
 <property>
 <!--配置NodeManager上運行的附屬服務。需要配置成mapreduce_shuffle后才可以在Yarn上運行MapReduce程序。-->
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
 </property>
 <property>
 <!-- 是否啟用日志聚合(可選) -->
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
 </property>
 <property>
 <!-- 聚合日志的保存時間(可選) -->
 <name>yarn.log-aggregation.retain-seconds</name>
 <value>86400</value>
 </property>
 <property>
 <!-- 啟用RM HA -->
 <name>yarn.resourcemanager.ha.enabled</name>
 <value>true</value>
 </property>
 <property>
 <!-- RM集群標識 -->
 <name>yarn.resourcemanager.cluster-id</name>
 <value>my-yarn-cluster</value>
 </property>
 <property>
 <!-- RM的邏輯ID列表 -->
 <name>yarn.resourcemanager.ha.rm-ids</name>
 <value>rm1,rm2</value>
 </property>
 <property>
 <!-- RM1的服務地址 -->
 <name>yarn.resourcemanager.hostname.rm1</name>
 <value>hadoop002</value>
 </property>
 <property>
 <!-- RM2的服務地址 -->
 <name>yarn.resourcemanager.hostname.rm2</name>
 <value>hadoop003</value>
 </property>
 <property>
 <!-- RM1 Web應用程序的地址 -->
 <name>yarn.resourcemanager.webapp.address.rm1</name>
 <value>hadoop002:8088</value>
 </property>
 <property>
 <!-- RM2 Web應用程序的地址 -->
 <name>yarn.resourcemanager.webapp.address.rm2</name>
 <value>hadoop003:8088</value>
 </property>
 <property>
 <!-- ZooKeeper集群的地址 -->
 <name>yarn.resourcemanager.zk-address</name>
 <value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>
 </property>
 <property>
 <!-- 啟用自動恢復 -->
 <name>yarn.resourcemanager.recovery.enabled</name>
 <value>true</value>
 </property>
 <property>
 <!-- 用于進行持久化存儲的類 -->
 <name>yarn.resourcemanager.store.class</name>
 <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
 </property>
</configuration>

5. mapred-site.xml

<configuration>
 <property>
 <!--指定mapreduce作業運行在yarn上-->
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

5. slaves

配置所有從屬節點的主機名或IP地址,每行一個。所有從屬節點上的DataNode服務和NodeManager服務都會被啟動。

hadoop001
hadoop002
hadoop003

4.4 分發程序

將Hadoop安裝包分發到其他兩臺服務器,分發后建議在這兩臺服務器上也配置一下Hadoop的環境變量。

# 將安裝包分發到hadoop002
scp -r /usr/app/hadoop-2.6.0-cdh5.15.2/ hadoop002:/usr/app/
# 將安裝包分發到hadoop003
scp -r /usr/app/hadoop-2.6.0-cdh5.15.2/ hadoop003:/usr/app/

5.1 啟動ZooKeeper

分別到三臺服務器上啟動ZooKeeper服務:

 zkServer.sh start

5.2 啟動Journalnode

分別到三臺服務器的的${HADOOP_HOME}/sbin目錄下,啟動journalnode進程:

hadoop-daemon.sh start journalnode

5.3 初始化NameNode

hadop001上執行NameNode初始化命令:

hdfs namenode -format

執行初始化命令后,需要將NameNode元數據目錄的內容,復制到其他未格式化的NameNode上。元數據存儲目錄就是我們在hdfs-site.xml中使用dfs.namenode.name.dir屬性指定的目錄。這里我們需要將其復制到hadoop002上:

 scp -r /home/hadoop/namenode/data hadoop002:/home/hadoop/namenode/

5.4 初始化HA狀態

在任意一臺NameNode上使用以下命令來初始化ZooKeeper中的HA狀態:

hdfs zkfc -formatZK

5.5 啟動HDFS

進入到hadoop001${HADOOP_HOME}/sbin目錄下,啟動HDFS。此時hadoop001hadoop002上的NameNode服務,和三臺服務器上的DataNode服務都會被啟動:

start-dfs.sh

5.6 啟動YARN

進入到hadoop002${HADOOP_HOME}/sbin目錄下,啟動YARN。此時hadoop002上的ResourceManager服務,和三臺服務器上的NodeManager服務都會被啟動:

start-yarn.sh

需要注意的是,這個時候hadoop003上的ResourceManager服務通常是沒有啟動的,需要手動啟動:

yarn-daemon.sh start resourcemanager

六、查看集群

6.1 查看進程

成功啟動后,每臺服務器上的進程應該如下:

[root@hadoop001 sbin]# jps
4512 DFSZKFailoverController
3714 JournalNode
4114 NameNode
3668 QuorumPeerMain
5012 DataNode
4639 NodeManager
[root@hadoop002 sbin]# jps
4499 ResourceManager
4595 NodeManager
3465 QuorumPeerMain
3705 NameNode
3915 DFSZKFailoverController
5211 DataNode
3533 JournalNode
[root@hadoop003 sbin]# jps
3491 JournalNode
3942 NodeManager
4102 ResourceManager
4201 DataNode
3435 QuorumPeerMain

6.2 查看Web UI

HDFS和YARN的端口號分別為500708080,界面應該如下:

此時hadoop001上的NameNode處于可用狀態:

而hadoop002上的NameNode則處于備用狀態:



hadoop002上的ResourceManager處于可用狀態:



hadoop003上的ResourceManager則處于備用狀態:



同時界面上也有Journal Manager的相關信息:


七、集群的二次啟動

上面的集群初次啟動涉及到一些必要初始化操作,所以過程略顯繁瑣。但是集群一旦搭建好后,想要再次啟用它是比較方便的,步驟如下(首選需要確保ZooKeeper集群已經啟動):

hadoop001啟動 HDFS,此時會啟動所有與 HDFS 高可用相關的服務,包括 NameNode,DataNode 和 JournalNode:

start-dfs.sh

hadoop002啟動YARN:

start-yarn.sh

這個時候hadoop003上的ResourceManager服務通常還是沒有啟動的,需要手動啟動:

yarn-daemon.sh start resourcemanager

參考資料

以上搭建步驟主要參考自官方文檔:

HDFS High Availability Using the Quorum Journal ManagerResourceManager High Availability

總結

以上所述是小編給大家介紹的基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程圖解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

標簽:香港 濰坊 西寧 攀枝花 西藏 東營 怒江 淮北

巨人網絡通訊聲明:本文標題《基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程圖解》,本文關鍵詞  基于,ZooKeeper,搭建,Hadoop,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程圖解》相關的同類信息!
  • 本頁收集關于基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程圖解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲同性gay激情无套| 久久精品视频免费| 欧美精品在线一区二区三区| 日韩欧美中文一区二区| 中国色在线观看另类| 国产激情一区二区三区桃花岛亚洲| 欧美在线观看禁18| 国产日本亚洲高清| 国精产品一区一区三区mba桃花| 日韩欧美国产综合| 国产精品亚洲第一区在线暖暖韩国 | 狠狠色狠狠色综合| 精品久久久网站| 精品久久久久久久久久久久久久久 | 久久―日本道色综合久久| 亚洲综合偷拍欧美一区色| 豆国产96在线|亚洲| 欧美va天堂va视频va在线| 日韩精品欧美精品| 色丁香久综合在线久综合在线观看| 久久综合久色欧美综合狠狠| 婷婷综合五月天| 91黄视频在线| 亚洲精品伦理在线| 精品亚洲porn| 色综合激情久久| 国产肉丝袜一区二区| 国产精品女人毛片| 国产成人免费视频网站高清观看视频| 欧美大白屁股肥臀xxxxxx| 丝袜美腿成人在线| 日韩欧美国产电影| 亚洲另类春色国产| 成人一区二区三区| 亚洲免费看黄网站| 色网站国产精品| 亚洲va韩国va欧美va| 欧美色综合久久| 婷婷成人综合网| 欧美美女直播网站| 白白色 亚洲乱淫| 亚洲视频一区二区免费在线观看 | 91丨porny丨中文| 亚洲线精品一区二区三区八戒| 亚洲精品国产第一综合99久久| 国产麻豆精品一区二区| 亚洲激情av在线| 不卡视频在线看| 亚洲天堂2014| 国产69精品久久777的优势| 中文字幕免费观看一区| www.日本不卡| 亚洲午夜国产一区99re久久| 在线观看视频欧美| 视频一区二区欧美| 久久久夜色精品亚洲| 国产精品1区2区| 亚洲综合在线免费观看| 日韩欧美亚洲另类制服综合在线 | 精品国产一区二区在线观看| 久久99精品国产麻豆婷婷洗澡| 欧美国产精品一区二区| 日本韩国一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 51午夜精品国产| 色狠狠桃花综合| 国产馆精品极品| 蜜桃久久av一区| 久久蜜臀精品av| 97久久精品人人做人人爽| 欧美aaaaa成人免费观看视频| 中文字幕第一区综合| 宅男噜噜噜66一区二区66| 97se亚洲国产综合自在线观| 91麻豆成人久久精品二区三区| 蜜桃视频在线一区| 一区二区成人在线观看| 色呦呦一区二区三区| 欧美放荡的少妇| 国产成人精品一区二 | 色欧美88888久久久久久影院| 一区二区三区日韩在线观看| 又紧又大又爽精品一区二区| 2020国产精品| 成人国产精品免费网站| 天堂久久一区二区三区| 中文字幕日本乱码精品影院| 91小视频免费看| 激情五月婷婷综合网| 亚洲男同性视频| 国产精品视频你懂的| 亚洲精品在线观看网站| 日韩精品一区在线观看| 从欧美一区二区三区| eeuss鲁一区二区三区| 国产一区激情在线| 久久精品国产久精国产| 日本欧美一区二区三区| 国内精品在线播放| 天堂久久久久va久久久久| 亚洲精品日日夜夜| 欧美国产成人在线| 在线视频中文字幕一区二区| 色妞www精品视频| 99精品久久免费看蜜臀剧情介绍| 午夜精品福利视频网站 | www.欧美精品一二区| 国产aⅴ精品一区二区三区色成熟| 日本三级亚洲精品| 激情综合色丁香一区二区| 一区二区国产视频| 国产.精品.日韩.另类.中文.在线.播放| 丝袜美腿亚洲综合| 九色综合国产一区二区三区| 一区视频在线播放| 中文字幕在线不卡国产视频| 精品盗摄一区二区三区| 欧美日韩国产欧美日美国产精品| 欧美性色综合网| 国产一区二区不卡| 综合在线观看色| 日韩欧美在线1卡| 欧美va亚洲va香蕉在线| 2022国产精品视频| 欧美国产精品中文字幕| 国产精品国产自产拍在线| 中文字幕亚洲精品在线观看| 亚洲二区在线视频| 国产一区三区三区| 91久久一区二区| 欧美色综合网站| 51精品视频一区二区三区| 91精品国产91热久久久做人人 | 国产精品久久久爽爽爽麻豆色哟哟| 综合久久久久久久| 日韩电影在线一区二区| 欧美日韩精品免费观看视频 | a美女胸又www黄视频久久| www.日韩精品| 欧美色图在线观看| 欧美视频中文字幕| 精品盗摄一区二区三区| 久久精品视频在线免费观看| 自拍偷自拍亚洲精品播放| 成人免费在线视频观看| 亚洲午夜免费福利视频| 男男视频亚洲欧美| 不卡在线视频中文字幕| 色婷婷综合久久久久中文一区二区| 欧美写真视频网站| 精品日产卡一卡二卡麻豆| 国产日韩av一区二区| 欧美日韩国产小视频在线观看| 欧美精品色综合| 国产日本亚洲高清| 亚洲一区在线观看免费观看电影高清| 精品亚洲免费视频| 91在线播放网址| 国产精品网站导航| 精品一区二区三区免费视频| 中文字幕精品一区| 免费成人性网站| 91免费在线看| 久久这里只有精品首页| 亚洲综合无码一区二区| 国产精品911| 裸体一区二区三区| 成人a区在线观看| 国产日韩欧美不卡在线| 日韩1区2区日韩1区2区| 成人午夜视频免费看| 欧美va天堂va视频va在线| 亚洲一区二区欧美日韩| 99麻豆久久久国产精品免费优播| 日韩午夜在线影院| 亚洲超碰97人人做人人爱| 国产一区二区三区| 久久一区二区三区国产精品| 欧美精品亚洲二区| 久久无码av三级| 久久精品免费观看| 国产精品情趣视频| 欧美少妇性性性| 亚洲日本一区二区| 99久久777色| 国产精品久久久久一区二区三区| 奇米色777欧美一区二区| 91激情在线视频| 怡红院av一区二区三区| 91视视频在线观看入口直接观看www| 精品捆绑美女sm三区| 精东粉嫩av免费一区二区三区| 欧美久久久久久久久久| 天涯成人国产亚洲精品一区av| 91黄色免费看| 日韩不卡一区二区三区| 6080日韩午夜伦伦午夜伦| 午夜视频在线观看一区| 日韩欧美一二三区| 91精品啪在线观看国产60岁|