1. 程式人生 > >Hadoop 及 YARN 的高可用(HA)配置

Hadoop 及 YARN 的高可用(HA)配置

機器節點名稱:node1、node2、node3、
Linux:Centos6.9

上傳 Hadoop 的配置

1.使用 hadoop 使用者進入/home/hadoop/apps 目錄下
2.上傳安裝檔案並解壓:tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz
3.使用 root 使用者建立軟連線

ln -s /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0 /usr/local/hadoop

4.使用 root使用者修改軟連線主人

chown -R hadoop:hadoop /usr/loacl/hadoop

5.使用 root 使用者配置環境變數檔案/etc/profile

vim /etc/profile
新增內容如下
export ZOOKEEPER_HOME=/usr/local/zookeeper
export HADOOP_HOME=/usr/local/hadoop
export JAVA_HOME=/usr/local/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

6.使環境變數生效source /etc/profile

配置 HDFS

1.使用 hadoop 使用者進入 Hadoop 配置檔案路徑

cd /usr/local/hadoop/etc/hadoop

2.修改五個配置檔案
1. hadoop-env.sh 第25行的 JAVA_HOME=/usr/local/jdk1.8.0_151
2. 配置core-site.xml
3. 配置hdfs-site.xml
下面的是配置 YARN
4. 修改yarn-site.xml
5. 修改mapred-site.xml 拷貝模板重新命名
(HA)配置程式碼過多四個檔案下載地址:
https://download.csdn.net/download/qq_1290259791/10308316


3.修改 slaves($HADOOP_HOME/etc/hadoop下)
設定啟動節點主機名稱,在 slaves 檔案中新增節點的主機名稱

node1
node2
node3

node1、2、3是我自己配置的虛擬機器名稱

4.配置hadoop使用者免密碼登入
在 node1產生鑰匙對
命令ssh-keygen -t rsa回車就可以了
將公鑰拷貝到其他節點,包括本機

ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

5.將配置好的 hadoop 拷貝到其他節點

scp -r hadoop-2.6.0-cdh5.7.0  hadoop@node02:/home/hadoop/apps
scp -r hadoop-2.6.0-cdh5.7.0  hadoop@node03:/home/hadoop/apps
scp -r hadoop-2.6.0-cdh5.7.0  hadoop@node04:/home/hadoop/apps

6.在每個節點下分別執行以下操作
1. root 建立軟連線
2. 軟連線易主
3. root 使用者新增環境變數
4. 使環境變數生效

叢集的啟動步驟

1.啟動journalnode(分別在node1、node2、node3上執行啟動)
/usr/local/hadoop/sbin/hadoop-daemon.sh start journalnode
執行 jps 命令檢驗,是不是多 JournalNode 程序

2.格式化 HDFS
在 node1上執行命令hdfs namenode -format
出現以下,就是格式化成功

INFO util.ExitUtil: Exiting with status 0
格式化成功之後會在core-site.xml中的hadoop.tmp.dir指定的路徑下生成dfs資料夾,將該資料夾拷貝到node2(備用 namenode 節點)的相同路徑下
scp -r hdpdata hadoop@node2:/usr/local/hadoop

3.在 node1上執行格式化操作 ZKFC

hdfs zkfc -formatZK

執行成功,日誌輸出如下資訊
INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns in ZK

4.node1在$HADOOP_HOME/sbin 目錄下啟動 HDFS

sbin/start-dfs.sh

這裡寫圖片描述

node1節點下

[hadoop@node1 sbin]$ jps
12899 JournalNode
12628 NameNode
3271 QuorumPeerMain
12731 DataNode
13307 Jps
13039 DFSZKFailoverController

node2節點下

[hadoop@node2 sbin]$ jps
1262 NameNode
8576 DataNode
9075 Jps
8716 DFSZKFailoverController
8653 JournalNode
2350 QuorumPeerMain

node3節點下

[root@node3 ~]# jps
2562 Jps
2503 JournalNode
2409 DataNode
2138 QuorumPeerMain

Web 網頁訪問

http://node1:50070
這裡寫圖片描述
頁面中有“active”,說明node1節點的namenode處於active態

http://node2:50070
這裡寫圖片描述
頁面中有“standby”,說明node2節點的namenode處於standby態(備用)

測試 HA

直接kill掉處於active狀態的namenode(node1),測試另一處於standby狀態的namenode(node2)是否能接管HDFS相關服務。

這裡寫圖片描述
這裡寫圖片描述

重啟 node1的 namenode

[hadoop@node1 sbin]$ ./hadoop-daemon.sh start namenode
starting namenode, logging to /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-namenode-node1.out
[hadoop@node1 sbin]$ 

這裡寫圖片描述

Hadoop 的 HA 模式成功執行

YARN 的 HA 模式

[[email protected] sbin]$ ./start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-resourcemanager-node1.out
node3: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-nodemanager-node3.out
node2: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-nodemanager-node2.out
node1: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-nodemanager-node1.out
[[email protected] sbin]$ 

node1節點

[hadoop@node1 sbin]$ jps
14612 ResourceManager
13926 DataNode
14455 NameNode
3271 QuorumPeerMain
14711 NodeManager
15047 Jps
14234 DFSZKFailoverController
14094 JournalNode
[hadoop@node1 sbin]$ 

node2節點

[hadoop@node2 sbin]$ jps
9317 DataNode
9864 Jps
9481 DFSZKFailoverController
9246 NameNode
2350 QuorumPeerMain
9391 JournalNode
9727 NodeManager
[hadoop@node2 sbin]$ 

node3節點

[hadoop@node3 hadoop-2.6.0-cdh5.7.0]$ jps
4934 JournalNode
5048 NodeManager
2059 QuorumPeerMain
4860 DataNode
5183 Jps
[hadoop@node3 hadoop-2.6.0-cdh5.7.0]$ 

單獨啟用 node2的備用 resourcemanager

[hadoop@node2 sbin]$ ./yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-resourcemanager-node2.out
[hadoop@node2 sbin]$ jps
10000 ResourceManager
9317 DataNode
10037 Jps
9481 DFSZKFailoverController
9246 NameNode
2350 QuorumPeerMain
9391 JournalNode
9727 NodeManager
[hadoop@node2 sbin]$ 

Web 網頁訪問

測試 YARN 的 HA

[hadoop@node1 sbin]$ jps
14612 ResourceManager
13926 DataNode
14455 NameNode
3271 QuorumPeerMain
14711 NodeManager
14234 DFSZKFailoverController
14094 JournalNode
15119 Jps
[hadoop@node1 sbin]$ kill 14612
[hadoop@node1 sbin]$ ./yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-resourcemanager-node1.out
[hadoop@node1 sbin]$ jps
15204 ResourceManager
15237 Jps
13926 DataNode
14455 NameNode
3271 QuorumPeerMain
14711 NodeManager
14234 DFSZKFailoverController
14094 JournalNode

遇到的兩個問題
1)a shared edits dir must not be specified if HA is not enabled.
說我沒有開啟高可用方式,但是我開了。
這裡寫圖片描述
這裡的名字需要保持一致
2)HA按照規劃配置好,啟動後,NameNode不能正常啟動。剛啟動的時候 jps 看到了NameNode,但是隔了一兩分鐘,再看NameNode就不見了。
報錯誤

8485 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

但是測試之後,發現下面2種情況:

  1. 先啟動JournalNode,再啟動Hdfs,NameNode可以啟動並可以正常執行
  2. 使用start-dfs.sh啟動,眾多服務都啟動了,隔兩分鐘NameNode會退出,再次hadoop-daemon.sh start namenode單獨啟動可以成功穩定執行NameNode。
    解決辦法修改core-site.xml中的ipc引數
<property>
<name>ipc.client.connect.max.retries</name>
<value>100</value>
<description>Indicates the number of retries a client will make to establish
a server connection.
</description>
</property>

問題原因 :因為先啟動JournalNode或者再次啟動NameNode就可以了,說明JournalNode並沒有準備好,而NameNode已經用完了所有重試次數。
Namenode向JournalNode發起的ipc連線請求的重試次數。

相關推薦

Hadoop YARN可用HA配置

機器節點名稱:node1、node2、node3、 Linux:Centos6.9 上傳 Hadoop 的配置 1.使用 hadoop 使用者進入/home/hadoop/apps 目錄下 2.上傳安裝檔案並解壓:tar -zxvf hadoop-2

YARN 可用HA叢集搭建CDH

HDFS 高可用叢集安裝完成之後,緊接著快速搞定YARN的叢集搭建。 1.修改YARN配置檔案 1.1修改yarn-site.xml <configuration> <property> <name>yarn.resourcem

HDFS可用HA配置

關於HDFS HA如何進行設計,請檢視——>HDFS高可用(HA)設計,以下的配置也都是根據此文中的設計方式進行配置,所以為了更好的理解下面各個配置的含義,務必先閱讀此文。 對各個節點進行劃分: 選項 主機1 主機2 主機3

redis sentinel 可用HA方案部署,python應用示例

簡介 介紹 redis sentinel(哨兵)叢集的部署,配置一主兩從的redis叢集,並通過 python 程式例項講解通過 redis sentinel 訪問叢集 什麼是哨兵(Sentinel)模式 Redis sentinel 為 Redis 叢集提供了高可

Keepalived+Nginx實現可用HA

nginx+keepalived ha高可用高可用有2中方式。1、Nginx+keepalived 主從配置這種方案,使用一個vip地址,前端使用2臺機器,一臺做主,一臺做備,但同時只有一臺機器工作,另一臺備份機器在主機器不出現故障的時候,永遠處於浪費狀態,對於服務器不多的網站,該方案不經濟實惠。2、Ngin

Corosync+pacemaker+DRBD+mysqlmariadb實現可用ha的mysql集群centos7

corosync+pacemaker+drbd+mysql(mariadb)實現高可用(ha)的mysql集群(centos7)Corosync+pacemaker+DRBD+mysql(mariadb)實現高可用(ha)的mysql集群(centos7)目錄:介紹環境借助pcs安裝與配置corosync和p

使用Keepalived配置主從熱備實現Nginx可用HA

_id keep 過去 基礎 inter icmp interval RR 轉發 Keepalived 簡要介紹 Keepalived 是一種高性能的服務器高可用或熱備解決方案,Keepalived 可以用來防止服務器單點故障的發生,通過配合 Nginx 可以實現 w

Linux 可用HA叢集基本概念詳解

目錄 十二、總結 一、高可用叢集的定義   高可用叢集,英文原文為High Availability Cluster,簡稱HACluster,簡單的說,叢集(cluster)就是一組計算機,它們作為一個整體向用戶提供一組網路資

理解 OpenStack 可用HA5:RabbitMQ HA

本系列會分析OpenStack 的高可用性(HA)概念和解決方案: 1. RabbitMQ 叢集     你可以使用若干個RabbitMQ 節點組成一個 RabbitMQ 叢集。叢集解決的是擴充套件性問題。所有的資料和狀態都會在叢集內所有的節點上被複制,只

理解 OpenStack 可用HA3:Neutron 分散式虛擬路由Neutron Distributed Virtual Routing

本系列會分析OpenStack 的高可用性(HA)概念和解決方案:     Neutron 作為 OpenStack 一個基礎性關鍵服務,高可用性(HA)和擴充套件性是它的基本需求之一。對 neutron server 來說,因為它是無狀態的,我們可以使用負載均衡器(Load B

理解 OpenStack 可用HA2:Neutron L3 Agent HA 之 虛擬路由冗餘協議VRRP

本系列會分析OpenStack 的高可用性(HA)概念和解決方案: 1. 基礎知識 1.1 虛擬路由冗餘協議 - VRRP 1.1.1 概念     路由器是整個網路的核心。一個網路內的所有主機往往都設定一條預設路由,這樣,主機發出的目的地址不在本網段的報文將被通過預設路由

理解 OpenStack 可用HA1:OpenStack 可用和災備方案 [OpenStack HA and DR]

本系列會分析OpenStack 的高可用性(HA)概念和解決方案: 1. 基礎知識 1.1 高可用 (High Availability,簡稱 HA)     高可用性是指提供在本地系統單個元件故障情況下,能繼續訪問應用的能力,無論這個故障是業務流程、物理設施、IT軟/硬體的

openstack cinder-volume 的可用HA

為了保證雲平臺的穩定性,需要做很多部分的高可用。比如控制節點高可用、計算節點高可用、網路節點高可用、儲存的高可用等;控制節點的高可用與網路節點的高可用都有官方的文件,有詳細的安裝步驟,實現起來相對來說比

HDFS可用HA設計

首先通過配置Active/Standby兩個NameNode實現叢集中對NameNode的熱備(所謂熱備就是當Active NameNode發生故障,Standby NameNode馬上接手 Activy NameNode的工作)。要實現熱備,需要滿足以下條件:

Redis入門到可用—— Redis啟動使用

CP ber eve inf 大小 div redis-cli 號碼 更改 1. 三種啟動方式 ♦? 最簡啟動 ./redis-server 使用Redis默認配置進行啟動; ♦? 動態參數啟動 * redis-server

Redis從入門到熟練使用之測試哨兵主從可用詳解,第四篇,共五篇

測試驗證 首先檢視哨兵監控情況 然後嘗試關閉主機 再檢視剩餘2個從機,這裡會自動選舉產生新的主機 然後,我們再次將剛才停止的主機啟動起來,發現啟動後其自動成為從機 停掉master_redis主資料庫後重啟後變成從資料庫。隨機推選。 至此,

hadoop整合yarn可用HA的搭建

1、修改配置檔案; 具體的修改內容為: mapred-site.xml: <configuration> <property> <name>mapreduce.framework.name</name>

淺談秒級故障切換!用MHA輕松實現MySQL可用

mysql 高可用 mha MySQL復制是異步或者半同步的。當master故障時,一些slave可能並沒有收到最新的relay log,也就意味著每個slave可能處於不同的狀態。手動處理這些一致性問題是小事,因為不修復這些問題,就不能開始復制。但是手動修復這些問題,花費一個小時或更多的時間並不

Win2012R2 Hyper-V之17 配置Hyper-V群集可用

雲計算 虛擬化 在前面的章節中我們已經完成對於常規故障服務器的一些處理方法,即保存副本等,那如果我們需要實現高可用性怎麽辦了?即當這臺服務器性能不足或非常規宕機的時候,能夠無縫的自動實時遷移對應的虛擬服務器,以保證業務的24小時無間斷。這就是我們今天的重點Hyper-V服務器群集高可用

Redis入門到可用—— API理解和使用

入門到 16px ron 節點 理解 高可用 怎麽 生產 sca 一、通用命令 查看所有key 127.0.0.1:6379> keys * keys命令一般不在生產環境使用! keys命令怎麽用? ①熱備從節點(從節點一般不在生產環境使用,可以在從節點上執