ambari2.7.4+hdp3.1集成elastic search

一、准备工作

1、环境准备

ambari版本 2.7.4 hdp版本3.1

已在虚拟机中提前搭建好了集群环境。

只有一台虚拟机 所以全部采取单节点模式。

主机名 master

ip 192.168.134.132

其中,elasticsearch master安装到master管理节点,elasticsearch slave安装到所有节点。
Kibana server服务安装到master管理节点。
(注意:/etc/hosts中一定要将主机名和IP做好对应)

2、所需要安装包
elasticsearch-6.4.2.tar.gz
kibana-6.4.2-linux-x86_64.tar.gz
Ambari-Elastic-Service-master.zip
下载地址:
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-4-2
下载地址:
https://www.elastic.co/cn/downloads/past-releases/kibana-6-4-2
下载地址:
https://github.com/BalaBalaYi/Ambari-Elastic-Service

 

二、上传解压拷贝
1、Ambari-Elastic-Service-master.zip
新建/opt/es目录,将Ambari-Elastic-Service-master.zip上传至此目录并解压。

进入解压后的目录内

将ELASTICSEARCH-6.4.x文件夹和KIBANA-6.4.x文件夹拷贝到/var/lib/ambari-server/resources/stacks/HDP/3.0/services目录

进入/var/lib/ambari-server/resources/stacks/HDP/3.0/services目录

将ELASTICSEARCH-6.4.x和KIBANA-6.4.x重命名

2、elasticsearch-6.4.2.tar.gz 和 kibana-6.4.2-linux-x86_64.tar.gz
新建/var/www/html/es目录,将kibana-6.4.2-linux-x86_64.tar.gz和elasticsearch-6.4.2.tar.gz两个压缩包上传至此目录
通过浏览器输入http://manager.node/es测试能否访问此目录(需要有httpd服务)

3、重启ambari-server
ambari-server restart
三、安装
addservice

勾选Elasticsearch和Kibana

选择master和server服务安装的节点

选择slave服务安装的节点

服务配置界面有红点提示需要补充完整

elasticsearch的Discovery Zen Ping Unicast Hosts参数(之前所选安装的节点)

elasticsearch的Elasticsearch Download Url参数(安装包地址)

kibana的Elasticsearch Url参数(es的使用地址)

kibana的Server Host参数(之前所选安装的节点)

kibana的Kibana Download Url(安装包地址)

点下一步点部署,遇到了错误。

四、遇到问题
1、用户名组的问题

错误提示:

KeyError: u'elasticsearch'
Error: Error: Unable to run the custom hook script ['/usr/bin/python', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py', 'ANY', '/var/lib/ambari-agent/data/command-102.json', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY', '/var/lib/ambari-agent/data/structured-out-102.json', 'INFO', '/var/lib/ambari-agent/tmp', 'PROTOCOL_TLSv1_2', '']
1
2
解决办法:需要修改ambari-server资源中的一个配置参数,将gnore_groupsusers_create由false改为true。之后手动创建用户。
具体步骤:

cd /var/lib/ambari-server/resources/scripts

python configs.py -u admin -p admin -n cluster_es -l manager.node -t 8080 -a get -c cluster-env | grep -i ignore_groupsusers_create

python configs.py -u admin -p admin -n cluster_es -l manager.node -t 8080 -a set -c cluster-env -k ignore_groupsusers_create -v true
1
2
3
4
5

手动创建用户(所有master和slave节点,组其实脚本已经创建了)

useradd -g elasticsearch elasticsearch
1

上述执行完之后,安装界面点击retry重试,仍然有错误。

2、无法导入format_hdp_stack_version

错误提示:

ImportError: cannot import name format_hdp_stack_version
1
解决办法:

进入/var/lib/ambari-server/resources/stacks/HDP/3.0/services/ELASTICSEARCH/package/scripts目录。

编辑 params.py,将params.py文件中的format_hdp_stack_version删除。

清除所有elasticsearch slave节点的ambari-agent缓存。

rm -rf /var/lib/ambari-agent/cache/*
1
server节点重启

ambari-server restart
1
slave节点重启

ambari-agent restart
1
之后重新安装或者重试,遇到下面错误。


3、kibana无法导入format_hdp_stack_version

解决办法同上。
只不过进入的目录是/var/lib/ambari-server/resources/stacks/HDP/3.0/services/KIBANA/package/scripts目录。
清除缓存,重启ambari server和agent服务。
之后重新安装或者重试,遇到下面错误。

4、kibana的_new__() takes at least 2 arguments(1 given)

原因是需要创建kibana用户。
在kibana server节点上创建kibana用户(组其实脚本已经创建了)。

useradd -g kibana kibana
1
之后重试,遇到下面警告,出现警告不能重试,暂时安装完成。


5、hostname was not found in configuration dictionary

点击restart重启服务,失败,查看错误信息。

错误提示:

File "/var/lib/ambari-agent/cache/stacks/HDP/3.0/services/ELASTICSEARCH/package/templates/elasticsearch.master.yml.j2", line 93, in top-level template code
action.destructive_requires_name: {{action_destructive_requires_name}}
File "/usr/lib/ambari-agent/lib/resource_management/libraries/script/config_dictionary.py", line 73, in __getattr__
raise Fail("Configuration parameter '" + self.name + "' was not found in configurations dictionary!")
resource_management.core.exceptions.Fail: Configuration parameter 'hostname' was not found in configurations dictionary!
1
2
3
4
5
解决办法:
进入目录

/var/lib/ambari-server/resources/stacks/HDP/3.0/services/ELASTICSEARCH/configuration
1

编辑elasticsearch-config.xml,发现其中的discovery.zen.ping.unicast.hosts属性的值是空的。

我们在安装的时候是填了这个参数的,将这个参数的值给补上。

<name>discovery.zen.ping.unicast.hosts</name>
<value>manager.node</value>
1
2
进入目录

/var/lib/ambari-server/resources/stacks/HDP/3.0/services/ELASTICSEARCH/package/scripts
1
编辑params.py,发现其中有两处hostname=config[‘hostname’]的写法。

将两处都修改为:

hostname = config['configurations']['elasticsearch-config']['discovery.zen.ping.unicast.hosts']
1

清除所有elasticsearch slave节点的ambari-agent缓存。
server节点重启ambari-server restart
slave节点重启ambari-agent restart
重启elasticsearch服务,发现服务可以启动了,但是没过多久又失败了。

6、master和slave都启动又停止
查看日志会发现提示这两个错误。

错误提示:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
1
解决办法:
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量

ulimit -Hn
ulimit -Sn
1
2
修改/etc/security/limits.conf文件,增加配置(所有master和slave节点)。

错误提示:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
1
解决办法:
修改/etc/sysctl.conf文件,增加配置(所有master和slave节点)。

vm.max_map_count=262144
1

然后执行命令sysctl -p生效

sysctl -p
1

重启elasticsearch服务,发现出现如下错误。

7、parent directory /opt/elasticsearch/master/config doesnot exist

这个错误在另外两个slave节点上出现的。
解决办法很简单,直接创建一个空的目录就可以。

mkdir -p /opt/elasticsearch/master/config
1
重启elasticsearch服务,服务不再停止了。

五、安装完成
最终的主页如下图。

浏览器中打开http://manager.node:9200,出现如下界面。

 

posted @ 2020-05-05 20:50  彬在俊  阅读(1829)  评论(0编辑  收藏  举报