標籤:
摘要:世上有三類書籍: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、解壓:[[email protected] ~]$ tar -xf elasticsearch-1.4.2.tar.gz
三、安裝elasticsearch-head外掛程式
elasticsearch-head是一個elasticsearch的叢集管理工具,它是完全由html5編寫的獨立網頁程式。
1、連網環境,執行下面語句進行安裝:
[[email protected] ~]$ ./elasticsearch-1.7.1/bin/plugin -install mobz/elasticsearch-head
2、離線安裝:
[[email protected] ~]$ unzip elasticsearch-head-master.zip
[[email protected] ~]$ mkdir ./elasticsearch-1.7.1/plugins
[[email protected] ~]$ mkdir ./elasticsearch-1.7.1/plugins/head
[[email protected] ~]$ mkdir ./elasticsearch-1.7.1/plugins/head/_site
[[email protected] ~]$ cp -r ~/elasticsearch-head-master/* ./elasticsearch-1.7.1/plugins/head/_site
在執行:[[email protected] ~]$ ./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.
執行下面語句進行安裝:
[[email protected] ~]$ ./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、連網環境
[[email protected] ~]$ ./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。(先不要執行)
[[email protected] service]# sh elasticsearch install(Must be root to perform this action.)
[[email protected] service]# sh elasticsearch start
[[email protected] service]# sh elasticsearch stop
這個外掛程式也是實用的不要不要的。沒有此外掛程式,有多少人還要寫一個指令碼來開機啟動啊。需要的請舉手!
七、將配置好的Elasticsearch拷貝到各伺服器
在一台伺服器上執行完成步驟二到步驟七後,得到最終的elasticsearch-1.7.1檔案夾。將此檔案夾打包並scp拷貝到各伺服器。
八、配置Elasticsearch叢集
在各伺服器(node1 -> node3)中。
執行下面語句對設定檔elasticsearch.yml中的內容進行修改:
[[email protected] ~]$ 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。
也可以在通過執行[[email protected] service]# sh elasticsearch install後,通過執行:[[email protected] service]# chmod 777 /home/deploy/elasticsearch-1.7.1/bin/service/elasticsearch,分配給elasticsearch執行許可權。執行[[email protected] service]# /etc/init.d/elasticsearch start啟動Elasticsearch服務。而後就可以執行[[email protected] 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叢集部署總結--大資料搜尋引擎你不得不知