Elasticsearch集群搭建、hive集成以及head插件安装(亲测)

1.Elasticsearch基本概念

1Cluster代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

2shards代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

3replicas代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

4recovery代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

5river代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。

6gateway代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

7discovery.zen代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

8Transport代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插方式)

2.部署Elasticsearch集群

2.1.安装JDK

Elasticsearch是基于Java开发是一个Java程序,运行在Jvm中,所以第一步要安装JDK

yum install -y java-1.8.0-openjdk-devel

2.2.下载elasticsearch

https://artifacts.elastic.co/downloads/elasticsearch/ 是ELasticsearch的官方站点,如果需要下载最新的版本,进入官网下载即可。也可以直接在命令行中下载

如果环境中没有wget可以用:

yum -y install wget

然后直接使用下面命令:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.rpm

该文件在/root/目录下(对于集群环境最好每个节点都放elasticsearch的安装包):

2.3 命令行安装

cd /root/

rpm -i elasticsearch-6.4.2.rpm   会出现下面界面:

根据上图的安装提示:依次执行下面三条命令

sudo systemctl daemon-reload     

sudo systemctl enable elasticsearch.service

启动elasticsearch 服务

sudo systemctl start elasticsearch.service

查看服务状态会出现下面报错:

配置java路径(根据自己的集群查找,可以使用vim /etc/profile 查看java的安装路径):

vim /etc/sysconfig/elasticsearch

集群环境的配置:

cd /etc/elasticsearch/

vim elasticsearch.yml

192.168.5.184:配置:

cluster.name: gouuse-application

node.name: node-184

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 0.0.0.0

discovery.zen.ping.unicast.hosts: ["192.168.5.184","192.168.5.185","192.168.5.186","192.168.5.187","192.168.5.188"]

http.cors.enabled: true

http.cors.allow-origin: "*"

同理192.168.5.185-192.168.5.188的配置和只需要修改node.name 其它保持不变。

systemctl restart elasticsearch.service(每个节点都要启动)

systemctl status  elasticsearch.service

在谷歌服务器输入:192.168.5.184:9200,出现以下界面则配置成功(其它节点同理):

查看集群状态:

curl -XGET 'http://192.168.5.184:9200/_cluster/health?pretty'

{

  "cluster_name" : "gouuse-application",   //集群的名称

  "status" : "green",     //集群的状态红绿,绿:健康,黄:亚健康,红:病态

  "timed_out" : false,

  "number_of_nodes" : 5,  //节点数

  "number_of_data_nodes" : 5,     //数据节点数

  "active_primary_shards" : 13,   //分片数

  "active_shards" : 26,

  "relocating_shards" : 0,

  "initializing_shards" : 0,

  "unassigned_shards" : 0,

  "delayed_unassigned_shards" : 0,

  "number_of_pending_tasks" : 0,

  "number_of_in_flight_fetch" : 0,

  "task_max_waiting_in_queue_millis" : 0,

  "active_shards_percent_as_number" : 100.0

}

集群状态为green,说明集群状态良好.

3.Elasticsearch 与hive的集成

3.1环境搭建

http://jcenter.bintray.com/org/elasticsearch/elasticsearch-hadoop/ 下载elasticsearch-hadoop 对应的jar包,注意elasticsearch是什么版本就下载对应的版本的elasticsearch-hadoop(此安装elasticsearch 版本为6.4.2版本,因此下载elasticsearch-hadoop-6.4.2.jar),将下载的jar包传到Lunix系统上(位置自行确定)(user/gouuse/jars/elasticsearch-hadoop-6.4.2.jar)。

3.2数据插入(简单的举例)

(1)建立view 表

首先要加载elasticsearch-hadoop6.4.2.jar,在hive-shell里面执行

add jar hdfs:///user/gouuse/jars/elasticsearch-hadoop-6.4.2.jar;  

CREATE EXTERNAL TABLE user  

(id INT, name STRING)

STORED BY

'org.elasticsearch.hadoop.hive.EsStorageHandler'

TBLPROPERTIES

('es.resource' = 'radiott/artiststt',  //表示索引/类型,可以理解为关系型数据库的 数据库/表

'es.index.auto.create' = 'true',         

'es.nodes' = 'elastisticsearch.*.qunar.com',//配置es的url地址,可以设置多个

'es.port' = '9200');  //端口号

(2)建立数据表

CREATE TABLE user_source  

(id INT,

name STRING)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

(3)加载基础数据

数据示例,我放在/tmp/user_source.log

1,medcl

2,lcdem  

3,tom  

4,jack

加载数据到user_sourceb表中

LOAD DATA LOCAL INPATH '/tmp/user_source.log' OVERWRITE INTO TABLE user_source;

(4)加载到es

INSERT OVERWRITE TABLE user  SELECT s.id, s.name FROM user_source s;

4.ES6.0版本安装head插件(windows 环境下安装)

安装教程转自:https://www.cnblogs.com/tanshaoxiaoji/p/elasticsearch_head_install.html

下载地址:https://github.com/mobz/elasticsearch-head;点击clone or download按钮,点击download zip进行下载。下载完毕后解压到任意路径上,别放在elasticsearch安装路径上。

4.1安装node.js

这个比较容易,下载后除路径自己填写外,其他直接next就OK了。下载地址https://nodejs.org/en/download/ 安装在具体的目录下:

3.2 安装grunt

运行head需要借助grunt命令,因此需要安装grunt,Windows+R,输入cmd,输入命令 cd D:\nodejs(安装nodejs的路径) 进入nodejs的根目录下,(注意:如果这条命令不能成功执行,那就先执行 D:,成功切换目录后再执行 cd  D:\nodejs(安装nodejs的路径)。),然后执行指令 npm  install -g grunt  -cli 进行安装grunt。

3.3 安装pathomjs

 输入命令 cd D:\head(你安装head的路径) 进入head的根目录下,然后执行命令:npm install 进行安装pathomjs(安装时间较长,可以吃几把鸡先,你应该吃不到...)。如果出现Error关键字,则有可能是网络不顺畅,下载失败,那就继续下一段文字。如果成功(我用公司网络试了三次都不行,祝你好运!),则跳过下一段文字。

安装失败,看上面的图片,安装失败时他会显示下载路径存放路径。请你耐心点,你需要做的是,将相关信息复制下来,手动下载压缩包并放置在存放路径下,命令窗口再次执行安装命令npm install ,他们会去存放路径下检索文件并解压安装,只要提示文字没出现Error,则安装成功。(如果复制不到,可以这样试试,鼠标右键点击全选,然后在目标文本附近点击一下,然后拖动鼠标选上文本,按Ctrl+C,不要怀疑自己,试试在txt文本按Ctrl+V试试,是不是复制下来了?

3.4 运行head

最后,什么都别关,还没结束呢,在刚刚的命令窗口执行运行命令grunt server,启动head服务,如下所示则为启动成功。(可以到head根目录下修改Gruntfile.js文件的启动端口,默认是9100)

然后去修改elasticsearch的配置文件,elasticsearch安装目录etc/elasticsearch/elasticsearch.yml(根据自己的位置),打开文件后在末端另起一行分别顶格添加如下两行红色字体文本(之前配置集群时已经添加了该命令),保存后重启elasticsearch.

http.cors.enabled: true

http.cors.allow-origin: "*"

3.5 用head访问elasticsearch

 浏览器访问 http://localhost:9100(head的服务端口),访问成功后,出现如下界面:

刚才表的信息就可以查看:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个基于Lucene的搜索服务器,提供分布式多用户能力的全文搜索引擎,支持RESTful接口,我们可以使用它来进行数据的存储、检索和分析等操作。下面是ElasticSearch2.4.6的安装部署以及集群部署ElasticSearch-head插件安装。 ## 安装部署 ### 1. 下载ElasticSearch2.4.6 从官网下载ElasticSearch2.4.6:https://www.elastic.co/downloads/past-releases/elasticsearch-2-4-6 ### 2. 解压缩 将下载好的文件解压缩到指定目录: ``` tar -xzvf elasticsearch-2.4.6.tar.gz -C /usr/local/ ``` ### 3. 修改配置文件 修改`/usr/local/elasticsearch-2.4.6/config/elasticsearch.yml`文件,主要修改以下几项: ``` cluster.name: my-elasticsearch-cluster node.name: my-elasticsearch-node-1 network.host: 0.0.0.0 http.port: 9200 ``` 其中`cluster.name`表示集群名称,`node.name`表示节点名称,`network.host`表示绑定的IP地址,`http.port`表示http监听端口。 ### 4. 启动ElasticSearch 运行以下命令启动Elasticsearch: ``` cd /usr/local/elasticsearch-2.4.6/bin/ ./elasticsearch ``` ### 5. 验证安装 使用浏览器访问`http://localhost:9200/`,如果返回以下信息则表示安装成功: ``` { "name" : "my-elasticsearch-node-1", "cluster_name" : "my-elasticsearch-cluster", "version" : { "number" : "2.4.6", "build_hash" : "5376dca9f70f3abef96a77f4bb22720ace8240fd", "build_timestamp" : "2017-07-18T12:17:44Z", "build_snapshot" : false, "lucene_version" : "5.5.4" }, "tagline" : "You Know, for Search" } ``` ## 集群部署 ### 1. 修改配置文件 在每个节点的`/usr/local/elasticsearch-2.4.6/config/elasticsearch.yml`文件中添加以下内容: ``` cluster.name: my-elasticsearch-cluster node.name: my-elasticsearch-node-1 network.host: 0.0.0.0 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.1.101", "192.168.1.102", "192.168.1.103"] ``` 其中`discovery.zen.ping.unicast.hosts`表示集群中所有节点的IP地址列表。 ### 2. 启动节点 分别在每个节点上启动Elasticsearch: ``` cd /usr/local/elasticsearch-2.4.6/bin/ ./elasticsearch ``` ### 3. 验证集群 使用浏览器访问`http://localhost:9200/_cat/nodes?v`,如果返回以下信息则表示集群启动成功: ``` ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 192.168.1.101 34 98 3 0.00 0.01 0.05 mdi * my-elasticsearch-node-1 192.168.1.102 36 99 0 0.00 0.01 0.05 mdi - my-elasticsearch-node-2 192.168.1.103 31 98 2 0.00 0.01 0.05 mdi - my-elasticsearch-node-3 ``` ## ElasticSearch-head插件安装 ### 1. 安装Node.js和npm ElasticSearch-head是一个基于浏览器的Elasticsearch集群管理工具,需要安装Node.js和npm才能使用。使用以下命令安装Node.js和npm: ``` sudo apt-get update sudo apt-get install nodejs npm ``` ### 2. 安装ElasticSearch-head 使用以下命令安装ElasticSearch-head: ``` sudo npm install -g grunt-cli git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install ``` ### 3. 启动ElasticSearch-head 使用以下命令启动ElasticSearch-head: ``` grunt server & ``` 打开浏览器,访问`http://localhost:9100/`,即可打开ElasticSearch-head界面。 至此,ElasticSearch2.4.6的安装部署以及集群部署ElasticSearch-head插件安装完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值