我的ElasticSearch集群部署總結--大數據搜索引擎你不得不知


摘要:世上有三類書籍:1、介紹知識,2、闡述理論,3、工具書;世間也存在兩類知識:1、技術,2、思想。 以下是我在 部署 ElasticSearch集群時的經驗總結,它們大體屬於第一類知識“ techknowledge(技術) ”。但其中也穿插一些我個人的理解。敬請指正。
 
關鍵詞:ElasticSearch, 搜索引擎, 集群, 大數據, Solr, 大數據

 

三類書籍 和 兩類知識:
 
         書:  【1】 有一些書是對某一新知識領域的介紹,將此知識領域從頭到尾、從內而外剖開了分析,吸收這些知識主要在於“記憶”,(也有“領會”)。【2】而有一些 好書,往往整本書就是在闡述一句或幾句話,一個或數個思想,這些就是這本書最重要的部分,主要在於“領會”。【3】還有一些書可能就像是工具,例如字典,遇到問題去查就好,主要在“查找”。也有各種類型摻雜的書。這幾類書各有其方向、着重點,閱讀時方法也不盡相同。
 
    知識:      【1】 對於各種林林總總的技術,無論是它的安裝步驟、使用說明還是其疑難雜症,電子書、在網絡中的文章及FAQ中總是會有解決辦法;或者技術它存有尚未解決的問題、待修復的BUG,也大部分能在網上找到答案,(不能找到的就等你來發明和創造了,諾貝爾獎就靠你咯!)。上面這些都屬於“techknowledge(技術)”的范疇,就像第一類或第三類書,主要在於“記憶”或“查找”。【2】可是,還有一些思想上的、認知上的東西,網上是很難獲取的,也很不容易表達清楚,它們應該歸類於“Thinking(思想)”,像是第二類書籍,重點在於“領會”。在分享“techknowledge(技術)”的同時,我更希望把這些“Thinking(思想)”分享出來。
 
          以下是我在 部署 ElasticSearch集群時的經驗總結,它們大體屬於第一類知識“ techknowledge(技術) ”。但其中也穿插一些我個人的理解。敬請指正。
 

  

〇、環境配置

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

操作系統:Cent OS 5.6,添加普通用戶angelwang

ElasticSearch版本:1.7.1

JDK版本:1.8

 

一、安裝JDK(所有服務器)

在每台服務器(node1 -> node3)上安裝JDK,安裝過程略。

以下二至六步可以選取某台服務器執行。

 

二、安裝ElasticSearch

1、下載elasticsearch-1.7.1.tar.gz

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

 

三、安裝elasticsearch-head插件

 elasticsearch-head是一個elasticsearch的集群管理工具,它是完全由html5編寫的獨立網頁程序。

1、聯網環境,執行下面語句進行安裝:

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

 

2、離線安裝:

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

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

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

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

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

 

在執行:[angelwang@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.

執行下面語句進行安裝:

[angelwang@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、聯網環境

[angelwang@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中的內容進行修改:

[angelwang@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_angelwang

  

#################################### 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/angelwang/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穩定后

 

 

可以通過上面的操作和形象的圖形,看到宕機一個對這個集群真是一點關系都沒有,數據在各服務器間自如流動、分布,各服務器並無主次之分,因此ES的可用性真的是很好!

 

Solr我也用過很久,我個人感覺,ElasticSearch比Solr好就好在有那么多好用的插件可以用,即有形象直觀的顯示,又有方便實用的工具,真是感謝這些開源貢獻者們,沒有你們就沒有這么一個好用的搜索引擎ElasticSearch了,很多的公司業務也便無法開展了!當然ElasticSearch目前也有不少亟需解決的問題,以后有空再聊。

 
之前Hbase和Solr使用的較多。最近關於大數據分析我有很多的感悟啊。有關於搜索引擎的,有關於分布式存儲的,還有關於分布式計算的。有時間再分享給大家。歡迎大家指正!:)
 
明天就是十一長假后的第一天班啦!加油吧 王安琪!




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM