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種情況:
- 先啟動JournalNode,再啟動Hdfs,NameNode可以啟動並可以正常執行
- 使用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+mysql(mariadb)實現高可用(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 高可用(HA)(5):RabbitMQ HA
本系列會分析OpenStack 的高可用性(HA)概念和解決方案: 1. RabbitMQ 叢集 你可以使用若干個RabbitMQ 節點組成一個 RabbitMQ 叢集。叢集解決的是擴充套件性問題。所有的資料和狀態都會在叢集內所有的節點上被複制,只
理解 OpenStack 高可用(HA)(3):Neutron 分散式虛擬路由(Neutron Distributed Virtual Routing)
本系列會分析OpenStack 的高可用性(HA)概念和解決方案: Neutron 作為 OpenStack 一個基礎性關鍵服務,高可用性(HA)和擴充套件性是它的基本需求之一。對 neutron server 來說,因為它是無狀態的,我們可以使用負載均衡器(Load B
理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虛擬路由冗餘協議(VRRP)
本系列會分析OpenStack 的高可用性(HA)概念和解決方案: 1. 基礎知識 1.1 虛擬路由冗餘協議 - VRRP 1.1.1 概念 路由器是整個網路的核心。一個網路內的所有主機往往都設定一條預設路由,這樣,主機發出的目的地址不在本網段的報文將被通過預設路由
理解 OpenStack 高可用(HA)(1):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命令怎麽用? ①熱備從節點(從節點一般不在生產環境使用,可以在從節點上執