HDP2.6 Hadoop Namenode HA 设置

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重试一遍。

相关文章