hadoop_1

【dbdao.com hadoop大数据教程】hadoop HA 实验

dbDao.com 引导式IT在线教育
Hadoop 技术学习QQ群号  : 134115150

本文固定链接:http://t.dbdao.com/archives/hadoop-ha-test.html

1.实验环境

虚拟机环境 VMBOX 5.0 ubuntu 15

java 1.80 hadoop 2.7.1

zookeeper 3.5.1

各个节点分布如下:

10.0.0.21    dbdaostdby   #NameNode 2

10.0.0.22                   dbdao  #NameNode

10.0.0.23             dbdao2      #ResourceManager

10.0.0.24         dbdao3       # web app proxy and MR Jobhistory server

10.0.0.25            dbdao4  #DataNode

10.0.0.26            dbdao5  #DataNode

10.0.0.27          dbdao6  #DataNode

 

 

 

2.先决条件:

  • 安装JAVA
  • 从apache镜像上下载稳定的hadoop版本

请参考hadoop集群安装

 

备注:如果不是最新安装首先关闭hadoop集群

3.安装:

 

本次试验总共是6节点的hadoop集群:

将原本的hadoop集群变成HA 集群,并测试HA特性。

然后安装自动故障转移组件,完成HA自动故障转移实施,并进行测试(dbdao.com Hadoop 大数据学习)。

3.1 配置手动HA

 

将新主机host 加进节点配置

然后在hadoop安装目录 cd /usr/local/hadoop/conf 修改配置文件

vi hdfs-site.xml

 

vi core-site.xml

 

 

3.2 检查配置并启动

 

检查各个节点的配置,检查ssh信任:

保证各个节点ssh 通道没问题。

 

首先根据配置启动journalnode,此处是启动在2个nn节点和yarn节点:

 

格式化第二个NN:

首先将第一个NN namespace 所有文件拷贝到第二个节点对应位置,然后运行命令(dbdao.com Hadoop 大数据学习)

然后在第一个NN上执行本地目录的初始化:

最后启动所有HA NameNode:

这里使用全局启动脚本

 

 

检查相关日志和进程

本次试验中出现了:

Operation category JOURNAL is not supported in state standby

Unable to fetch namespace information from active NN

排查发现是2个节点由于自动启动的时候没有获取到状态,都是standby状态,所以手动进行一次切换即可(dbdao.com Hadoop 大数据学习)。

 

 

 

4.手动管理HA 集群

4.1.检查与监控

 

 

 

4.2模拟故障于手动切换

 

此处手动将NN 上的进程杀掉,然后在此观察状态,使用命令完成切换。

hdfs haadmin -failover –forceactive  nn1 nn2 (会调用防护程序)

或者使用

hdfs haadmin -transitionToActive –forceactive  nn2(不推荐)

 

然后手动启动nn1上的NameNode ,此时nn1是standby状态,再次将nn2切换回去:

 

5.配置自动故障转移

上述都需要手动去监控执行命令,hadoop也有自动ha的组件,需要另外安装和配置

首先关闭集群,目前还做不到在运行的时候进行配置

 

在NameNode:

在YARN节点:

 

5.1安装和配置 ZooKeeper

 

首先在官网上下载安装包

官网链接:http://zookeeper.apache.org/releases.html

此处使用最新的版本3.5.1(dbdao.com Hadoop 大数据学习)

 

解压到hadoop安装路径中:

 

进入其配置目录:

 

 

 

创建数据目录:

 

在这个目录中为其指定唯一的myid (从1-255)

 

将整个zookeeper-3.5.1-alpha目录发送到另外两台机器,nn2和YARN机器上的对应目录中(dbdaostdby和dbda2):

 

 

–注意这2台要使用不同的myid。

 

分别启动:

 

使用jps查看进程,检查log无报错表示启动成功。

 

5.2 增加集群配置

 

在hdfs-site.xml中增加:

 

 

在core-site.xml中增加:

 

5.3 自动故障转移测试

 

首先在初始化zookeeper的状态,在其中dbdao NameNode主机上运行:

–会清理相关数据,多次运行会提示关闭集群。

 

开启ZKFC进程:

可以在NameNode上手动启动

 

–start-dfs.sh脚本会自动在运行NameNode上启动ZKFC,并且自动选择一个NameNode作为active(dbdao.com Hadoop 大数据学习)

 

 

这里使用自动脚本启动:

NameNode节点:

 

YARN节点:

 

 

检查状态发现目前nn1是active,这个是随机决定的。

模拟故障,kill nn1上的NameNode进程:

 

 

6.出现的问题

 

问题:出现了一些告警

 

 

 

sshfence fail:

 

 

在自动切换的时候出现了问题,这个应该是sshfence调用的时候出现了错误,导致返回了不成功,所以切换失败–(目前暂时没找到解决方法,怀疑是openssh和java版本不兼容)

可以强制使用自定义shell返回true,不过就可能会出现脑裂现象,问题在此记录,等以后有空了再看看。

dbDao.com 引导式IT在线教育

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

扫码关注dbDao 微信公众号:

One thought on “【dbdao.com hadoop大数据教程】hadoop HA 实验

  1. 这个应该是openssh与hadoop使用的jar包jsch有关系,网上大神指出,较新版本的openssh与jsch-0.1.42.jar不兼容,下载更高版本,如jsch-0.1.54.jar(https://sourceforge.net/projects/jsch/files/latest/download?source=files),替换hadoop根目录下的share/hadoop/tools/lib/jsch-0.1.42.jar,之后重启hadoop集群,就可以自动故障转移了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">