文档章节

ambari 二次开发之增加ElasticSearch服务

纳兰琴
 纳兰琴
发布于 2015/03/21 13:55
字数 725
阅读 828
收藏 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


© 著作权归作者所有

共有 人打赏支持
纳兰琴
粉丝 49
博文 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
Ambari在离线环境中安装Hadoop集群

(WJW)Ambari在离线环境中安装Hadoop集群 如果手工安装Hadoop集群,在管理和后继部署中,越来越多的问题不断出现,主要如下:+ 各集群节点的配置同步+ 新应用的部署:比如为集群添加hbase应用,...

白石
2015/10/26
0
0
Apache Ambari 2.4 发布,Hadoop 管理监控

Apache Ambari 2.4 发布了,Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Z...

开源中国股侠
2016/09/08
2.4K
0
centos7.4配置ambari2.4.0.1+HDP-2.5.0.0

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

sdhzdtwhm
07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C#匿名委托

list自定义排序 //list自定义排序public static List<string> sortList(List<string> m_str,string splitStr) //a b表示列表中的元素{String[] strArray=m_str.ToArray();......

青衣霓裳
10分钟前
0
0
Python 之父退位后,会有新任终身仁慈独裁者吗?怎么产生?

随着 Python 之父 Guido van Rossum 逐步卸任 BDFL,Python(CPython)的未来之路牵动了万千开发者的心。没了首领,Python 今后的发展会怎么样?社区将如何运作?谁来领导 Python 这门语言和...

编辑部的故事
15分钟前
6
0
我的Linux系统九阴真经

在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行业,共享经济等概念的公...

linux-tao
今天
20
0
MySQL: Starting MySQL….. ERROR! The server quit without updating PID file

前段时间打包了一个数据库镜像,但是启动容器之后发现报错 ··· ··· MySQL: Starting MySQL….. ERROR! The server quit without updating PID file 查了网络上的解决方案比较全,遂转帖...

blackfoxya
今天
6
0
C4C销售订单行项目价格维护方法

需求很简单,能够创建销售订单,在行项目里添加产品,带出价格来,同时把总价显示在销售订单抬头区域。 如下图所示: 下面是具体配置。 Business Configuration里,点击Sales Order的配置: ...

JerryWang_SAP
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部