小菜鸟的个人博客已经正式上线且对外开放啦…
博客访问地址:小菜鸟的大梦想
欢迎各位同学扫码关注本人公众号 ↓↓↓ 更多优质内容将 首发 公众号
前言
本文穿插讲述如何将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进行校验
mkdir -p /github/cloudera
cd /github/cloudera
# 如果没有git环境,可下载至本机,再上传至当前目录下
git clone https://github.com/cloudera/cm_ext.git
cd cm_ext
# mvn 打包
mvn package -Dmaven.test.skip=true
编译成功后如下图:
说明:build_parcel.sh 和 build_csd.sh 脚本文件里面执行jar包路径默认是~/github/cloudera/…
下载Elasticsearch安装包
前往官网下载 7.10.2 版本上传至/github/cloudera/elasticsearch目录:传送门
或采用以下方式直接下载:
mkdir elasticsearch
cd elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz
下载制作Parcel包和CSD文件的脚本
git clone https://github.com/ibagomel/elasticsearch-parcel.git
# 如果上述连接访问超时,可替换至本人仓库,内容一致
git clone https://gitee.com/lynsite/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文件并校验
cd elasticsearch-parcel
POINT_VERSION=5 VALIDATOR_DIR=/github/cloudera/cm_ext OS_VER=el7 PARCEL_NAME=ElasticSearch ./build-parcel.sh /github/cloudera/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz
VALIDATOR_DIR=/github/cloudera/cm_ext CSD_NAME=ElasticSearch ./build-csd.sh
# 如果上述命令报脚本报权限问题,请检查脚本是否有执行权限
制作成功如图所示:
查看Parcel包和csd文件
制作完成后的目录结构及文件:
CDH6安装部署ES服务
上传制作好的 csd jar包
将生成的csd文件(在生成的 build-csd 文件夹下),复制到cloudera-manager-server服务所在节点的/opt/cloudera/csd目录下
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服务中
mkdir -p /var/www/html/cloudera-repos/elasticsearch
cd /var/www/html/cloudera-repos/elasticsearch
cp /github/cloudera/elasticsearch-parcel/build-parcel/ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel ./
cp /github/cloudera/elasticsearch-parcel/build-parcel/manifest.json ./
部署完成后可以浏览器访问:http://masterIP/cloudera-repos/elasticsearch/ 进行验证
赋权给CM用户
cd /opt/cloudera/csd
chown -R cloudera-scm:cloudera-scm ./*
cd /opt/cloudera/parcel-repo
chown -R cloudera-scm:cloudera-scm ./*
添加远程Parcel存储库URL
URL:http://masterIP/cloudera-repos/elasticsearch/
检查新parcel找到ELASTICSEARCH 下载、分发、激活
已经点击 download -> distribute -> activate
重启cm添加ES服务
此处添加操作同CDH安装时添加服务一样,不再详细说明。安装启动如果报错,根据具体异常进行分析解决。本人电脑硬件配置 32G 8核16线程,之前安装过CDH6,集群启动后内存直接爆到百分之九十多,所以个人机器安装CDH请慎重。
以下为添加服务及启动成功后的截图,来源于CSDN:
选择主机,定义ES集群名称(cluster.name),名称任意取,默认名称为data-lakes,但是集群的每台主机的集群名字需要一样,不然会被认为是另一个ES集群的主机。
再重启Elasticsearch,启动成功。
以上制作及安装过程为本司采用方式,但在编写本文时并未在本机再次进行安装测试(资源伤不起啊),上述过程仅供参考,具体情况还需具体分析。
下面给出网友在安装启动时遇到的坑:
坑1: UserException
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集群各个节点均执行
chmod 777 /opt/cloudera/parcels/ELASTICSEARCH/config/
坑2:启动错误 startup exception:failed to obtain node locks
解决方案:
发现是后台已经有了一个elasticsearch 进程,所以拿不到lock
# 查看自己端口的使用情况
netstat -alnp | grep 9200
# 终止进程
kill -9 24776