天天看點

七、Hadoop3.3.1 HA 高可用叢集QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

目錄

前文

Hadoop3.3.1 HA 高可用叢集的搭建

QJM 的 NameNode HA

Hadoop HA模式搭建(高可用)

1、叢集規劃

2、Zookeeper叢集搭建:

3、修改Hadoop叢集配置檔案

修改 vim core-site.xml

修改 hadoop-env.sh

修改 hdfs-site.xml

workers

Yarn高可用

修改 mapred-site.xml

修改 yarn-site.xml

啟動zookeeper叢集

在每台機器上啟動:

格式化namenode、zkfc

啟動hdfs

嘗試HA模式

此時再次檢視節點

一、CentOS7 hadoop3.3.1安裝(單機分布式、僞分布式、分布式

二、JAVA API實作HDFS

三、MapReduce程式設計執行個體

四、Zookeeper3.7安裝

五、Zookeeper的Shell操作

六、Java API操作zookeeper節點

(基于Zookeeper,NameNode高可用+Yarn高可用)

用Quorum Journal Manager或正常共享存儲

QJM的NameNode HA

一共三台虛拟機,分别為master、worker1、worker2;

namenode三台上都有,resourcemanager在worker1,woker2上。

master

woker1

worker2

NameNode

yes

DataNode

no

JournalNode

NodeManager

ResourceManager

Zookeeper

ZKFC

因為沒有重新建立虛拟機,是在原本的基礎上修改。是以名稱還是hadoop1,hadoop2,hadoop3 <code>hadoop1 = master</code> <code>hadoop2 = worker1</code> <code>hadoop3 = worker2</code>

參考:四、Zookeeper3.7安裝

core-site.xml:

上面指定 zookeeper 位址中的Hadoop1,hadoop2,hadoop3換成你自己機器的主機名(要先配置好主機名與 IP 的映射)或者 ip

hadoop-env.sh

在使用叢集管理腳本的時候,由于使用ssh進行遠端登入時不會讀取/etc/profile檔案中的環境變量配置,是以使用ssh的時候java指令不會生效,是以需要在配置檔案中顯式配置jdk的絕對路徑(如果各個節點的jdk路徑不一樣的話那hadoop-env.sh中應改成本機的JAVA_HOME)。 hadoop 3.x中對角色權限進行了嚴格限制,相比于hadoop 2.x要額外對角色的所屬使用者進行規定。 此處僅為搭建HDFS叢集,如果涉及到YARN等内容的話應一并修改對應yarn-env.sh等檔案中的配置 在腳本末尾添加以下内容:

hdfs-site.xml

要建立journaldata檔案夾

在hadoop 2.x中這個檔案叫slaves,配置所有datanode的主機位址,隻需要把所有的datanode主機名填進去就好了

都修改好了,就分發給其他叢集節點

(在hadoop/etc路徑下)

scp /export/servers/hadoop-3.3.1/etc/hadoop/* hadoop2:/export/servers/hadoop-3.3.1/etc/hadoop/

scp /export/servers/hadoop-3.3.1/etc/hadoop/* hadoop3:/export/servers/hadoop-3.3.1/etc/hadoop/

七、Hadoop3.3.1 HA 高可用叢集QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

首先,在所有虛拟機上啟動journalnode:

七、Hadoop3.3.1 HA 高可用叢集QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

都啟動完畢之後,在master(hadoop1)節點上,格式化namenode

因為之前搭建過完全分布式,是以格式化一次namenode 但是,叢集中的datanode,namenode與/current/VERSION/中的<code>CuluserID</code>有關 是以再次格式化,并啟動,其他兩個節點同步格式化好的namenode并不沖突 formatZK同理

然後單獨啟動namenode:

七、Hadoop3.3.1 HA 高可用叢集QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

然後,在另外兩台機器上,同步格式化好的namenode:

應該能從master上看到傳輸資訊。

傳輸完成後,在master節點上,格式化zkfc:

在master節點上,先啟動dfs:

然後啟動yarn:

啟動mapreduce任務曆史伺服器:

可以看到各個節點的程序啟動情況:

七、Hadoop3.3.1 HA 高可用叢集QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

如果datanode未啟動

是版本号不一緻産生的問題,那麼我們就單獨解決版本号的問題,将你格式化之後的NameNode的VERSION檔案找到,然後将裡面的clusterID進行複制,再找到DataNode的VERSION檔案,将裡面的clusterID進行替換,儲存之後重新開機

首先看看各個namenode主機狀态:

七、Hadoop3.3.1 HA 高可用叢集QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

可以看到,有兩個standby,一個active。

在active的master節點上,kill掉namenode程序:

七、Hadoop3.3.1 HA 高可用叢集QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

可以看到,nn1已經切換為active,Hadoop 高可用叢集基本搭建完成。

本文來自部落格園,作者:李好秀,轉載請注明原文連結:https://www.cnblogs.com/lehoso/p/15591387.html

繼續閱讀