此前Elasticsearch我一直是单独搭建的,后来偶然发现可以在Cloudera Manager中添加ES服务,在搭建过程中这篇博客给了我很多帮助
https://www.cnblogs.com/zhangrui153169/p/11447423.html
但存在一些问题,在这里记录下来以作为这篇文章的补充,也希望能帮助大家减少踩坑。
目前测试该方法适用于CDH5.X和6.X版本,对于6.X版本需要稍做修改,下面会有详细说明。
1.配置java,maven等环境变量
java:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar:$CLASSPATH
maven:
export MVN_HOME=/home/plugin/apache-maven-3.3.9
export PATH=$MVN_HOME/bin:$PATH
2.下载cm_ext
Cloudera提供的cm_ext工具,对生成的csd和parcel进行校验
[root@cdh-001 ~]# mkdir -p /github/cloudera
[root@cdh-001 ~]# cd /github/cloudera
[root@cdh-001 cloudera]# git clone https://github.com/cloudera/cm_ext.git
[root@cdh-001 cloudera]# cd cm_ext
[root@cdh-001 cm_ext]# mvn package
如果mvn package出现如下的报错,两种解决方法:
第一种方法(推荐):
将mvn package改为执行:mvn clean package -Dmaven.test.skip=true
第二种方法:
在GitHub中下载完整的cm_ext包:https://github.com/guoliduo3/cm_ext ,上传到 /github/cloudera 目录中,然后解压,将解压文件改名为cm_ext,进入cm_ext,再执行mvn package
下载Elasticsearch安装包
[root@cdh-001 cloudera]# mkdir elasticsearch
[root@cdh-001 cloudera]# cd elasticsearch
将elasticsearch包上传到 /github/cloudera/elasticsearch 目录下,我用的elasticsearch-6.2.4版本,贴上下载地址:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
[root@cdh-001 elasticsearch]# ll
total 290568
-rw-r--r-- 1 root root 29056810 elasticsearch-6.2.4.tar.gz
[root@cdh-001 elasticsearch]# pwd
/github/cloudera/elasticsearch
[root@cdh-001 cloudera]# git clone https://github.com/ibagomel/elasticsearch-parcel.git
注意:这里是 /github/cloudera 目录
下面是CDH6.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} 修改为:"cdhVersion": {"min":6}
[root@cdh-001 cloudera]# cd elasticsearch-parcel
[root@cdh-001 elasticsearch-parcel]# POINT_VERSION=5 VALIDATOR_DIR=/github/cloudera/cm_ext OS_VER=el7 PARCEL_NAME=ElasticSearch ./build-parcel.sh /github/cloudera/elasticsearch/elasticsearch-6.2.4.tar.gz
[root@cdh-001 elasticsearch-parcel]# VALIDATOR_DIR=/github/cloudera/cm_ext CSD_NAME=ElasticSearch ./build-csd.sh
OS_VER=el7 是指 linux 使用的Centos7.X版本
值得一提的是 路径一定要正确,pwd命令确认一下路径是有必要的
制作完成之后,elasticsearch-parcel 新增了build-parcel 和 build-csd文件夹,查看:
[root@cdh-001 elasticsearch-parcel]# ll build-parcel
total 28360
drwxr-xr-x 9 root root 155 ELASTICSEARCH-0.0.5.elasticsearch.p0.5
-rw-r--r-- 1 root root 29034518 ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel
-rw-r--r-- 1 root root 482 manifest.json
[root@cdh-001 elasticsearch-parcel]# ll build-csd
total 8
-rw-r--r-- 1 root root 5426 Oct 15 ELASTICSEARCH-1.0.jar
1.将Parcel包:ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel 和 manifest.json 文件部署到httpd服务中
[root@cdh-001 ~]# mkdir -p /var/www/html/elasticsearch
[root@cdh-001 ~]# cd /var/www/html/elasticsearch
[root@cdh-001 elasticsearch]# cp /github/cloudera/elasticsearch-parcel/build-parcel/ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel ./
[root@cdh-001 elasticsearch]# cp /github/cloudera/elasticsearch-parcel/build-parcel/manifest.json ./
查看:
[root@cdh-001 elasticsearch]# ll
total 28360
-rwxrwxrwx 1 root root 29034518 ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel
-rwxrwxrwx 1 root root 482 manifest.json
[root@cdh-001 elasticsearch]# pwd
/var/www/html/elasticsearch
浏览器访问测试是否部署成功:
2.将生成的csd文件(在生成的 build-csd 文件夹下),复制到cloudera-manager-server服务所在节点的/opt/cloudera/csd目录下
[root@cdh-001 build-csd]# cp /github/cloudera/elasticsearch-parcel/build-csd/ELASTICSEARCH-1.0.jar /opt/cloudera/csd
[root@cdh-001 build-csd]# cd /opt/cloudera/csd
[root@cdh-001 csd]# ll
total 8
-rwxrwxrwx 1 root root 5426 ELASTICSEARCH-1.0.jar
3.重启cloudera-scm-server服务
[root@cdh-001 ~]# cd /opt/cm-5.15.0/etc/init.d
[root@cdh-001 init.d]# ll
total 84
-rwxr-xr-x. 1 1106 4001 8871 May 24 2018 cloudera-scm-agent
-rwxr-xr-x. 1 1106 4001 8417 May 24 2018 cloudera-scm-server
-rwxr-xr-x. 1 1106 4001 4444 May 24 2018 cloudera-scm-server-db
-rw-r--r-- 1 root root 51988 Jun 26 2019 QueryResult.java
[root@cdh-001 init.d]# ./cloudera-scm-server restart
Stopping cloudera-scm-server: [ OK ]
Starting cloudera-scm-server: [ OK ]
4.配置远程Parcel存储库
如下,是新添加的存储库的路径:
5.下载,分配,并激活 (因为我的已经添加了,所以显示为停用)
6.添加服务(因为我已经添加了,所以无法选择)
选择主机,定义ES集群名称(cluster.name),名称任意取,默认名称为data-lakes,但是集群的每台主机的集群名字需要一样,不然会被认为是另一个ES集群的主机。
第一次添加失败,产生stdout(标准输出设备)和stderr(标准错误输出设备)两种日志,查看stdout完整日志发现:
需要修改服务器配置 (每一台添加了ES服务的主机都要修改)
[root@cdh-001 ~]# vim /etc/security/limits.conf
#添加配置,*代表所有的用户都使用该配置
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
再重启Elasticsearch,启动成功。