一、Elasticsearch部署
版本介绍:
CDH6.2.1
CentOS7.5
ElasticSearch7.6.2
Kibana7.6.2
elasticsearch-analysis-ik7.6.2
CDH中没有官方提供的Elasticsearch的parcel包,但是问题不大,CDH提供了一个编译工具可以自行打parcel包。对于其他的分布式工具大部分都可以通过这种方式进行CDH安装,由CDH进行统一的分配、配置管理。
目前该方法适用于CDH5.X和6.X版本,对于6.X版本需要稍做修改,下面会有详细说明。
1.1 制作Elasticsearch的Parcel包和csd文件
1.1.1安装java、git、maven等,配置环境变量
这里java由于之前已经安装过,不做说明,具体可查linux安装java或之前CDH部署文档中有提到,git与maven的环境变量由于这里我们采用的是yum安装,不需要配置环境变量。
Git:
[root@cdh01 ~]#yum -y install git
检查git版本及是否安装成功(这里git版本不低于1.7):
[root@cdh01 ~]#git version
Maven:
[root@cdh01 ~]yum -y install maven
检查maven版本,这里我们用的是3.0.5,网上有用3.3系列,都可以
[root@cdh01 ~]# mvn -version
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_212, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_212/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
1.1.2下载cm_ext
Cloudera提供的cm_ext工具,对生成的csd和parcel进行校验
[root@cdh01 ~]# mkdir -p /root/github/cloudera
[root@cdh01 ~]# cd /root/github/cloudera/
[root@cdh01 cloudera]# git clone git://github.com/cloudera/cm_ext.git
[root@cdh01 cloudera]# cd cm_ext/
[root@cdh01 cm_ext]# mvn clean package -Dmaven.test.skip=true
如果这里执行不行,就执行mvn package -Dmaven.test.skip=true
1.1.3 下载Elasticsearch安装包
[root@cdh01 cloudera]# mkdir elasticsearch
[root@cdh01 cloudera]# cd elasticsearch/
将elasticsearch包上传到/root/github/cloudera/elasticsearch
目录下,我用的elasticsearch-7.6.2版本,贴上下载地址
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
可以采用wget命令直接下载,也可以下载到本地后上传到linux的/root/github/cloudera/elasticsearch
目录下
1.1.4 下载制作Parcel包和CSD文件的脚本
[root@cdh01 elasticsearch]# git clone https://github.com/zhangrui153169/elasticsearch-parcel.git
注:这里如果执行失败,可以将https换成http或者git试试,如果再不行直接去官网下载
注意:1.1.3和1.1.4这里是/root/github/cloudera
目录
下面是CDH6.X版本需要修改之处:
对于CDH6.X版本需要进行两处修改:
将elasticsearch-parcel文件夹下的 /parcel-src/meta/parcel.json文件 中 "depends": "CDH (>= 5.0), CDH (<< 6.0)" 修改为 "depends": "CDH (>= 5.0), CDH (<< 10.0)"
将elasticsearch-parcel文件夹下的 /csd-src/descriptor/service.sd1 文件中 "cdhVersion": {"min":5} 修改为:"cdhVersion": {"min":6}
1.1.5 制作Elasticsearch的Parcel包和CSD文件并校验
[root@cdh01 elasticsearch]# cd elasticsearch-parcel/
这里最好不要复制,参考自己的文件tar包名称版本及路径,/root/github/cloudera/cm_ext
一定要是自己的路径:
[root@cdh01 elasticsearch-parcel]# POINT_VERSION=5 VALIDATOR_DIR=/root/github/cloudera/cm_ext OS_VER=el7 PARCEL_NAME=ElasticSearch ./build-parcel.sh /root/github/cloudera/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
[root@cdh01 elasticsearch-parcel]# VALIDATOR_DIR=/root/github/cloudera/cm_ext CSD_NAME=ElasticSearch ./build-csd.sh
OS_VER=el7
是指 linux 使用的Centos7.X版本
制作完成后,elasticsearch-parcel
新增了build-parcel
和build-csd
文件夹,查看:
1.2在Cloudera Manager中安装部署Elasticsearch服务
1.2.1将Parcel包:ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel
和 manifest.json
文件部署到httpd服务中
[root@cdh01 ~]# mkdir -p /var/www/html/elasticsearch
[root@cdh01 ~]# cd /var/www/html/elasticsearch/
[root@cdh01 elasticsearch]# cp /root/github/cloudera/elasticsearch/elasticsearch-parcel/build-parcel/ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel ./
[root@cdh01 elasticsearch]# cp /root/github/cloudera/elasticsearch/elasticsearch-parcel/build-parcel/manifest.json ./
[root@cdh01 elasticsearch]# ll
总用量 289848
-rwxr-xr-x. 1 root root 296798031 4月 25 16:45 ELASTICSEARCH-0.0.5.elasticsearch.p0.5-el7.parcel
-rwxr-xr-x. 1 root root 483 4月 25 16:45 manifest.json
[root@cdh01 elasticsearch]# pwd
/var/www/html/elasticsearch
[root@cdh01 elasticsearch]# python -m SimpleHTTPServer 8911
浏览器访问测试是否部署成功:
1.2.2 将生成的csd文件(在生成的 build-csd
文件夹下),复制到cloudera-manager-server
服务所在节点的/opt/cloudera/csd
目录下
[root@cdh01 elasticsearch]# cp /root/github/cloudera/elasticsearch/elasticsearch-parcel/build-csd/ELASTICSEARCH-1.0.jar /opt/cloudera/csd/
[root@cdh01 elasticsearch]# cd /opt/cloudera/csd/
[root@cdh01 csd]# ll
总用量 8
-rwxrwxrwx. 1 cloudera-scm cloudera-scm 5423 4月 25 16:42 ELASTICSEARCH-1.0.jar
这里注意jar包文件 权限,最好给足777
1.2.3 重启cloudera-scm-server
服务
[root@cdh01 csd]# systemctl restart cloudera-scm-server
**注意:**这里最好不要在web端重启,直接在linux端重启,可能会出现后续添加服务时找不到ES服务,如果后续出现这种情况,再执行此命令也可
1.2.4 配置远程Parcel存储库
点击主机->Parcel:
点击配置:
添加远程Parcel库URL:
1.2.5 下载,分配,并激活(这里已经添加)
1.2.6 添加服务(已经添加)
选择主机,定义ES集群名称(cluster.name),名称任意取,默认名称为data-lakes
,但是集群的每台主机的集群名字需要一样,不然会被认为是另一个ES集群的主机。
1.2.7 问题记录
问题一,第一次添加失败,产生stdout(标准输出设备)和stderr(标准错误输出设备)两种日志,
could not find java in JAVA_HOME or bundled at /usr/java/latest/bin/java
解决办法一:
[root@cdh01 csd]# cd /root/github/cloudera/elasticsearch/elasticsearch-parcel/csd-src/scripts/
[root@cdh01 scripts]# vim control.sh
注释掉JAVA_HOME设置:
locateJava() {
echo
#export JAVA_HOME=/usr/java/latest
echo "Changing Java Home to: $JAVA_HOME"
export JAVA="$JAVA_HOME/bin/java"
echo "Changing Java to: $JAVA"
echo
}
解决办法二:
执行:建立JAVA_HOME的软连接:
ln -s /usr/java/jdk1.8.0_11/ /usr/java/latest
问题二:
https://blog.csdn.net/weixin_43215250/article/details/89847075?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242
上述博客最后,有问题详情。
解决办法:
在cdh集群各个节点
均执行:
chmod 777 /opt/cloudera/parcels/ELASTICSEARCH/config/
1.2.8 配置master
可以通过为cluster.initial_master_nodes
参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群。
1.2.9 对接hive
2.unzip解压
[root@cdh01 software]# unzip elasticsearch-hadoop-7.6.2.zip
3.上传hdfs
#创建对应目录,逐级创建或者使用-R
[root@cdh01 software]# hdfs dfs -mkdir /user/test/es_hadoop/
#进入到jar包所在路径下
[root@cdh01 software]# cd elasticsearch-hadoop-7.6.2
[root@cdh01 elasticsearch-hadoop-7.6.2]# cd dist/
#上传jar包
[root@cdh01 dist]# hdfs dfs -put elasticsearch-hadoop-hive-7.6.2.jar /user/test/es_hadoop/
[root@cdh01 dist]# hdfs dfs -put elasticsearch-hadoop-7.6.2.jar /user/test/es_hadoop/
4.配置hive对应jar包路径
将之前的两个jar包放入此路径:
5.CM界面重启hive与es
二、Kibana
2.1 下载
下载路径:
https://www.elastic.co/cn/downloads/past-releases/kibana-7-6-2
下载好了后上传到linux,解压后配置相关配置文件即可:
2.2配置启动
[root@cdh01 software]# tar -zxvf kibana-7.6.2-linux-x86_64.tar.gz -C /opt/module/
[root@cdh01 ~]# cd /opt/module/kibana-7.6.2-linux-x86_64/
[root@cdh01 kibana-7.6.2-linux-x86_64]# vim config/kibana.yml
#修改三个位置的属性值:
server.port: 5601
server.host: "192.168.99.46"
elasticsearch.hosts: ["http://localhost:9200"]
#配置好后启动kibana:
[root@cdh01 kibana-7.6.2-linux-x86_64]# bin/kibana --allow-root
#如果启动kibana过程中报错超时,检查1.2.8步骤是否配置正确;
登陆查看:
三、ik分词器
3.1 部署ik分词器
下载的ik分词器版本对应elasticsearch版本,故下载7.6.2版本,下载地址为:
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2
1.将此文件解压后放入下面的文件夹中(anaylysis-ik 由自己创建):
/opt/cloudera/parcels/ELASTICSEARCH-0.0.5.elasticsearch.p0.5/plugins/analysis-ik/
2.将此目录分发至es集群的其他机器上的对应路径;
3.重启es集群即可;
3.2 简单测试
- 启动kibana
[root@cdh01 plugins]# cd /opt/module/kibana-7.6.2-linux-x86_64/
[root@cdh01 kibana-7.6.2-linux-x86_64]# bin/kibana --allow-root
2.执行语句
#==>1
PUT ik2_index
{
"settings": {
"number_of_shards": 20,
"number_of_replicas": 1
},
"mappings": {
"dynamic":"false",
"properties": {
"name": {
"type": "text",
"index": true,
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
"desc": {
"type": "text",
"index": true,
"analyzer": "ik_smart",
"search_analyzer": "ik_max_word"
},
"desc2":{
"type": "text",
"index": true,
"analyzer": "standard",
"search_analyzer": "standard"
}
}
}
}
#==>2
GET ik2_index/_mapping
#==>3
POST /ik2_index/_doc/1
{
"name":"进口红酒",
"desc":"乒乓球拍卖完了",
"desc2":"进口红酒啊"
}
#==>4
GET /ik2_index/_search
{
"query": {"match": {
"name": "进口"
}}
}
可以看出分词效果!
相关错误参考:
https://blog.csdn.net/andwey/article/details/107150087