天天看点

七、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