CDH中添加Elasticsearch服務

此前Elasticsearch我一直是單獨搭建的,後來偶然發現可以在Cloudera Manager中添加ES服務,在搭建過程中這篇博客給了我很多幫助

https://www.cnblogs.com/zhangrui153169/p/11447423.html

但存在一些問題,在這裏記錄下來以作爲這篇文章的補充,也希望能幫助大家減少踩坑。

目前測試該方法適用於CDH5.X和6.X版本,對於6.X版本需要稍做修改,下面會有詳細說明。

一、製作Elasticsearch的Parcel包和csd文件

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進行校驗

  • 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
  • 下載製作Parcel包和CSD文件的腳本
[root@cdh-001 cloudera]# git clone https://github.com/ibagomel/elasticsearch-parcel.git

 注意:這裏是 /github/cloudera 目錄

對於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}
  • 製作 Elasticsearch 的Parcel包和CSD文件並校驗
[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

二、在Cloudrea Manager中安裝部署Elasticsearch服務

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,啓動成功(黃色警告是因爲服務器內存不足了)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章