内容简介:导读Apache Ambari是Hortonworks开源的Hadoop集群管理工具,并于2013年底从孵化器毕业,成为Apache的顶级项目。Ambari具备Hadoop组件的安装、管理、运维等基本功能,并提供GUI进行可视化的集群管理,简化了大数据平台的安装、使用难度。本次分享主要涉及Ambari的简单介绍及Ambari自定义插件开发步骤(基于Ambari 2.5.1.0版本)。
导读
Apache Ambari是Hortonworks开源的Hadoop集群管理工具,并于2013年底从孵化器毕业,成为Apache的顶级项目。Ambari具备Hadoop组件的安装、管理、运维等基本功能,并提供GUI进行可视化的集群管理,简化了大数据平台的安装、使用难度。
本次分享主要涉及Ambari的简单介绍及Ambari自定义插件开发步骤(基于Ambari 2.5.1.0版本)。
▌引言
Hadoop自从它诞生之日起,集群的管理就是一个无法回避的问题。两家商业化平台厂商Cloudera和Hortonworks分别推出了各自的平台管理软件:ClouderaManager和Ambari来解决集群管理这个问题。Ambari并没有对Hadoop组件进行过多的功能集成(如日志分析等),只是提供了安装,配置,启停等基础功能,尽量保持了跟原生Hadoop组件的隔离性,对组件的具体操作,则可通过Quick Links直接导向原生的管理界面(如yarn UI,HBase Master UI)来完成,保持了对于Hadoop组件的低侵入性。但是Ambari目前只支持HDP,不支持原生的或者其他二次开发的Hadoop平台,一定程度上影响了它的流行。
考虑到Ambari的开源,可拓展,社区强大等特性,易观选择了Ambari来管理集群。
▌概念介绍
正式开始之前,先为不熟悉Ambari的同学普及几个ambari里的概念:
Server,Agent:Ambari框架采用的是Server/Client的模式,主要由两部分组成:ambari-agent和ambari-server。Ambari Server 会读取 Stack 和 Service 的配置文件。当Ambari Server启动的时候,Ambari Server 会分发 Stack 和 Service 的配置文件以及 Service 生命周期的控制脚本到 Ambari Agent。Agent端拿到配置文件后,会下载安装公共源里软件包(对于centos系统,就是使用 yum 服务)。安装完成后,Ambari Server 会通知 Agent去启动 Service。之后 Ambari Server 会定期发送命令到 Agent 检查 Service 的状态,Agent 返回信息给 Server,并呈现在 Ambari 的 GUI 上。
一个ambari服务的目录结构大致如下:
stacks: stack表示某个发行版本,例如HDP-2.0.6。stack版本可以通过metainfo.xml设置继承关系,便于共享脚本和配置。
common-services:ambari的服务定义库。service在此完成定义,在某个stack版本注册,实现服务的发布。
service:service是集群(大数据)组件的抽象,由一个或多个component组成。component的category有MASTER,SLAVE,CLIENT三种,对应不同的生命周期:
▌工作原理
Ambari工作原理如上图所示:
1.ambari已安装的服务配置会存储在 mysql 中,可通过web界面修改,改完记得重启服务保证配置生效;
2.新添加的service定义会在ambari-server启动时,从server节点分发到各agent节点;
3.安装service时,会默认yum安装,而且它对于安装服务,有30分钟的超时时间,如果30分钟内没有下载完,就会造成安装失败。这意味着大部分情况下需要你配置本地yum源;
4.web界面的start,stop命令,会被server发送给agent,由agent调用生命周期脚本中的对应方法来实现服务起停。
▌服务定制开发
虽然Ambari已经支持大多数Hadoop组件,但是有时候我们希望通过Ambari监控管理部署在集群上的自研程序,这时候就需要用到ambari的服务定制。
下面,我们将尝试开发一个叫EGSERVER的服务,并将它添加到一个已存在的stack里:
1.创建服务定义目录
2.进入刚创建的目录,创建编辑metainfo.xml文件
编辑metainfo.xml时要注意:
a.service和component的name一定要大写;
b.cardinality节点表示安装数。
1表示只能装一个,
1+表示最少装一个,
0-1表示最多一个,
ALL表示每台及其都需要装。
c.package的name节点会作为yum时所用的名字,可使用*做适配。
3.创建metainfo.xml里涉及的服务脚本
上述脚本中涉及到的方法中,install()在安装时调用,start(),stop()对应服务的起停,status()用来做状态检查,configure()则用来从配置文件等处获取相关配置。
4.重启Ambari Server来将刚刚编辑好的文件分发到集群的各agent节点
ambari-server restart
5.将你的服务打成rpm包,并添加到yum源里
6.通过web UI安装刚定义好的服务
图2:Web UI Add Service Wizard界面
a.点击页面左侧导航区下方的actions;
b.点击 Add Services,
choose services界面勾选刚刚添加的服务EGUAN custom Service,然后Next;
c.Assign masters,
选择 EGSERVER_MASTER要部署的节点;
d.Assign Slaves and Clients,
选择slave和client要部署的节点;
e.继续next,直到安装成功,
然后你就能在页面左侧导航区看到新加的服务了;
g.如果某个节点想新加client,
可以进入该节点的监控页面,点击components右侧的"+Add"来添加。
这样,你就成功添加了EGSERVER服务到Ambari中,可随时通过Ambari来监控服务的存活状态,执行启停等。
部分内容引用:
https://cwiki.apache.org/confluence/display/AMBARI/Defining+a+Custom+Stack+and+Services#space-menu-link-content
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。