转载自http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/

扩展 Ambari 管理一个自定义的 Service

首先,我们需要规划自定义的 Service 属于哪个 Stack(当然 Stack 也是可以自定义的)。这里为了快速创建一个新的 Service,而且我们已经安装了 HDP 2.2 的 Stack,所以就将自定义的 Service 放在 HDP 2.2 之下。

第一步,首先在 Ambari Service 机器上找到 HDP 2.2 Stack 的目录,如下图所示。

图 18. HDP 2.2 的目录

第二步,需要创建一个 Service 目录,我们这里用“SAMPLE”作为目录名。并在 SAMPLE 底下创建 metainfo.xml。示例代码如下。主要解释下 xml 代码中的两个字段 category 和 cardinality。category 指定了该模块(Component)的类别,可以是 MASTER、SLAVE、CLIENT。Cardinality 指的是所要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+,或者 ALL。如果是一个范围的时候,安装的时候会让用户选择机器。另外这里有关 Service 和 Component 的 name 配置要用大写,小写有时候会有问题。Displayname 可以随意设置。

<?xml version="1.0"?>
<metainfo>
<schemaVersion>2.0</schemaVersion>
<services>
<service>
<name>SAMPLE</name>
<displayName>My Sample</displayName>
<comment>My v1 Sample</comment>
<version>1.0</version>
<components>
<component>
<name>MYMASTER</name>
<displayName>My Master</displayName>
<category>MASTER</category>
<cardinality>1</cardinality>
<commandScript>
<script>scripts/master.py</script>
<scriptType>PYTHON</scriptType>
<timeout>5000</timeout>
</commandScript>
</component>
<component>
<name>MYSALVE</name>
<displayName>My Slave</displayName>
<category>SLAVE</category>
<cardinality>1+</cardinality>
<commandScript>
<script>scripts/slave.py</script>
<scriptType>PYTHON</scriptType>
<timeout>5000</timeout>
</commandScript>
</component>
</components>
<osSpecifics>
<osSpecific>
<osFamily>any</osFamily>
</osSpecific>
</osSpecifics>
</service>
</services>
</metainfo>

第三步,需要创建 Service 的控制脚本。这里我们需要在 SAMPLE 底下创建一个 package 目录,然后在 package 底下创建目录 scripts ,进而创建 master.py 和 slave.py。这里需要保证脚本路径和上一步中 metainfo.xml 中的配置路径是一致的。这两个 Python 脚本是用来控制 Master 和 Slave 模块的生命周期。脚本中函数的含义也如其名字一样:install 就是安装调用的接口;start、stop 分别就是启停的调用;Status 是定期检查 component 状态的调用;Configure 是安装完成配置该模块的调用。示例目录结构如下图。

图 19. Sample Service 的目录结构

Python 脚本的示例代码:

Master.py:

import sys, os
from resource_management import *
from resource_management.core.exceptions import ComponentIsNotRunning
from resource_management.core.environment import Environment
from resource_management.core.logger import Logger class Master(Script):
def install(self, env):
print "Install My Master" def configure(self, env):
print "Configure My Master" def start(self, env):
print "Start My Master" def stop(self, env):
print "Stop My Master" def status(self, env):
print "Status..." if __name__ == "__main__":
Master().execute()

Slave.py:

import sys, os
from resource_management import *
from resource_management.core.exceptions import ComponentIsNotRunning
from resource_management.core.environment import Environment
from resource_management.core.logger import Logger class Slave(Script):
def install(self, env):
print "Install My Slave" def configure(self, env):
print "Configure My Slave" def start(self, env):
print "Start My Slave" def stop(self, env):
print "Stop My Slave"
def status(self, env):
print "Status..." if __name__ == "__main__":
Slave().execute()

第四步,需要重启 Ambari Server。因为 Ambari Server 只有在重启的时候才会读取 Service 和 Stack 的配置。命令行执行:

ambari-server restart

第五步,登录 Ambari 的 GUI,点击左下角的 Action,选择 Add Service。如下图:

图 20. Add Service 按钮

这时候就可以看到我们自定义的 Service:SAMPLE。如下图:

图 21. Sample Service 列表

选择左侧 My Sample 后,就可以一路 Next 了,这个过程其实和我们在搭建 Hadoop2.x 集群的时候是类似的。由于这个 Service 没有真的安装包,所以安装过程会非常的快,启动命令也没有真正的逻辑,所以启动过程也是很快的。等最后点击完 Complete,整个安装过程也就结束了。再回到 Ambari 的 Dashboard 的时候,我们就可以看到这个 My Sample 了,如下图:

图 22. My Sample 的 Service 页面

点击查看大图

到此就可以和第四节中管理 Hadoop 集群一样管理我们的 My Sample。例如下图,Stop 我们的 My Sample。

图 23. Stop Sample 页面 1

图 24. Stop Sample 页面 2

图 25. Stop Sample 页面 3

进阶的篇幅中,将会探讨如何给我们的 My Sample 自定义一些 Actions,以及 Action 之间的依赖关系如何定义。篇幅有限,这里就先到此为止。希望以上的介绍能够燃起大家对 Ambari 的热情。

 

回页首

总结

大数据与云计算可谓是如今数据中心中最火的两项技术领域,几乎所有的 IT 服务商都想在这两项技术中有所建树。相信 Ambari 可以帮助一些 Hadoop 的初学者。长远看来,大数据的发展离不开云计算,云计算中 IaaS 可谓已经很成熟,并且价格低廉。这时候许多公司将目光聚集在了 PaaS。大数据的流行更是加速了相关 PaaS 产品的发展,而 Ambari 的出现必然可以拉近 IaaS 和 PaaS 的距离。也就是说有了 Ambari,或许再加上 Docker,那么快速从 IaaS 演进到 PaaS 就显得不是那么困难了。

当然这里 Ambari 要跟 IaaS 更好的切合,还有个对手那就是 Sahara。它是另一个土生土长的 OpenStack 的子项目,其目的也是为了在 Openstack 上面快速搭建 Hadoop 等集群。期望着这些项目能够快速成长,将来对大家都有所帮助。

Ambari——大数据平台的搭建利器的更多相关文章

  1. Ambari——大数据平台的搭建利器之进阶篇

    前言 本文适合已经初步了解 Ambari 的读者.对 Ambari 的基础知识,以及 Ambari 的安装步骤还不清楚的读者,可以先阅读基础篇文章<Ambari——大数据平台的搭建利器>. ...

  2. 【定义及安装】Ambari——大数据平台的搭建利器

    Ambari 是什么 Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目.目前最新的发布版本是 2.0.1,未来不 ...

  3. Ambari——大数据平台的搭建利器(一)

    Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是**项目.目前最新的发布版本是 2.0.1,未来不久将发布 2.1 版本 ...

  4. 朝花夕拾之--大数据平台CDH集群离线搭建

    body { border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto; } body .markdown-body ...

  5. 大数据平台搭建(hadoop+spark)

    大数据平台搭建(hadoop+spark) 一.基本信息 1. 服务器基本信息 主机名 ip地址 安装服务 spark-master 172.16.200.81 jdk.hadoop.spark.sc ...

  6. 【HADOOP】| 环境搭建:从零开始搭建hadoop大数据平台(单机/伪分布式)-下

    因篇幅过长,故分为两节,上节主要说明hadoop运行环境和必须的基础软件,包括VMware虚拟机软件的说明安装.Xmanager5管理软件以及CentOS操作系统的安装和基本网络配置.具体请参看: [ ...

  7. 基于Ambari构建自己的大数据平台产品

    目前市场上常见的企业级大数据平台型的产品主流的有两个,一个是Cloudera公司推出的CDH,一个是Hortonworks公司推出的一套HDP,其中HDP是以开源的Ambari作为一个管理监控工具,C ...

  8. 如何基于Go搭建一个大数据平台

    如何基于Go搭建一个大数据平台 - Go中国 - CSDN博客 https://blog.csdn.net/ra681t58cjxsgckj31/article/details/78333775 01 ...

  9. 知名大厂如何搭建大数据平台&架构

    今天我们来看一下淘宝.美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的架构,另一方面也学习大厂的工程师如何画架构图.通过大厂的这些架构图,你就会发现,不但这些知名大厂的大数据平台设计方案大同小 ...

随机推荐

  1. SQL范式

    第一范式:确保每列的原子性(字段不可分). 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式. 释义: 1.每一列属性都是不可再分的属性值,确保每一列的原子性 ...

  2. 【mysql】关于悲观锁

    关于mysql中的锁 在并发环境下,有可能会出现脏读(Dirty Read).不可重复读(Unrepeatable Read). 幻读(Phantom Read).更新丢失(Lost update)等 ...

  3. 关于IPB帧与恒定比特率、动态比特率的详解

    之所以写这篇文章是因为有朋友对IPB帧的设置比较感兴趣,回复中说得比较简单,因此在这里详细的写一下,虽然说一般情况下我们很少去设置这个IPB帧,不过,如果真的学好了,并且清楚的了解了这个IPB帧的概念 ...

  4. .NET笔记(二)

    null合并运算符 ?? 运算符称作null 合并运算符.如果此运算符的左操作数不为null,则此运算符将返回左操作数:否则返回右操作数. 使用Average而产生的一个错误 因为数据中有DBNull ...

  5. 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记

    新的2016MBP终于发布了,作为把苹果电脑装WIN使用的人,等候很久之后,终于可以行动了. 黄山松 (Tom Huang) 发表于博客园http://www.cnblogs.com/tomview/ ...

  6. Win Server 2008 RD案例:Client通过Server的浏览器上网

    一.简介 RD是Windows Server远程桌面服务,可以实现从客户端运行服务器上的软件.首先在Server安装软件,设置能远程访问的应用和账号,并且创建.rdp快捷方式文件,然后Client打开 ...

  7. MMORPG大型游戏设计与开发(服务器 游戏场景 核心详述)

    核心这个词来的是多么的高深,可能我们也因为这个字眼望而却步,也就很难去掌握这部分的知识.之所以将核心放在最前面讲解,也可以看出它真的很重要,希望朋友们不会错过这个一直以来让大家不熟悉的知识,同我一起进 ...

  8. Leetcode: word search

    July 6, 2015 Problem statement: Word Search Given a 2D board and a word, find if the word exists in ...

  9. 洛谷P3406 海底高铁[差分 贪心]

    题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元,历时15年,于公元2058年建成.凭借该隧道,从厦门可以乘坐火车直达台湾.博艾和日本,全程只需要4个 ...

  10. java1.8常用的函数式接口

    //常用函数式接口 final ; //num++; //第一个为传入参数的类型:第二个为返回数据的类型 Function<int[],String> function = (from) ...