高可用建设方案

standby NameNode 作为备节点在 active NameNode 宕机后变更状态为,向zookeeper创建临时节点(/ambari/ha/master-hostname)失败

Hadoop NameNode HA

Hadoop NameNode HA 方式下有五个 NameNode, 其中 active NameNode 提供 HDFS
服务, standby NameNode 作为备节点在 active NameNode 宕机后改善状态为
active, 进而制止 NameNode 的单点难点. 某次被误删 NameNode 文件系统之后,
决虞诩插 Hadoop HA, 让集群自动应对运行失误或恶意抨击,恐怕轻易的宕机.

  <small>近来apache官方提供的ambari最新版为2.5.1,尚未提供ambari-server
的HA方案,因事业亟待贯彻了生龙活虎版简约的Ambari-Server HA。</small>

配置

ambari

ambari 投注意有所服务关闭 maintenance 状态.

法定参照他事他说加以调查文书档案

  • ###### 构造划虚构计

问题

因为ambari-server 与namenode
的功力不风姿洒脱,所以对于宕机的拍卖实时性的须要相对来说未有那么高,只必要在active
server宕机后,standby 的ambari-server
可以平常切换,顺遂接管agent的心跳新闻,可以管理顾客的访谈乞请就可以。
  此系统的HA技术方案使用hadoop集群内的zookeeper作为谐和器,ambari-server
运转后,在zookeeper内创立叁个不常节点(/ambari/ha/master-hostname),并与zookeeper保持二个长链接,再设置多个watcher监察和控制那些节点的动静。此节点的值为该主机的hostname,全部的agent向ambari-server发送心跳以前,先来zookeeper中收获那时候active的ambari-server的hostname,再向这些ambari-server
发送心跳。
  若是ambari-server
运行时,向zookeeper创造偶尔节点(/ambari/ha/master-hostname)退步,并且战败的来由是节点已存在(报
NodeExistsException相当),表明已经有三个ambari-server已成功运维,则将此ambari-server定义为standby
的角色,设置watcher监听/ambari/ha/master-hostname,并在zookeeper中开创三个另一个一时半刻节点(/ambari/ha/standby-hostname),用来做ambari-server
HA 管理。

Hue

安装完 HA 之后 hue 运行战败,报 [ERROR] “httpfs-site” not found in
server
response

貌似是 ambari 的 webhdfs 相关的配备没了.

图片 1

消除方法

*** -ambari-server HA全体布局图- ***

安装 LesTR 的 ambari-httpfs-service 组件


  1. HTTPFS
    放到
    /var/lib/ambari-server/resources/stacks/HDP/2.6/services
    下.
  2. ambari-server restart
  3. 添加 HTTPFS 服务, 参考
    https://github.com/EsharEditor/ambari-hue-service/issues/23
    配置 hue proxy
  4. 启动 HTTPFS.

图片 2

ambari 中修改 hue 配置页, 设置

webhdfs_url=http://$HTTPFS_IP:$HTTPFS_PORT/webhdfs/v1

*** zookeeper 节点音信 ***

重启 hue


DONE

*** 具体细节,大家以Q&A的款式反映… ***

Q1:
因为原生ambari-server重视内嵌的postgresql数据库,那么数量同步是怎么得以落成的?

底层的数量同步运用postgersql 的中坚构造举办联合

Q2: ambari-server 信任的是8.4本子的postgresql
数据库,此版本不支持中央构造如何做?

修正ambari-server信任的postgresql版本,使其依据9.2本子的postgersql数据库

Q3: ambari-server
运维时,要求三回九转zookeeper,并向zookeeper内创造节点,假若那时候zookeeper不可用咋办?

开拓以stand-alone形式运转ambari-server的效能,在使用curator连接zookeeper以前,使用zookeeper原生的api试着连续几日来叁遍zookeeper(创立或访问/ambari/check-connection),倘诺能够平常成功,表达zookeeper可用,则持续应用curator连接zookeeper。若是zookeeper不可用,则向外围抛出提醒音信,提醒客户zookeeper不可用,请试行ambari-server start –stand-alone 。以stand-alone
格局运转ambari-server。

Q4: ambari-agent 连接zookeeper,需求利用python
工具包,那几个工具包不易管理,怎么着方便维护?

选用kazoo(pipy官方网址可搜),将源码下载下来,打成ambari_kazoo.rpm包,然后让ambari-agent.rpm包依赖ambari_kazoo.rpm,在安装ambari-agent时,rpm的包注重体制会活动帮忙大家设置好Python操作zookeeper
的工具包。

Q5: 如何确认保障在同有时刻,唯有active 的ambari-server 能够被访谈?

standby ambari-server
运转时,假如在zookeeper内制造master节点失败,那么线程窒碍(object.wait(卡塔尔(قطر‎),不继续运行ambari-server内部的jetty容器,所以顾客不能访谈standby
ambari-server 的web页面。

Q6: ambari-server
运营时向zookeeper注册master节点失败,则会被定义为standby
的角色,除了卡住线程,还做了如何事?

实行shell脚本,将本机的postgresql
数据库设置为slave角色,以便active的ambari-server
的数据库能够通常同步到slave机器

Q7: 曾几何时触发ambari-server 的切换?

active ambari-server
宕机时,在zookeeper内创设的暂且节点(/ambari/ha/master-hostname)因为session失效而死灭,standby
ambari-server
的watcher会被触发,向zookeeper成立多个新的节点(/ambari/ha/master-hostname),ambari-agent
会向新的ambari-server 发送心跳。

Q8:ambari-server 是什么切换的?

standby ambari-server
中的watcher被触发后,向zookeeper内创建master-hostname节点,若是创产生功,则notify以前的object.wait()继续运转ioc容器和jetty容器,更新zookeeper中/ambari/ha/history-hostname,实施shell脚本将近期的postgresql数据库设置为master剧中人物。

Q9:
agent识别到ambari-server产生变化时,除了向新的主机发送心跳,还有或者会做什么样?

更新本机内的/etc/hosts,将repo源,ntpd服务器消息更新

Q10:若果zookeeper宕机,ambari-agent 向哪个ambari-server 发送心跳?

在ambari-agent
内部会缓存二个变量:activeServerHostName,发生ambari-server切换时,会更新那些变量,假使zookeeper不可用时,将会向此变量对应的ambari-server发送心跳。

Q11:
在切换ambari-server时,涉及到了数据库的重启操作,若是数据库未完全运行,那个时候数据库无法访谈,那么什么样确认保证不出难点?

数据库内创造一张特地用来测量试验数据库是还是不是可用的表,在每回重启数据库时,都先想那些表中写如一条数据,再将此数额读出来,达成二次操作才视为数据库完全运行,再进行原本的事情逻辑,不然每间距5S重试二遍。