ambari安装hive时连接失败_【完整教程】手把手教你 Apache 顶级项目 Ambari 插件开发...

Apache Ambari 是一款用于管理 Hadoop 集群的工具,本文介绍了Ambari的基础概念和工作原理,并详细讲解如何开发自定义服务插件,包括创建服务定义目录、编写metainfo.xml、创建服务脚本,以及将服务添加到Ambari并打包到YUM源的过程。
摘要由CSDN通过智能技术生成

导读

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 管理 apache 原生版本的 Hadoop 生态组件的话,需要按照 ambari 规则生成二进制包就好

考虑到 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 服务的目录结构大致如下:

c071de02ac064f6e2c7ea3a2fdb94dbb.png

stacks: stack表示某个发行版本,例如HDP-2.0.6。stack 版本可以通过metainfo.xml 设置继承关系,便于共享脚本和配置。

common-services: ambari 的服务定义库。service在此完成定义,在某个stack版本注册,实现服务的发布。

service: service是集群(大数据)组件的抽象,由一个或多个 component 组成。component 的 category 有 MASTER,SLAVE,CLIENT 三种,对应不同的生命周期:

599760b7ef27013f906ca21afbab6a96.png

▌Ambari 工作原理

0f0b81bad3062e136aea0f9990fdfe23.png

图一:Ambari工作原理

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.创建服务定义目录

535f1ab5bf64810f9e0f5d0b5e4816f5.png

2.进入刚创建的目录,创建编辑metainfo.xml文件

cdcd46201a27dac31488262f16041fb6.png

9070f6ba8e31eadf2d9d46bb15246f64.png

a4cda788e70e363a35cd542ec1f97739.png

c5823d33458413073404cf29aa891203.png

编辑 metainfo.xml 时要注意:

    • service 和 component 的 name 一定要大写;

    • cardinality 节点表示安装数

                     1 表示只能装一个,

                     1+ 表示最少装一个,

                     0-1 表示最多一个,

                     ALL 表示每台及其都需要装。

    • package 的 name 节点会作为 yum 时所用的名字,可使用 * 做适配。

3.创建 metainfo.xml 里涉及的服务脚本

60d2094d386ed118f4978c6eb35828b9.png

04fa21cb16230bd5b5c5ed758df2cfa8.png

099c42d9a34b6936948265901fab3066.png

7534da355ca99c156da8af76d3c3d564.png

上述脚本中涉及到的方法中,install()在安装时调用,start(),stop()对应服务的起停,status()用来做状态检查,configure()则用来从配置文件等处获取相关配置。

4.重启Ambari Server来将刚刚编辑好的文件分发到集群的各agent节点

    ambari-server restart

5.将你的服务打成rpm包,并添加到yum源里

6.通过web UI安装刚定义好的服务

1912fd81a40be806b23a455b18eb1fe6.png

图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来监控服务的存活状态,执行启停等。

迄今为止,我们用 ambari 实现了 mysql 、kudu、redis、presto 等多个组件的插件包管理

如果大家在使用 Ambari 的过程遇到问题,欢迎添加微信,我们也建立有 Ambari User Group China微信群,欢迎群里交流!

da9d3d32e559dbfac4fdf31cc6d59e35.png

引用:

https://cwiki.apache.org/confluence/display/AMBARI/Defining+a+Custom+Stack+and+Services#space-menu-link-content

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值