这篇文章主要讲解了“ambari怎么增加ElasticSearch服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ambari怎么增加ElasticSearch服务”吧!
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>
服务和组件名字一定要大写,不然后面你会全部重新来过的。不要问我为什么知道,我重试了N次。
package节点的name 很重要。yum install [name]
category节点组件类型可以有MASTER,SLAVE,CLIENT几种,那p2p集群咋办?
MASTER不是必须得有,只有SLAVE也可以
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()
部署,重启,安装,然后就能看到我们的成果了,虽然看起来超级简单,没关系,下面我们会继续完善功能,配置,监控,告警管理。。。。

感谢各位的阅读,以上就是“ambari怎么增加ElasticSearch服务”的内容了,经过本文的学习后,相信大家对ambari怎么增加ElasticSearch服务这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!