Ambari 管理一个自定义的 Service

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

第一步,首先在 Ambari Service 机器上找到 HDP 2.2 Stack 的目录

HDP 2.2 的目录

[root@master services]# pwd
/var/lib/ambari-server/resources/stacks/HDP/2.2/services

第二步,需要创建一个 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.pyslave.py。这里需要保证脚本路径和上一步中 metainfo.xml 中的配置路径是一致的。这两个 Python 脚本是用来控制 Master 和 Slave 模块的生命周期。脚本中函数的含义也如其名字一样:install 就是安装调用的接口;start、stop 分别就是启停的调用;Status 是定期检查 component 状态的调用;Configure 是安装完成配置该模块的调用。示例目录结构
目录结构

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 ,点击左下角的 Action,选择 Add Service。如下图:
add
这时候就可以看到我们自定义的 Service:SAMPLE。如下图:

SAMPLE

选择左侧 My Sample 后,就可以一路 Next 了
如果有不足的地方可以指出!
原文档:https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值