一、背景知识介绍

Ambari 内置服务包括Ambari 自己都是以rpm 包方式存放于repositories中。Ambari 一般有四个 repositories,具体如下:

1.Ambari:存放 ambari server, ambari agent, 和相关监控软件
2.HDP:存放 stack 软件包
3.HDP-UTILS:存放安装 Ambari 和 HDP 的公用包,例如:Ganglia, Nagios, Snappy, Rrd 等
4.EPEL:存放企业版本 Linux 所需的额外包,此外还有安装 Ambari 时需要的额外包。

在界面点击添加服务时,ambari 会从默认仓库下载服务。Ambari1.7 内置了 flume, hbase, hdfs, hive, kafka, knox, falcon, oozie, pig, slider, sqoop, strom, tez, yarn, zookeeper 等 15 个服务。

1、服务组成

Ambari 中主要从一下几个方面对服务进行定义。如下图:

metainfo.xml

服务元描述信息,可以在文件中对服务的版本,组建,执行脚本,适用操作系统,服务间依赖关系,安装包名等进行配置。Metainfo.xml 的编写需要对它的标签进行了解。具体后续可参考添加服务中 DEMO 的metainfo 编写。

metrics.json

配置服务的度量信息,这部分和 ganglia 相关。后续会有相关文档进行具体介绍。但是对于新加服务不是必须具备的文件。

configureation

服务配置文件存放路径。用户配置文件需要固定放到这个目录下。并且如果用户想在界面对配置文件进行操作,那么配置文件必须满足 ambari 要求的格式。也就是 xml,并且具备固定标签。例如:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>demo.name</name>
<value>hello world</value>
<description>This is a name</description>
</property>
</configuration>

package

存放服务相关脚本模版等。Package 下面又分为 files, scripts, templates 三个文件夹。其中 scripts 主要存放脚本。也就是 metainfo.xml中用户配置的模块起停命令执行脚本。Files 存放服务需要的其它文件,例如 sh,py 都可以。Templates 存放服务模版信息。Ambari 部署服务时会调用脚本根据用户编写的模版信息生成对应配置文件。提供给服务、告警服务、监控服务使用。

2、ambari 服务部署路径

Ambari 中服务部署需要放在固定的路径下。具体路径如下所示:

注:ambari 中部署的 DEMO 服务路径为:

/var/lib/ambari-server/resources/stacks/HDP/2.2/services/DEMO

3、ambari 服务配置扭转

对于 Ambari 中显示在页面上各个服务的配置信息。有两种途径可以添加。一种,直接修改 Ambari 里配置对应的 js,第二种,在服务路径的 configuration中添加配置。显示在页面的配置信息,若发生更改,ambari 便会把配置存储到 db 中。Agent 定时向 ambari 服务发起心态。若机器对应服务的配置发生了更改,ambari 变回把配置以 json 格式放在 heartbeat 的回包中。由用户自己写脚本进行分析落地到指定目录。

二、准备工作

1.Service 打成 rpm 包

Rpm 包它有固定结构。如下图:

简单 rpm 制作可参考:

http://blog.csdn.net/kongxx/article/details/43761295

**2.**把 rpm 放到仓库并配置 yum 源

Ambari 用 yum 来进行 rpm 包的安装管理,需要把制作好的 rpm 包放到 yum 仓库。本实践中,创建了一个本地 yum 源。

具体配置可参考: http://blog.csdn.net/algothinking/article/details/10719183

三、添加新服务(以 DEMO 为例)

Ambari 所有服务描述存放于:

/var/lib/ambari-server/resources/stacks/HDP/ 路径的某个版本下。版本与版本直接可以进行继承。具体描述可以在版本路径下的 metainfo.xml 看到。例如: /var/lib/ambari-server/resources/stacks/HDP/2.2 下的描述文件 metainfo.xml 为:

<metainfo><versions><active>true</active></versions><extends>2.1</extends>
</metainfo>

表示 2.2 版本配置软件都继承于 2.1。策略上,若 2.2 存在和 2.1 相同的配置则覆盖。 增加新服务,需要按照 ambari 的目录结构进行创建。并且对编写服务元信息。具体如下:

**1.**创建 DEMO 服务文件夹

mkdir /var/lib/ambari-server/resources/stacks/HDP/2.0.6/services/DEMO

**2.**创建 metainfo.xml 描述文件

vi /var/lib/ambari-server/resources/stacks/HDP/2.0.6/services/DEMO/metainfo.xml

文件内容如下:

<?xml version="1.0" encoding="utf-8"?><metainfo> <schemaVersion>2.0</schemaVersion>  <services> <service> <name>DEMO</name>  <displayName>DEMO</displayName>  <comment>hello world</comment>  <version>1.0.0</version>  <components> <component> <name>DEMO_MASTER</name>  <displayName>helloworld Master</displayName>  <category>MASTER</category>  <cardinality>1</cardinality>  <commandScript> <script>scripts/master.py</script>  <scriptType>PYTHON</scriptType>  <timeout>600</timeout> </commandScript> </component>  <component> <name>DEMO_SLAVE</name>  <displayName>helloworld Slave</displayName>  <category>SLAVE</category>  <cardinality>1+</cardinality>  <commandScript> <script>scripts/slave.py</script>  <scriptType>PYTHON</scriptType>  <timeout>600</timeout> </commandScript> </component>  <component> <name>DEMO_CLIENT</name>  <displayName>helloworld client</displayName>  <category>CLIENT</category>  <cardinality>1+</cardinality>  <commandScript> <script>scripts/client.py</script>  <scriptType>PYTHON</scriptType>  <timeout>600</timeout> </commandScript>  <customCommands> <customCommand> <name>DECOMMISSION</name>  <commandScript> <script>scripts/resourcemanager.py</script>  <scriptType>PYTHON</scriptType>  <timeout>600</timeout> </commandScript> </customCommand> </customCommands> </component> </components>  <requiredServices> <service>MAPREDUCE</service>  <service>ZOOKEEPER</service> </requiredServices>  <osSpecifics> <osSpecific> <osFamily>redhat5,redhat6,suse11</osFamily>  <packages> <package> <name>helloworld</name> </package> </packages> </osSpecific> </osSpecifics> </service> </services>
</metainfo>

上面信息描述了 DEMO 服务,版本 1.0.0,有三个组建:DEMO_MASTER, DEMO_SLAVE, DEMO_CLIENT。其中,DEMO_MASTER 角色是 MASTER,

执行脚本是master.py,其它组建定义类似。在 ambari 中对于组建默认三个角色: master,slave,client。每种角色都有自己默认的动作。具体如下:

用户也可以自己定义动作,例如 DEMO_CLIENT 自定义了 DECOMMISSION 动作,具体描述见上面 metainfo.xml 文件。

**3.**编写执行脚本

mkdir

/var/lib/ambari-server/resources/stacks/HDP/2.0.6/services/DEMO/package/scripts

在 scripts 文件夹中, 放 metainfo.xml 中提到的三个脚本: master.py, slave.py,client.py。其中需要注意的是,每个脚本需要实现角色具备动作对应的函数。这里以 master.py 为例,内容如下:

import sys import os
from resource_management import * class Master(Script):def install(self, env): self.install_packages(env)def start(self, env):print 'start the helloworld';val= os.system("/usr/bin/helloworld") print valdef configure(self, env):print 'Configure the config client';def stop(self, env):print 'Stop the helloworld';def status(self, env):print 'Status of the Demo Master';if _name_ == " main ": Master().execute()

注:函数方法名固定的,和动作对应。

**4.**增加配置文件

mkdir

/var/lib/ambari-server/resources/stacks/HDP/2.0.6/services/DEMO/configuration

在文件夹 configuration 下,可以放服务对应的配置文件。配置文件需符合

ambari 约定格式。具体内容如下:

四、DEMO 结果展示

大数据Ambari自定义服务详细介绍相关推荐

  1. 大数据开发之Sqoop详细介绍

    备注: 测试环境 CDH 6.3.1 Sqoop 1.4.7 文章目录 一.Sqoop概述 二.Sqoop 工具概述 三.Sqoon工具详解 3.1 codegen 3.2 create-hive-t ...

  2. Ambari 自定义服务集成 | quicklinks 快速链接不显示的排查方案

    点击卡片"大数据实战演练",选择"设为星标"或"置顶" 回复"Ambari知识库"可领取独家整理的Ambari学习资料! ...

  3. 【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务

    基于Blink为新商业调控打造实时大数据交互查询服务 案例与解决方案汇总页: 阿里云实时计算产品案例&解决方案汇总 从IT到DT.从电商到新商业,阿里巴巴的每个细胞都存在大数据的DNA,如何挖 ...

  4. 大数据系列(一)之hadoop介绍及集群搭建

    大数据系列(一)之hadoop介绍及集群搭建 文章最早发布来源,来源本人原创初版,同一个作者: https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg 系列 ...

  5. 华为云“企业快成长大数据与微服务技术创新论坛”成功举办

    6月16日,由华为云.msup.厦门火炬大学堂.厦门市行业软件协会联合主办的"企业快成长大数据与微服务技术创新论坛"在厦门成功举办.本次活动汇聚了华为云.珍爱网等知名企业的CTO和 ...

  6. Oracle11g服务详细介绍及哪些服务是必须开启的?

    Oracle11g服务详细介绍及哪些服务是必须开启的? Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Se ...

  7. 【年度榜单】2020大数据产业创新服务产品丨数据猿·金猿榜

    数据猿&金猿出品 <2020数据猿年度金猿主题策划活动>之2020大数据产业创新服务产品榜丨"数据猿&金猿--金猿榜·金猿奖"年度巨献! 大数据产业创新 ...

  8. Ambari自定义服务

    在学习Ambari的路上,欢迎提出问题并相互交流,共同成长 基础思路框架 一.Pulsar服务部署 ZooKeeper 集群(3 个 ZooKeeper 节点组成) Broker 集群(3 个 Pul ...

  9. 国内首家公安大数据交互式微信服务平台上线

    网络约车的出现,给人们带来更便捷的出行方式,但也存在不可测的风险,而近日上线的哈尔滨市公安局"冰城公安"微信公众号中的"搭(乘)车自主备案"功能,对于乘车人特别 ...

最新文章

  1. 同类分析比较工具 google trend
  2. 手把手教你拦截Linux系统调用
  3. Android之系统服务-WindowManager
  4. 看门狗性能软件测试,《看门狗:军团》PC版性能测试 不建议光追,优化极差
  5. python编辑器安装视频教程_Python安装教程(推荐一款不错的Python编辑器)
  6. 程序员经常看的开源月刊《HelloGitHub》第 57 期
  7. Linux 101 Hacks __To be continued
  8. Python闭包基本介绍与作用
  9. Android SDK下载和安装,以及部署
  10. 2021年计算机网络常见面试题
  11. 推荐阅读投资理财经典55本
  12. 一个游戏程序员的学习资料
  13. 在线生成ico图标的网站
  14. hive —— 分区表
  15. 计算机虚拟化的基本概念,虚拟化和虚拟机基本概念
  16. 【Note】微信小程序js使用农历(一行代码)
  17. Canvas学习笔记及像素操作——实现马赛克
  18. MySqlDataAdapter桥接器的使用
  19. multiset upper_bound() 与 lower_bound()
  20. MAVEN下载与安装

热门文章

  1. 再与复旦大学《数学分析》编者商榷
  2. ASML对光刻机销售留了后手,因为中国或已突破,外媒:挡不住了
  3. 一夫当关,15道高频手撕代码面试题整理
  4. sublime Text3 格式化json
  5. 软件测试思想者 - 几个有关人性的成语
  6. mysql addslashes()函数_PHP addslashes 函数
  7. 使用PYTHON将上百个TXT文件提取其中信息生成一个csv
  8. shp文件转kml方式
  9. Axios常用API
  10. 接口安全----接口防刷