借鉴:http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari3/index.html

Ambari 在启动的时候,会扫描 resource 目录下 Stack 下面的 service 配置。也就是每个 Service 的 metainfo.xml,同时会将这些配置信息放在自己的数据库中。当用户在 WEB 上面点击 “Add Service”的时候,WEB 就会加载这些配置信息到具体的页面里。在 Service 的 metainfo.xml 中,commandScript 字段就是用来配置 service check 脚本入口。如果一个 Service 的 metainfo.xml 有该字段,那么在 Service 的 Action 列表中就会出现“Run Service Check”这个命令。对于自定义的 Service,默认是没有这些配置项的。如果一个自定义的 Service 需要某些必须的参数时,就必须创建 Service 的配置目录(configuration)和对应的配置文件,让用户安装的时候输入。

在ambari的基础上,我们想要安装我们自己的软件,通过查找自己做了一下:

mkdir /var/lib/ambari-server/resources/stacks/HDP/2.4/services/DAXIONG

在/var/lib/ambari-server/resources/stacks/HDP/2.4/services下面有很多service目录,是ambari自己的安装软件组,我们可以自己建一个目录,目录名字最好大写,我是按照目录里写的;在每个service下的目录中都有metainfo.xml文件,上述也介绍了,下面是我的metainfo.xml内容;

<?xml version="1.0"?>
<metainfo>
    <schemaVersion>2.0</schemaVersion>
    <services>
        <service>
            <name>DAXIONG</name>
            <displayName>DAXIONG Service</displayName>
            <comment>A DAXIONG Service</comment>
            <version>1.0</version>
            <components>
                <component>
                    <name>DAXIONG_MASTER</name>
                    <category>MASTER</category>
                    <cardinality>1</cardinality>
                    <commandScript>
                        <script>scripts/master.py</script>
                        <scriptType>PYTHON</scriptType>
                        <timeout>600</timeout>
                    </commandScript>
                </component>
                <component>
                    <name>DAXIONG_SLAVE</name>
                    <category>SLAVE</category>
                    <cardinality>1+</cardinality>
                    <commandScript>
                        <script>scripts/slave.py</script>
                        <scriptType>PYTHON</scriptType>
                        <timeout>600</timeout>
                    </commandScript>
                </component>
                <component>
                    <name>DAXIONG_CLIENT</name>
                    <category>CLIENT</category>
                    <cardinality>1+</cardinality>
                    <commandScript>
                        <script>scripts/client.py</script>
                        <scriptType>PYTHON</scriptType>
                        <timeout>600</timeout>
                    </commandScript>
                </component>
            </components>
            <osSpecifics>
                <osSpecific>
                    <osFamily>any</osFamily>
                </osSpecific>
            </osSpecifics>
        </service>
    </services>
</metainfo>

创建命令脚本. 为命令脚本创建一个目录 /var/lib/ambari-server/resources/stacks/HDP/2.0.6/services/DAXIONG/package/scripts

[root@master scripts]# ls
master.py  client.py  slave.py

[root@master scripts]# cat master.py

import sys
from resource_management import *
class Master(Script):
  def install(self, env):
    print 'Install the Sample DAXIONG Master';
  def stop(self, env):
    print 'Stop the Sample DAXIONG Master';
  def start(self, env):
    print 'Start the Sample DAXIONG Master';
  def status(self, env):
    print 'Status of the Sample DAXIONG Master';
  def configure(self, env):
    print 'Configure the Sample DAXIONG Master';
if __name__ == "__main__":
  Master().execute()

[root@master scripts]# cat client.py

import sys
from resource_management import *
class Slave(Script):
  def install(self, env):
    print 'Install the Sample DAXIONG Slave';
  def stop(self, env):
    print 'Stop the Sample DAXIONG Slave';
  def start(self, env):
    print 'Start the Sample DAXIONG Slave';
  def status(self, env):
    print 'Status of the Sample DAXIONG Slave';
  def configure(self, env):
    print 'Configure the Sample DAXIONG Slave';
if __name__ == "__main__":
  Slave().execute()

[root@master scripts]# cat slave.py

import sys
from resource_management import *
class SampleClient(Script):
  def install(self, env):
    print 'Install the Sample DAXIONG Client';
  def configure(self, env):
    print 'Configure the Sample DAXIONG Client';
if __name__ == "__main__":
  SampleClient().execute()

上面的配置完后需要重新启动ambari,然后在web界面添加服务就可以了,这只是一个简单是事例,因为最近在做这一方面,所以简单的测试了一下。中间原来搭建的hbase出现了问题,只需要进入所在的机器(host),开启没有开启的服务即可。

下面是截图:

转载于:https://blog.51cto.com/daxionglaiba/1828855

ambari 自定义组件安装相关推荐

  1. Office2016自定义组件安装过程

    今天安装了Office2016,但在安装时并没有出现组件安装选项,Access.Outlook等一般人用不着的组件也会一并被安装,另外在控制面板的程序卸载页面的更改选项也没有组件禁用选项,于是在网上搜 ...

  2. Vue自定义组件npm上传私服,且从私服下载使用

    Vue自定义组件npm上传私服,yarn私服下载使用 安装镜像源管理工具nrm 发布自定义组件到公司私服 若未下载nrm源管理工具直接使用npm设置私服地址也可以 以下步骤都是基于npm命令 从私服下 ...

  3. Android复习06【网络编程提高篇-安装GsonFormat、HttpUrlConnection封装、线程池、GsonFormat解析Json、自动加载下一页、自定义组件、页头页尾刷新、侧滑删除】

    2020-04-07 星期二 [第8周] [考试不考...] 目   录 思维导图 安装GsonFormat插件 添加网络访问权限 GitHub---HttpUrlConnection封装 线程池 G ...

  4. 大数据管理神器:Ambari自定义stack和服务二次开发详细教程

    背景 Ambari 是 Apache Software Foundation 的一个顶级开源项目,是一个集中部署.管理.监控 Hadoop 分布式集群的工具. 部署:自动化部署 Hadoop 软件,能 ...

  5. Ambari入门及安装

    Ambari简述 什么是Ambari Apache Ambari项目旨在通过开发用于配置,管理和监控Apache Hadoop集群的软件来简化Hadoop管理.Ambari提供了一个直观,易用的Had ...

  6. 转载-大数据管理神器:Ambari自定义stack和服务二次开发详细教程

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/ZYC88888/article/det ...

  7. vue自定义组件并使用

    以下是使用自己写的一个简单的文件上传框为例 1.自定义组件结构(一个js文件,一个vue文件),最好单独放一个文件 2.upload.vue 内容 其中,action是父组件传递给子组件的参数,使用p ...

  8. 笔记三 vue中封装复用 过滤器 自定义组件 vue中component选项

    题外话: npm install -g express-generator npm安装express框架 封装复用 Vue中关于封装复用的内容,属于Vue中的进阶知识,在实战中对开发者的抽象和泛化能力 ...

  9. 微信小程序 基础3【组件化开发、自定义组件、全栈开发、使用Express】

    视频地址: https://www.bilibili.com/video/BV1cW411T7t6  [2018]学做小程序- 清华大学 https://www.bilibili.com/video/ ...

最新文章

  1. 趣谈网络协议笔记-二(第七,八,九讲)
  2. SmartOS之以太网精简协议栈TinyIP
  3. 完美的素数_JAVA
  4. TCPview 介绍
  5. 内存对齐分配策略(含位域模式)
  6. android 聊天功能实现,Android聊天背景功能实现
  7. php获取推特feed twitter timeline feed
  8. 招聘笔记:机器学习基础知识(19道题,有参考答案)
  9. c语言 二进制输出_C语言编译器
  10. 把握linux内核设计思想系列【转】
  11. 触屏西门子plc和计算机通讯,西门子S7-200CPU之间及它们与触摸屏之间数据读取如何连接?...
  12. OC中浮点数转整数的进一法和去尾法
  13. iTunes12.9以上 自定义铃声 无法拖入 无法添加
  14. ubuntu系统安装好搜狗输入法后只能输入英文,无法输入中文的解决方案
  15. 教程篇(7.0) 01. FortiGate安全 简介及初始配置 ❀ Fortinet 网络安全专家 NSE 4
  16. 易扩展,易复用,封装axios
  17. Java 无需解压直接读取ZIP压缩包里的文件及内容
  18. RabbitMq集成SpirngBoot
  19. 数值计算练习 LU分解(杜里特尔和克洛特分解)
  20. 蚂蚁估值之惑:金融科技公司可以约等于科技公司吗?

热门文章

  1. JAVA和javascrito_JAVA 和JavaScript的split方法异同
  2. uva 1153—— Keep the Customer Satisfied
  3. 739. 每日温度 golang
  4. 20. 有效的括号 golang 堆栈
  5. 指针数组和数组指针和函数指针
  6. 【报错解决】linux网络编程报错storage size of ‘serv_addr’ isn’t known解决办法
  7. C++类模板实例化条件
  8. 一文搞懂JVM架构:跳槽面试大厂被拒
  9. 你知道如何用面向对象思想写好并发编程吗?
  10. Springboot集成BeanValidation扩展一:错误提示信息加公共模板