centos7 Cloudera Manager 6.X 添加 ES 服务

基础环境为CM6.3.1 和CDH6.3.2平台。centos7.详细搭建看上一篇。
ES下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 百度网盘下载方式:
https://pan.baidu.com/s/1CY0sitxJEbOqttsSNBGt0A 提取码:xcdn

elasticsearch-parcel百度网盘链接:
https://pan.baidu.com/s/1gYZf3Vxl2OORTrbY1ojnzQ 提取码:5zrt

CM 中添加Elasticserch 服务,嫌麻烦的可以查下其他的简单安装方式。要求有maven(我的3.6.3), git环境。安装步骤省略,git yum一个就可以

1. 下载 cm_ext

Cloudera提供的cm_ext工具,对生成的csd和parcel进行校验

[root@cdh1 soft]# mkdir -p /opt/soft/cloudera/
[root@cdh1 soft]# cd cloudera/
[root@cdh1 cloudera]# git clone https://github.com/cloudera/cm_ext.git
[root@cdh1 cloudera]# cd cm_ext/
[root@cdh1 cm_ext]# mvn package     # 或者mvn clean package -Dmaven.test.skip=true
[root@cdh1 cm_ext]# ll
total 20
drwxr-xr-x 4 root root    46 Jun 24 14:40 cm-schema
-rw-r--r-- 1 root root 11358 Jun 24 14:38 LICENSE.txt
drwxr-xr-x 3 root root   122 Jun 24 14:38 make_manifest
-rw-r--r-- 1 root root   640 Jun 24 14:38 pom.xml
-rw-r--r-- 1 root root   844 Jun 24 14:38 README.md
drwxr-xr-x 4 root root    63 Jun 24 14:41 validator

2. 下载并上传 ES-7.8.0

[root@cdh1 cloudera]# mkdir elasticsearch/
   [root@cdh1 cloudera]# ll elasticsearch/
   total 311636
   -rw-r--r-- 1 root root 319112561 Jun 24 17:31 elasticsearch-7.8.0-linux-x86_64.tar.gz


3. 下载制作Parcel包和CSD文件的脚本

18年后就没怎么更新。可以做少量更改
后补:截至21年3月13日,网友反馈 github上elasticsearch-parcel失效了,我把修改后的放入网盘链接在上面,需要修改的根据自己环境修改。

[root@cdh1 cloudera]# git clone https://github.com/ibagomel/elasticsearch-parcel.git
   [root@cdh1 cloudera]# pwd
   /opt/soft/cloudera
   [root@cdh1 cloudera]# ll elasticsearch-parcel/
   total 12
   -rwxr-xr-x 1 root root  597 Jun 24 15:15 build-csd.sh
   -rwxr-xr-x 1 root root 1661 Jun 24 15:15 build-parcel.sh
   drwxr-xr-x 5 root root   53 Jun 24 15:15 csd-src
   drwxr-xr-x 3 root root   18 Jun 24 15:15 parcel-src
   -rw-r--r-- 1 root root 1429 Jun 24 15:15 README.md


4. 如果CDH为6.X 需要做如下改动

对于CDH6.X版本需要进行两处修改:

1.将elasticsearch-parcel文件夹下的 /parcel-src/meta/parcel.json文件 中 “depends”: “CDH (>= 5.0), CDH (<< 6.0)” 修改为 “depends”: “CDH (>= 5.0), CDH (<< 10.0)”,

2.将elasticsearch-parcel文件夹下的 /csd-src/descriptor/service.sd1 文件中 “cdhVersion”: {“min”:5,“max”:6} 修改为:“cdhVersion”: {“min”:6,“max”:6}

3.如果自己安装了jdk,修改下elasticsearch-parcel/csd-src/scripts/control.sh文件,注释掉export JAVA_HOME=/usr/java/latest,避免后续出错could not find java in JAVA_HOME or bundled at /usr/java/latest/bin/java

5.修改脚本(非必须)

修改elasticsearch-parcel下 build-csd.sh 和build-parcel.sh 脚本**
使生成包的版本与ES对应。
vim build-csd.sh 做如下修改,CSD_NAME 后面版本改成对应的es版本

# Make directory
mkdir $BUILD_DIR
cd $SRC_DIR
jar -cvf "$CSD_NAME-7.8.0.jar" *
cd ..
mv "$SRC_DIR/$CSD_NAME-7.8.0.jar" $BUILD_DIR/.

vim build-parcel.sh 两处 "0.0.“ 直接去掉。后面的point-version
直接用es版本号

PARCEL_NAME=$(echo ${PARCEL_NAME_UPPER}-0.0.${POINT_VERSION}.${PARCEL_NAME_LOWER}.p0.${POINT_VERSION})
SHORT_VERSION=$(echo 0.0.${POINT_VERSION})
FULL_VERSION=$(echo ${SHORT_VERSION}.${PARCEL_NAME_LOWER}.p0.${POINT_VERSION})

6.制作 Elasticsearch 的Parcel包和CSD文件并校验

[root@cdh1 cloudera]# cd elasticsearch-parcel/
elasticsearch-parcel]# POINT_VERSION=7.8.0 VALIDATOR_DIR=/opt/soft/cloudera/cm_ext OS_VER=el7 PARCEL_NAME=ElasticSearch ./build-parcel.sh /opt/soft/cloudera/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz
elasticsearch-parcel]# VALIDATOR_DIR=/opt/soft/cloudera/cm_ext CSD_NAME=ElasticSearch ./build-csd.sh

point_version: 目标版本
validator_dir: cm_ext所在的路径
os_ver: 平台版本 RHEL 6 OS_VER=el6 ,RHEL 7 OS_VER=el7, Ubuntu OS_VER=trusty
parcel_name: parcel包的名字
csd_name: csd文件名字

注意命令顺序,./build-parcel.sh 后面直接跟jar包,./build-csd.sh后面什么都不跟。制作完成之后,elasticsearch-parcel 多出来build-csd和buildparcel目录:

[root@cdh1 elasticsearch-parcel]# ll
total 12
drwxr-xr-x 2 root root   37 Jun 24 23:10 build-csd
-rwxr-xr-x 1 root root  601 Jun 24 18:32 build-csd.sh
drwxr-xr-x 3 root root  138 Jun 24 23:09 build-parcel
-rwxr-xr-x 1 root root 1653 Jun 24 23:01 build-parcel.sh
drwxr-xr-x 5 root root   53 Jun 24 23:10 csd-src
drwxr-xr-x 3 root root   18 Jun 24 15:15 parcel-src
-rw-r--r-- 1 root root 1429 Jun 24 15:15 README.md
[root@cdh1 elasticsearch-parcel]# ll build-csd
total 8
-rw-r--r-- 1 root root 5426 Jun 24 23:10 ELASTICSEARCH-7.8.0.jar
[root@cdh1 elasticsearch-parcel]# ll build-parcel
total 311952
drwxr-xr-x 10 root root       167 Jun 24 23:09 ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0
-rw-r--r--  1 root root 319432488 Jun 24 23:09 ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0-el7.parcel
-rw-r--r--  1 root root       487 Jun 24 23:09 manifest.json

7. 部署Elasticsearch服务

将Parcel包:ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0 和 manifest.json 文件部署到httpd服务中(前提已经安装http服务并启动)

[root@cdh1 elasticsearch-parcel]# mkdir /var/www/html/elasticsearch
  [root@cdh1 elasticsearch-parcel]#  cp ./build-parcel/ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0-el7.parcel /var/www/html/elasticsearch/
  [root@cdh1 elasticsearch-parcel]#  cp ./build-parcel/manifest.json /var/www/html/elasticsearch/
  [root@cdh1 elasticsearch-parcel]# ll /var/www/html/elasticsearch/
total 311952
-rw-r--r-- 1 root root 319432488 Jun 24 23:21 ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0-el7.parcel
-rw-r--r-- 1 root root       487 Jun 24 23:21 manifest.json

浏览器验证是否成功:IP/elasticsearch/

cdh有必要安装在docker吗_cdh有必要安装在docker吗

8. 复制将csd文件到cloudera-manager-server服务所在节点的/opt/cloudera/csd目录下

[root@cdh1 elasticsearch-parcel]# cp -r ./build-csd/ELASTICSEARCH-7.8.0.jar /opt/cloudera/csd
   [root@cdh1 elasticsearch-parcel]# ll /opt/cloudera/csd/
   total 8
   -rw-r--r-- 1 root root 5426 Jun 24 23:38 ELASTICSEARCH-7.8.0.jar

9.重启 cloudera-scm-server

[root@cdh1 elasticsearch-parcel]# service cloudera-scm-server restart

稍等2分钟 server重启后验证 集群 -> 添加服务 ,显示了 ES服务 就ok,先配置远程库以后才能安装服务。

cdh有必要安装在docker吗_大数据_02

cdh有必要安装在docker吗_elasticsearch_03

10.cloudera manager 部署 ES单节点

配置远程Parcel存储库

cdh有必要安装在docker吗_cdh有必要安装在docker吗_04

远程库http://cdh1/elasticsearch/ 注意不是https ,配置完 出来检查更新parcel

cdh有必要安装在docker吗_大数据_05

下载,分配,并激活

cdh有必要安装在docker吗_elasticsearch_06

分配没有截到图,分配后会在已分配中找到ES的激活。并且其他agent的/opt/cloudera/parcels 里会生成 ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0文件夹

cdh有必要安装在docker吗_elasticsearch_07

后续就是回到添加服务界面 添加 ES服务,过程很简单,快速略过。

cdh有必要安装在docker吗_cdh有必要安装在docker吗_08

错误1:
添加ES服务时候报错权限问题java.nio.file.AccessDeniedException:

解决:在安装ES的节点
chmod 777 /opt/cloudera/parcels/ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0/config

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]
Likely root cause: java.nio.file.AccessDeniedException: /opt/cloudera/parcels/ELASTICSEARCH-7.8.0.elasticsearch.p0.7.8.0/config/elasticsearch.keystore.tmp
	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
	at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
	at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
	at java.nio.file.Files.newOutputStream(Files.java:216)
	at org.apache.lucene.store.FSDirectory$FSIndexOutput.<init>(FSDirectory.java:410)
	at org.apache.lucene.store.FSDirectory$FSIndexOutput.<init>(FSDirectory.java:406)
	at org.apache.lucene.store.FSDirectory.createOutput(FSDirectory.java:254)
	at org.elasticsearch.common.settings.KeyStoreWrapper.save(KeyStoreWrapper.java:488)
	at org.elasticsearch.bootstrap.Bootstrap.loadSecureSettings(Bootstrap.java:259)
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349)
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
	at org.elasticsearch.cli.Command.main(Command.java:90)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)

错误2:使用时候报错,如http://cdh3:9200/_cat/nodes?pretty 时候报错

master_not_discovered_exception

解决:修改ES配置 增加masternodes 配置:cluster.initial_master_nodes: [“cdh3”]

cdh有必要安装在docker吗_cdh有必要安装在docker吗_09

cloudera manager 安装ES服务完毕,可以愉快玩耍了。

cdh有必要安装在docker吗_centos_10