文档章节

ambari 二次开发之增加ElasticSearch服务

纳兰琴
 纳兰琴
发布于 2015/03/21 13:55
字数 725
阅读 773
收藏 0


        Ambari是支持服务扩展的,只需要,恩,整理,打包,扔我们的服务到它的资源目录,重启服务器就可以了。听起来很简单。它的服务组织结构是分Stack / Service /Component 3层的 。所以我们从Stack开始。一个自定义Stack的目录结构如图(从HDP的复制过来)。

自定义Stack

[root@master stacks]# pwd
/var/lib/ambari-server/resources/stacks
[root@master stacks]# tree NQ
NQ
└── 1.1
    ├── configuration
    │   └── cluster-env.xml
    ├── metainfo.xml
    ├── repos
    │   └── repoinfo.xml    #软件仓库的URL
    └── services    #服务目录
        └── ELASTICSEARCH
            ├── configuration
            │   └── elasticsearch-env.xml
            ├── metainfo.xml
            ├── metrics.json
            └── package
                ├── archive.zip
                ├── scripts
                │   └── master.py
                └── templates

9 directories, 8 files

有了Stack后(当然,你直接扔到HDP的服务下面也可以),我们可以添加自己的服务了。可以看到服务是在Stack的services下的,每个目录。

自定义Service

目录结构

        |_ services
            |_ <service_name>
               metainfo.xml    #服务配置文件
               metrics.json    #运维指标配置,映射ganglia和ambari
               |_ configuration
                  {configuration files}    #配置文件
               |_ package
                  {files, scripts, templates}    #安装脚本,模板和一些文件

metainfo.xml     服务配置文件,我尽量写全面一点,为了解释清楚各个配置项。

<?xml version="1.0"?>
<metainfo>
    <schemaVersion>2.0</schemaVersion>
    <services>
        <service>
            <name>ELASTICSEARCH</name>
            <displayName>ElasticSearch</displayName>
            <comment>ElasticSearch service</comment>
            <version>1.4.0</version>
            <components>
                <component>
                    <name>ELASTICSEARCH</name>
                    <displayName>ElasticSearch</displayName>
                    <category>MASTER</category>
                    <cardinality>1</cardinality>
                    <commandScript>
                        <script>scripts/master.py</script>
                        <scriptType>PYTHON</scriptType>
                        <timeout>600</timeout>
                    </commandScript>
                </component>
                <component>
                    <name>ELASTICSEARCH_NODE</name>
                    <displayName>ElasticSearchNode</displayName>
                    <category>SLAVE</category>
                    <cardinality>ALL</cardinality>
                     <auto-deploy> <!--自动部署,仅在cardinality满足的情况下,界面上就不问,在这台主机,是否安装这个组件了-->
                        <enabled>false</enabled>
                    </auto-deploy>
                    <commandScript>
                        <script>scripts/slave.py</script>
                        <scriptType>PYTHON</scriptType>
                        <timeout>600</timeout>
                    </commandScript>
                    <!--<configFiles>
                      <configFile>
                        <type>env</type>
                        <fileName>elasticsearch-env.xml</fileName>
                        <dictionaryName>elasticsearch-env</dictionaryName>
                      </configFile>
                    </configFiles>-->
                </component>
            </components>
            <osSpecifics>
                <osSpecific>
                  <osFamily>any</osFamily>
                  <packages>
                    <package>
                      <name>elasticsearch</name>
                    </package>
                  </packages>
                </osSpecific>
            </osSpecifics>
            <requiredServices>
                <service>GANGLIA</service> <!--依赖服务,安装的时候限制,没有不能继续安装-->
            </requiredServices>
            <configuration-dependencies>
              <config-type>elasticsearch-env</config-type>
            </configuration-dependencies>
            <monitoringService>false</monitoringService> <!--如果是监控服务的话,每个组件重启,他都要重启-->
        </service>
    </services>
</metainfo>
  1. 服务和组件名字一定要大写,不然后面你会全部重新来过的。不要问我为什么知道,我重试了N次。

  2. package节点的name 很重要。yum install [name] 

  3. category节点组件类型可以有MASTER,SLAVE,CLIENT几种,那p2p集群咋办?

  4. MASTER不是必须得有,只有SLAVE也可以

  5. cardinality节点是安装基数。1+ 最少一个 ,  0-1 最多一个 ,ALL 全部

master.py  一个最简单的安装脚本,好吧,实际上它什么也没做

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


部署,重启,安装,然后就能看到我们的成果了,虽然看起来超级简单,没关系,下面我们会继续完善功能,配置,监控,告警管理。。。。


参考资料

https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=38571133


© 著作权归作者所有

共有 人打赏支持
纳兰琴
粉丝 48
博文 23
码字总数 13442
作品 0
杭州
高级程序员
详解Linux运维工程师高级篇(大数据安全方向)

详解linux运维工程师高级篇(大数据安全方向) hadoop安全目录: kerberos(已发布) elasticsearch knox oozie ranger apache sentry 简介: 从运维青铜到运维白银再到运维黄金,这里就要牵...

cs312779641
02/07
0
0
简单分析Ambari——顶级Hadoop管理方案

前面我们提到了两个比较火的Hadoop集群运维管理工具 Ambari和Cloudera Manager。它们集安装,配置,监控于一身,对于Hadoop的初学者可以起到很好的帮助作用。这篇文章就对Ambari着重介绍一下...

叁金
05/25
0
0
centos7.4配置ambari2.4.0.1+HDP-2.5.0.0

前言   由于项目需求,最近需要使用ambari配置hdp,因此在公司找了台搭建一套测试环境,测试环境运行在kvm虚拟机上,ambari版本和hdp版本没有采用最新版进行配置,为了快速进行配置,使用了...

sdhzdtwhm
07/09
0
0
ambari部署hadoop集群

1、基本工具 yum、scp、curl、wget、pdsh、ssh 2、环境准备 2.1、系统环境 Centos6.5 64bit Ambari 1.4.3.38 2.2、ambari server 与 ambari agent 服务器root ssh无密互访 Ambari server服务...

chunhei2008
2014/01/18
0
0
CentOS6、7局域网离线安装Ambari

(自己安装多遍,踩过各种坑,终于趟顺了,下面绝对完整版) (安装6、7的步骤一样,只是相关执行命令6、7会有差别) 1.1 Ambari Ambari的作用来说,就是创建、管理、监视 Hadoop的集群。Amb...

cp_panda_5
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
19分钟前
0
0
AVA中CAS-ABA的问题解决方案AtomicStampedReference

了解CAS(Compare-And-Swap) CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS。 JAVA中CAS的实现 JAVA中的cas主要使用的是...

码代码的小司机
22分钟前
0
0
Android JNI开发系列(十三) JNI异常处理

JNI 异常处理 JNI异常与JAVA处理异常的区别 JAVA 有异常处理机制,而JNI没有 如果JAVA中异常没有捕获,后面的代码不会执行,JNI会执行 JAVA编译时的异常,是在方法显示的声明了某一个异常,编...

蔡小鹏
35分钟前
2
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

Linux就该这么学
59分钟前
1
0
Qt那些事0.0.7

在帮助文档(Overview - QML and C++ Integration)中随缘遇到一张图,是关于C++对象与QML整合介绍的,值得标记下来,虽然大部分功能也有所涉猎,但是还是留个记号,万一哪天我失忆了还想写Q...

Ev4n
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部