Elasticsearch入門二:Elasticsearch.5.4.3+kibana5.4.3+word分詞叢集linux搭建
一.軟體版本
-
jdk-8u191-linux-x64.tar.gz
-
elasticsearch-5.4.3.tar.gz
-
kibana-5.4.3-linux-x86_64.tar.gz
-
word-master.zip
二.環境搭建
1.jdk8安裝
1.1.下載地址
從https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html中獲取安裝包
1.2.在usr目錄下建立java安裝目錄
以root使用者登入
cd /usr mkdir java
1.3.解壓jdk至當前目錄
tar -zxvf jdk-8u60-linux-x64.tar.gz
1.4.安裝完畢為他建立一個連結以節省目錄長度
ln -s /usr/java/jdk1.8.0_60/ /usr/jdk
1.5.配置環境變數
vim /etc/profile
新增如下內容:JAVA_HOME根據實際目錄來
JAVA_HOME=/usr/java/jdk1.8.0_60
CLASSPATH=$JAVA_HOME/lib/
PATH= JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
1.6.執行命令使jdk生效
source /etc/profile
1.7.檢視安裝情況
java -version
1.8.若以前jdk是低版本,需要執行以下命令再執行1.6步驟使生效
使用which java 和 which javac 分別可以看到原來的安裝記錄
which java
which javac
然後刪掉原來的版本記錄
rm -rf /usr/bin/java*
2.elasticsearch-5.4.3叢集安裝
2.1.解壓
從https://www.elastic.co/downloads/past-releases/elasticsearch-5-4-3獲取安裝包
解壓到安裝路徑下:
tar zxvf elasticsearch-5.4.1.tar.gz
2.2.配置es
檢視配置檔案:
vim elasticsearch-5.4.1/config/elasticsearch.yml
vim elasticsearch-5.4.1/config/jvm.options
2.2.1.elasticsearch.yml配置詳情如下:
cluster.name: cluster_name //自己的叢集名稱,相同的叢集名稱需要保持一致。確保不要在不同的環境中重用相同的叢集名稱,否則可能會導致節點加入錯誤的叢集。
node.name: master //節點名稱
node.master: true //是否作為master,預設為true
node.data: true //是否作為data,預設為true
path.data: /var/log/elasticsearch //預設是放在es的安裝目錄下,但為了避免升級丟失資料,最好不要放在安裝目錄上,比如/var/log/elasticsearch
path.logs: /var/data/elasticsearch //預設是放在es的安裝目錄下,但為了避免升級丟失資料,最好不要放在安裝目錄上,比如/var/data/elasticsearch
network.host: 192.168.2.36 //節點ip,生產地址一般使用IP地址
http.port: 9200 //訪問埠,預設為9200
discovery.zen.ping.unicast.hosts: ["slave1", "slave2","master"] //實現節點到節點的叢集和主選擇
discovery.zen.minimum_master_nodes: 2 //為避免資料丟死(腦裂),數量應該為(master_eligible_nodes / 2) + 1
2.2.2.jvm.options主要用來配置堆大小:
-Xms2g //最小堆大小
-Xmx2g //最大堆大小
設定堆大小的注意事項:
-
Xms與Xmx大小設定成一致
-
es可用的堆大小越大,它可用於快取的記憶體越大,但過大的堆大小將導致垃圾回收時間增長
-
將Xmx設定為不超過實體記憶體的50%,以確保為核心檔案系統快取保留足夠的實體記憶體
-
不要將Xmx設定為高於JVM用於壓縮物件指標的截止值;確切的截止時間有所不同,但接近32gb
-
儘量保持在零基礎壓縮oops的閾值以下;確切的截止時間各不相同,但在大多數系統上26gb是安全的,但在某些系統上可能高達30gb。您可以通過使用JVM選項
-XX:+UnlockDiagnosticVMOptions
-XX:+PrintCompressedOopsMode
啟動Elasticsearch來驗證您的限制是否達到了
2.2.3.安裝時系統常見問題
2.2.3.1.設定系統檔案
通過編輯/etc/security/limits.conf來設定:
# Elasticsearch使用大量的檔案描述符或檔案控制代碼。耗盡檔案描述符可能是災難性的,並且很可能導致資料丟失。確保將執行Elasticsearch的使用者開啟的檔案描述符的數量限制增加到65,536或更高
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
# Elasticsearch為不同型別的操作使用了許多執行緒池。確保Elasticsearch使用者能夠建立的執行緒數至少是4096個
elasticsearch soft nproc 2048
elasticsearch hard nproc 2048
#給予elasticsearch使用者鎖定記憶體的許可權,用來避免記憶體交換
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
2.2.3.2.避免記憶體交換
交換對於效能、節點穩定性都是非常糟糕的,應該不惜一切代價加以避免。它可能導致垃圾收集持續幾分鐘而不是幾毫秒,還可能導致節點響應緩慢,甚至與叢集斷開連線。在彈性分散式系統中,讓作業系統殺死節點更有效。可以通過在config/elasticsearch.yml中設定bootstrap.memory_lock: true
將程序地址空間鎖定到RAM中,以防止交換。
2.2.3.3.設定虛擬記憶體
es預設使用mmapfs目錄去儲存索引,作業系統預設的mmap計數限制可能太低,這可能導致記憶體不足異常。通過在/etc/sysctl.conf中設定max_map_count為262144將解決該問題。
vi /etc/sysctl.conf
# 在sysctl.conf中增加
vm.max_map_count = 262144
通過sysctl -p
命令檢視以上配置是否生效
2.3.es啟動
cd elasticsearch-5.4.0/bin
# 啟動 -d為守護程序執行
./elasticsearch -d
2.4.檢視es叢集狀態
通過瀏覽器訪問:http://192.168.2.36:9200/_cat/health?v即可以看到叢集的基本狀況,效果如下:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1540807979 18:12:59 search yellow 3 1 10 10 0 0 10 0 - 50.0%
3.kibana的安裝
kibana可以作為es的圖形化介面
3.1.解壓
從https://www.elastic.co/downloads/past-releases/kibana-5-4-3獲取安裝包,然後解壓即可
tar zxvf kibana-5.4.3-linux-x86_64.tar.gz
3.2.啟動
需要遠端訪問kibana的話,需要修改config/kibana.xml的配置:
#設定ip不限制
server.host: "0.0.0.0"
#es地址
elasticsearch.url: "http://192.168.2.36:9200"
執行命令bin/kibana
,然後訪問http://192.168.2.36:5601檢視
4.word分詞外掛的安裝
該外掛支援中文分詞和詞性分析
4.1.解壓
從https://github.com/ysc/word中獲取外掛壓縮包,然後解壓至es安裝目錄plugins下,且每個es服務都應該安裝該外掛!將es重新啟動即可。
4.2.測試中文分詞效果
在瀏覽器中訪問:http://192.168.2.36:9200/_analyze?pretty&analyzer=word&text=楊尚川是APDPlat應用級產品開發平臺的作者,可以看到如下效果就說明中文分詞已經生效。analyzer=word表示採用的分詞器是word,且與es目錄plugins中的檔名保持一致。
{
“tokens” : [
{
“token” : “楊尚川”,
“start_offset” : 0,
“end_offset” : 3,
“type” : “word”,
“position” : 0
},
{
“token” : “是”,
“start_offset” : 3,
“end_offset” : 4,
“type” : “word”,
“position” : 1
},
{
“token” : “APDPlat”,
“start_offset” : 4,
“end_offset” : 11,
“type” : “word”,
“position” : 2
},
{
“token” : “應用”,
“start_offset” : 11,
“end_offset” : 13,
“type” : “word”,
“position” : 3
},
{
“token” : “級”,
“start_offset” : 13,
“end_offset” : 14,
“type” : “word”,
“position” : 4
},
{
“token” : “產品”,
“start_offset” : 14,
“end_offset” : 16,
“type” : “word”,
“position” : 5
},
{
“token” : “開發”,
“start_offset” : 16,
“end_offset” : 18,
“type” : “word”,
“position” : 6
},
{
“token” : “平臺”,
“start_offset” : 18,
“end_offset” : 20,
“type” : “word”,
“position” : 7
},
{
“token” : “的”,
“start_offset” : 20,
“end_offset” : 21,
“type” : “word”,
“position” : 8
},
{
“token” : “作者”,
“start_offset” : 21,
“end_offset” : 23,
“type” : “word”,
“position” : 9
}
]
}
參考連結: