我的ElasticSearch集群部署总结--大数据搜索引擎你不得不知 - 王安琪

标签: elasticsearch 集群 总结 | 发表时间:2015-10-07 14:26 | 作者:王安琪
分享到:
出处:
摘要:世上有三类书籍:1、介绍知识,2、阐述理论,3、工具书;世间也存在两类知识:1、技术,2、思想。以下是我在部署ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknowledge(技术)”。但其中也穿插一些我个人的理解。敬请指正。
 
关键词:ElasticSearch, 搜索引擎, 集群, 大数据, Solr, 大数据

 

三类书籍 和 两类知识:
 
        有一些书是对某一新知识领域的介绍,将此知识领域从头到尾、从内而外剖开了分析,吸收这些知识主要在于“记忆”,(也有“领会”)。而有一些好书,往往整本书就是在阐述一句或几句话,一个或数个思想,这些就是这本书最重要的部分,主要在于“领会”。还有一些书可能就像是工具,例如字典,遇到问题去查就好,主要在“查找”。也有各种类型掺杂的书。这几类书各有其方向、着重点,阅读时方法也不尽相同。
 
        对于各种林林总总的技术,无论是它的安装步骤、使用说明还是其疑难杂症,电子书、在网络中的文章及FAQ中总是会有解决办法;或者技术它存有尚未解决的问题、待修复的BUG,也大部分能在网上找到答案,(不能找到的就等你来发明和创造了,诺贝尔奖就靠你咯!)。上面这些都属于“techknowledge(技术)”的范畴,就像第一类或第三类书,主要在于“记忆”或“查找”。可是,还有一些思想上的、认知上的东西,网上是很难获取的,也很不容易表达清楚,它们应该归类于“Thinking(思想)”,像是第二类书籍,重点在于“领会”。在分享“techknowledge(技术)”的同时,我更希望把这些“Thinking(思想)”分享出来。
 
        以下是我在部署ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknowledge(技术)”。但其中也穿插一些我个人的理解。敬请指正。
 

  

〇、环境配置

服务器:3台(node1 -> node3)

操作系统:Cent OS 5.6,添加普通用户deploy

ElasticSearch版本:1.7.1

JDK版本:1.8

 

一、安装JDK(所有服务器)

在每台服务器(node1 -> node3)上安装JDK,安装过程略。

以下二至六步可以选取某台服务器执行。

 

二、安装ElasticSearch

1、下载elasticsearch-1.7.1.tar.gz

2、解压:[deploy@node1 ~]$ tar -xf elasticsearch-1.4.2.tar.gz

 

三、安装elasticsearch-head插件

 elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序。

1、联网环境,执行下面语句进行安装:

[deploy@node1 ~]$ ./elasticsearch-1.7.1/bin/plugin -install mobz/elasticsearch-head

 

2、离线安装:

[deploy@node190 ~]$ unzip elasticsearch-head-master.zip

[deploy@node1 ~]$ mkdir ./elasticsearch-1.7.1/plugins

[deploy@node1 ~]$ mkdir ./elasticsearch-1.7.1/plugins/head

[deploy@node1 ~]$ mkdir ./elasticsearch-1.7.1/plugins/head/_site

[deploy@node1 ~]$ cp -r ~/elasticsearch-head-master/* ./elasticsearch-1.7.1/plugins/head/_site

 

在执行:[deploy@node190 ~]$ ./elasticsearch-1.7.1/bin/elasticsearch

启动ElasticSearch后,可以通过访问: http://node1:9200/_plugin/head/

可以看到如下图:

 

四、安装elasticsearch-sql插件

elasticsearch-sql插件可以做到:Query elasticsearch using familiar SQL syntax. You can also use ES functions in SQL.

执行下面语句进行安装:

[deploy@node1 ~]$ ./bin/plugin -u https://github.com/NLPchina/elasticsearch-sql/releases/download/1.3.5/elasticsearch-sql-1.3.5.zip --install sql

在启动ElasticSearch后,可以通过访问: http://localhost:9200/_plugin/sql/

可以看到如下图:

看到这个界面你也能想像到它是做什么的了吧?更多的信息可以去  https://github.com/NLPchina/elasticsearch-sql 获取,当然不能通过elasticsearch-sql把elasticsearch当关系型数据库用,但毕竟elasticsearch的查询语句不如solr那般简洁,所以对于熟悉sql的朋友,这样拼sql语句也是很方便的吧。此工具的开发者真是体贴。

 

五、安装elasticsearch-Bigdesk插件

bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。

1、联网环境

[deploy@node1 ~]$ ./bin/plugin -install lukas-vlcek/bigdesk

在启动ElasticSearch后,可以通过访问: http://node1:9200/_plugin/bigdesk/

可以看到如下图:

 

这个插件使得elasticsearch太直观了,数据在哪、怎么变动的都显示的一清二楚,大赞!为啥Solr没有这样的东东呢?

 

六、安装elasticsearch-servicewrapper插件

elasticsearch-servicewrapper插件是ElasticSearch的服务化插件。

在https://github.com/elasticsearch/elasticsearch-servicewrapper下载该插件后,解压缩。将service目录拷贝到elasticsearch目录的bin目录下。

而后,可以通过执行以下语句安装、启动、停止ElasticSearch。(先不要执行)

[root@node1 service]# sh elasticsearch install(Must be root to perform this action.)

[root@node1 service]# sh elasticsearch start

[root@node1 service]# sh elasticsearch stop

这个插件也是实用的不要不要的。没有此插件,有多少人还要写一个脚本来开机启动啊。需要的请举手!

 

七、将配置好的ElasticSearch拷贝到各服务器

在一台服务器上执行完成步骤二到步骤七后,得到最终的elasticsearch-1.7.1文件夹。将此文件夹打包并scp拷贝到各服务器。

 

八、配置ElasticSearch集群

在各服务器(node1 -> node3)中。

执行下面语句对配置文件elasticsearch.yml中的内容进行修改:

[deploy@node1 ~]$ vim elasticsearch-1.7.1/config/elasticsearch.yml

修改elasticsearch.yml后的部分文件内容:

################################### Cluster ###################################

 

# Cluster name identifies your cluster for auto-discovery. If you're running

# multiple clusters on the same network, make sure you're using unique names.

#

cluster.name: elasticsearch_deploy

  

#################################### Node #####################################

 

# Node names are generated dynamically on startup, so you're relieved

# from configuring them manually. You can tie this node to a specific name:

#

node.name: "node196"

 

九、启动ElasticSearch集群

可以通过执行sh elasticsearch start或./elasticsearch语句启动ElasticSearch。

也可以在通过执行[root@node1 service]# sh elasticsearch install后,通过执行:[root@node1 service]# chmod 777  /home/deploy/elasticsearch-1.7.1/bin/service/elasticsearch,分配给elasticsearch执行权限。执行[root@node1 service]# /etc/init.d/elasticsearch start启动ElasticSearch服务。而后就可以执行[root@node1 service]# service elasticsearch start来启动ElasticSearch了。系统reboot后也能开机启动。

在所有服务器(node1 -> node3)上的ElasticSearch配置相同的cluster.name后,依次启动各服务器上的ElasticSearch,便可以通过bigdesk查看该集群下的所有node状态。集群启动结束。

 

十、ElasticSearch集群功能测试

可以在head页面新建索引、删除索引、数据浏览、查询等操作,新建索引时需要设置分片数、副本数,可以在bigdesk页面进行分片及副本的查看。

数据均存储于elasticsearch-1.7.1/data目录下,以cluster.name进行分目录存储。下图说明了两个cluster.name的存储方式。

 

 

我们对已启动的(node1 -> node3)上的ElasticSearch进行监控。下面图1 -> 图4是当集群中一个node重启时,集群内数据复制移动的过程。索引的分片数为5,副本数为1。

            

 

图1: 三个node稳定后                                                         图2: 关闭一个node196

 

  

         

 

图3: 两个node稳定后                                              图4: 启动node196,恢复三个node稳定后

 

 

可以通过上面的操作和形象的图形,看到宕机一个对这个集群真是一点关系都没有,数据在各服务器间自如流动、分布,各服务器并无主次之分。

 

Solr我也用过很久,我个人感觉,ElasticSearch比Solr好就好在有那么多好用的插件可以用,即有形象直观的显示,又有方便实用的工具,真是感谢这些开源贡献者们,没有你们就没有这么一个好用的搜索引擎ElasticSearch了,很多的公司业务也便无法开展了!当然ElasticSearch目前也有不少亟需解决的问题,以后有空再聊。

 
最近关于大数据分析我有很多的感悟啊。有关于搜索引擎的,有关于分布式存储的,还有关于分布式任务的。有时间再分享给大家。欢迎大家指正!:)
 
明天就是十一长假后的第一天班啦!加油吧 王安琪!




本文链接: 我的ElasticSearch集群部署总结--大数据搜索引擎你不得不知,转载请注明。

相关 [elasticsearch 集群 总结] 推荐:

elasticsearch集群搭建

- - zzm
之前对于CDN的日志处理模型是从 . 下面先是介绍几个关于elasticsearch的几个名词 . 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的. es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的.

Elasticsearch集群入门

- - 编程语言 - ITeye博客
欢迎来到Elasticsearch的奇妙世界,它是优秀的全文检索和分析引擎. 不管你对Elasticsearch和全文检索有没有经验,都不要紧. 我们希望你可以通过这本书,学习并扩展Elasticsearch的知识. 由于这本书也是为初学者准备的,我们决定先简单介绍一般性的全文检索概念,接着再简要概述Elasticsearch.

elasticsearch 1.x集群优化

- - ITeye博客
欢迎发送邮件至 donlianli@126.com. 本博文为 Elasticsearch Server2nd的部分第7章部分章节的翻译,版权归原作者. 设置Filter cache. 缓存是提高性能的很重要的手段,es中的filter cache能够把搜索时的filter条件的结果进行缓存,当进行相同的filter搜索时(query不同,filter条件相同),es能够很快的返回结果.

我的ElasticSearch集群部署总结--大数据搜索引擎你不得不知 - 王安琪

- - 博客园_首页
摘要:世上有三类书籍:1、介绍知识,2、阐述理论,3、工具书;世间也存在两类知识:1、技术,2、思想. 以下是我在部署ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknowledge(技术)”. 关键词:ElasticSearch, 搜索引擎, 集群, 大数据, Solr, 大数据.

elasticsearch集群监控工具bigdesk

- - zzm
bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等. 项目git地址:  https://github.com/lukas-vlcek/bigdesk. 和head一样,它也是个独立的网页程序,使用方式和head一样.

Elasticsearch集群的脑裂问题

- - 互联网 - ITeye博客
所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解. 今天,Elasticsearch集群出现了查询极端缓慢的情况,通过以下命令查看集群状态:. 发现,集群的总体状态是red,本来9个节点的集群,在结果中只显示了4个;但是,将请求发向不同的节点之后,我却发现即使是总体状态是red的,但是可用的节点数量却不一致.

实例展示elasticsearch集群生态,分片以及水平扩展. - 苏若年

- - 博客园_首页
  elasticsearch用于构建高可用和可扩展的系统. 扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器(横向扩展),Elasticsearch能从更强大的硬件中获得更好的性能,但是纵向扩展也有一定的局限性. 真正的扩展应该是横向的,它通过增加节点来传播负载和增加可靠性. 对于大多数数据库而言,横向扩展意味着你的程序将做非常大的改动来利用这些新添加的设备.

配置高性能 ElasticSearch 搜索引擎集群的9个小贴士

- - ITeye资讯频道
Loggly服务底层的很多核心功能都使用了ElasticSearch作为搜索引擎. 就像Jon Gifford(译者注:Loggly博客作者之一)在他近期关于“ElasticSearch vs Solr”的文章中所述,日志管理在搜索技术方面产生一些粗暴的需求,坚持下来以后,它必须能够:. 在超大规模数据集上可靠地进行准实时索引 – 在我们的案例中,每秒有超过100,000个日志事件与此同时,在该索引上可靠高效地处理超大量的搜索请求.

[译]elasticsearch mapping

- - an74520的专栏
es的mapping设置很关键,mapping设置不到位可能导致索引重建. 请看下面各个类型介绍^_^. 每一个JSON字段可以被映射到一个特定的核心类型. JSON本身已经为我们提供了一些输入,支持 string,  integer/ long,  float/ double,  boolean, and  null..

Elasticsearch as Database - taowen - SegmentFault

- -
【北京上地】滴滴出行基础平台部招聘 Elasticsearch 与 Mysql binlog databus 开发工程师. 内推简历投递给: taowen@didichuxing.com. 推销Elasticsearch. 时间序列数据库的秘密(1)—— 介绍. 时间序列数据库的秘密(2)——索引.