手把手教你Apache顶级项目Amabari的集群管理(一)

栏目: 服务器 · 发布时间: 7年前

内容简介:导读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

手把手教你Apache顶级项目Amabari的集群管理(一)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning JavaScript

Learning JavaScript

Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99

As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具