ELK系列(六)、CDH6集成Elasticsearch服务(交由CM管理)
前言
本文穿插讲述如何将Elasticsearch服务集成至CHD,最终将服务交给Cloudera Manager统一管理。
本司线上使用CDH5,暂未升级至CH6,此处以CDH6版本进行集成制作,方式差异不大。
制作 Elasticsearch 的 Parcel 包和 csd 文件
配置Java、Maven环境
此处默认已配置完成,不再讲述,其中Maven版本建议选用较高版本。
环境验证
控制台输入 mvn -v,java -version 验证maven及java是否配置正确,正常情况下将打印对应版本信息。
下载cm_ext
Cloudera提供的cm_ext工具,生成的csd和parcel进行校验
1 | mkdir -p /github/cloudera |
编译成功后如下图:
说明:build_parcel.sh 和 build_csd.sh 脚本文件里面执行jar包路径默认是~/github/cloudera/…
下载Elasticsearch安装包
前往官网下载 7.10.2 版本上传至/github/cloudera/elasticsearch目录:传送门
或采用以下方式直接下载:
1 | mkdir elasticsearch |
下载制作Parcel包和CSD文件的脚本
1 | git clone https://github.com/ibagomel/elasticsearch-parcel.git |
下载完成后的目录结构:
修改Elasticsearch-parcel配置文件
vim elasticsearch-parcel/parcel-src/meta/parcel.json
坑1:在CDH上安装激活的时候版本不兼容
修改如下文件:
vim elasticsearch-parcel/csd-src/descriptor/service.sdl
坑2:could not find java in JAVA_HOME or bundled at /usr/java/latest/bin/java
注释掉脚本文件中的JAVA_HOME:
注意:此时如果已经完成parcel和csd文件的制作报错,需要重新制作。
制作 Elasticsearch 的Parcel包和CSD文件并校验
1 | cd elasticsearch-parcel |
制作成功如图所示:
查看Parcel包和csd文件
制作完成后的目录结构及文件:
CDH6安装部署ES服务
上传制作好的 csd jar包
将生成的csd文件(在生成的 build-csd 文件夹下),复制到cloudera-manager-server服务所在节点的/opt/cloudera/csd目录下
1 | cp /github/cloudera/elasticsearch-parcel/build-csd/ELASTICSEARCH-1.0.jar /opt/cloudera/csd |
部署Parcel包和mainfest.json到httpd服务中
将Parcel包:ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel 和 manifest.json 文件部署到httpd服务中
1 | mkdir -p /var/www/html/cloudera-repos/elasticsearch |
部署完成后可以浏览器访问:http://masterIP/cloudera-repos/elasticsearch/ 进行验证
赋权给CM用户
1 | cd /opt/cloudera/csd |
添加远程Parcel存储库URL
URL:http://masterIP/cloudera-repos/elasticsearch/
::: hljs-right
图片来源于CSDN
:::
检查新parcel找到ELASTICSEARCH 下载、分发、激活
已经点击 download -> distribute -> activate
重启cm添加ES服务
此处添加操作同CDH安装时添加服务一样,不再详细说明。安装启动如果报错,根据具体异常进行分析解决。本人电脑硬件配置 32G 8核16线程,之前安装过CDH6,集群启动后内存直接爆到百分之九十多,所以个人机器安装CDH请慎重。
以下为添加服务及启动成功后的截图,来源于CSDN:
选择主机,定义ES集群名称(cluster.name),名称任意取,默认名称为data-lakes,但是集群的每台主机的集群名字需要一样,不然会被认为是另一个ES集群的主机。
再重启Elasticsearch,启动成功。
以上制作及安装过程为本司采用方式,但在编写本文时并未在本机再次进行安装测试(资源伤不起啊),上述过程仅供参考,具体情况还需具体分析。
下面给出网友在安装启动时遇到的坑:
坑1: UserException
1 | Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: org.elasticsearch.cli.UserException: unable to create temporary keystore at [/opt/cloudera/parcels/ELASTICSEARCH/config/elasticsearch.keystore.tmp], write permissions required for [/opt/cloudera/parcels/ELASTICSEARCH/config] or run [elasticsearch-keystore upgrade] |
解决方案:
在cdh集群各个节点均执行
1 | chmod 777 /opt/cloudera/parcels/ELASTICSEARCH/config/ |
坑2: 启动错误 startup exception:failed to obtain node locks
解决方案:
发现是后台已经有了一个elasticsearch 进程,所以拿不到lock
1 | 查看自己端口的使用情况 |