一、准备工作
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,出现如下界面。