大数据Ambari自定义服务详细介绍
一、背景知识介绍
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自定义服务详细介绍相关推荐
- 大数据开发之Sqoop详细介绍
备注: 测试环境 CDH 6.3.1 Sqoop 1.4.7 文章目录 一.Sqoop概述 二.Sqoop 工具概述 三.Sqoon工具详解 3.1 codegen 3.2 create-hive-t ...
- Ambari 自定义服务集成 | quicklinks 快速链接不显示的排查方案
点击卡片"大数据实战演练",选择"设为星标"或"置顶" 回复"Ambari知识库"可领取独家整理的Ambari学习资料! ...
- 【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务
基于Blink为新商业调控打造实时大数据交互查询服务 案例与解决方案汇总页: 阿里云实时计算产品案例&解决方案汇总 从IT到DT.从电商到新商业,阿里巴巴的每个细胞都存在大数据的DNA,如何挖 ...
- 大数据系列(一)之hadoop介绍及集群搭建
大数据系列(一)之hadoop介绍及集群搭建 文章最早发布来源,来源本人原创初版,同一个作者: https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg 系列 ...
- 华为云“企业快成长大数据与微服务技术创新论坛”成功举办
6月16日,由华为云.msup.厦门火炬大学堂.厦门市行业软件协会联合主办的"企业快成长大数据与微服务技术创新论坛"在厦门成功举办.本次活动汇聚了华为云.珍爱网等知名企业的CTO和 ...
- Oracle11g服务详细介绍及哪些服务是必须开启的?
Oracle11g服务详细介绍及哪些服务是必须开启的? Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Se ...
- 【年度榜单】2020大数据产业创新服务产品丨数据猿·金猿榜
数据猿&金猿出品 <2020数据猿年度金猿主题策划活动>之2020大数据产业创新服务产品榜丨"数据猿&金猿--金猿榜·金猿奖"年度巨献! 大数据产业创新 ...
- Ambari自定义服务
在学习Ambari的路上,欢迎提出问题并相互交流,共同成长 基础思路框架 一.Pulsar服务部署 ZooKeeper 集群(3 个 ZooKeeper 节点组成) Broker 集群(3 个 Pul ...
- 国内首家公安大数据交互式微信服务平台上线
网络约车的出现,给人们带来更便捷的出行方式,但也存在不可测的风险,而近日上线的哈尔滨市公安局"冰城公安"微信公众号中的"搭(乘)车自主备案"功能,对于乘车人特别 ...
最新文章
- 同类分析比较工具 google trend
- 手把手教你拦截Linux系统调用
- Android之系统服务-WindowManager
- 看门狗性能软件测试,《看门狗:军团》PC版性能测试 不建议光追,优化极差
- python编辑器安装视频教程_Python安装教程(推荐一款不错的Python编辑器)
- 程序员经常看的开源月刊《HelloGitHub》第 57 期
- Linux 101 Hacks __To be continued
- Python闭包基本介绍与作用
- Android SDK下载和安装,以及部署
- 2021年计算机网络常见面试题
- 推荐阅读投资理财经典55本
- 一个游戏程序员的学习资料
- 在线生成ico图标的网站
- hive —— 分区表
- 计算机虚拟化的基本概念,虚拟化和虚拟机基本概念
- 【Note】微信小程序js使用农历(一行代码)
- Canvas学习笔记及像素操作——实现马赛克
- MySqlDataAdapter桥接器的使用
- multiset upper_bound() 与 lower_bound()
- MAVEN下载与安装