個人ElasticSearch集羣部署總結--大數據搜索引擎你不得不知

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

 

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

  

〇、環境配置

服務器:3臺(node1 -> node3)html

操做系統:Cent OS 5.6,添加普通用戶angelwanghtml5

ElasticSearch版本:1.7.1node

JDK版本:1.8git

 

1、安裝JDK(全部服務器)

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

如下二至六步能夠選取某臺服務器執行。sql

 

2、安裝ElasticSearch

一、下載elasticsearch-1.7.1.tar.gz數據庫

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

 

3、安裝elasticsearch-head插件

 elasticsearch-head是一個elasticsearch的集羣管理工具,它是徹底由html5編寫的獨立網頁程序。服務器

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

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

 

二、離線安裝:

[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/

能夠看到以下圖:

 

4、安裝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語句也是很方便的吧。此工具的開發者真是體貼。

 

5、安裝elasticsearch-Bigdesk插件

bigdesk是elasticsearch的一個集羣監控工具,能夠經過它來查看es集羣的各類狀態,如:cpu、內存使用狀況,索引數據、搜索狀況,http鏈接數等。

一、聯網環境

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

在啓動ElasticSearch後,能夠經過訪問:http://node1:9200/_plugin/bigdesk/

能夠看到以下圖:

 

這個插件使得elasticsearch太直觀了,數據在哪、怎麼變更的、流動的過程都顯示的一清二楚,很酷炫,大讚!爲啥Solr沒有這樣的東東呢?

 

6、安裝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

這個插件也是實用的不要不要的。沒有此插件,有多少人還要寫一個腳原本開機啓動啊。須要的請舉手!

 

7、將配置好的ElasticSearch拷貝到各服務器

在一臺服務器上執行完成步驟二到步驟七後,獲得最終的elasticsearch-1.7.1文件夾。將此文件夾打包並scp拷貝到各服務器。

 

8、配置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"

 

9、啓動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狀態。集羣啓動結束。

 

10、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使用的較多。最近關於大數據分析我有不少的感悟啊。有關於搜索引擎的,有關於分佈式存儲的,還有關於分佈式計算的。有時間再分享給你們。歡迎你們指正!:)
 
明天就是十一長假後的第一天班啦!加油吧 王安琪!



相關文章
相關標籤/搜索