elasticsearch技術總結(一) 集群分片

2021-08-24 18:24:41 字數 1469 閱讀 6262

一 分片概念以及設定

分片概念:乙個 分片 是乙個底層的 工作單元 ,它僅儲存了全部資料中的一部分。我們往 elasticsearch 新增資料時需要用到索引 —— 儲存相關資料的地方。索引實際上是指向乙個或者多個物理 分片 的 邏輯命名空間。

分片分為主分片和副本,數量可以設定。

舉個例子:

假設elasticsearch集群由6臺伺服器,分別是 node-1、node-2、node-3、node-4、node-5、node-6

分片以及副本的數量在建立索引時候設定:

put /index-test-1}}其中分片數量設定為 6,副本數量設定成 1;即index 包含6個主分片,6個副本,均衡散落在6臺伺服器上;

下圖是kinaba檢視,可以看出該索引分片的散落位置

node -1 : 主分片 5 、副本 4                

node -2 : 副本 0 、副本 2

node -3 : 主分片 0 、副本 1                

node -4 : 主分片 3 、主分片 4

node -5 : 副本 3 、副本 5                     

node -6 : 主分片 1 、主分片 2

主分片負責讀、寫,副本只負責讀。

二 分片動態變化

索引建立好之後,在每個節點上的分片或者主從關係並不是一成不變的;

比如node-3 節點因為網路原因失聯了,集群該如何應對? (這在生產環境中實際遇見過此問題)

集群會對分片進行再均衡,具體如下:

node-3 在網路中失聯了

master 立即注意到了這個節點的離線,它決定在集群內提拔其他擁有 node-3 上面的主分片對應的副本分片為主分片; node-2上的副本0提拔為主分片

在副本被提拔為主分片以後,master 節點開始執行恢復操作來重建缺失的副本。集群中的節點之間互相拷貝分片資料,網絡卡壓力劇增,集群狀態嘗試變綠。即重新拷貝乙個副本1 散落在其他節點。

由於目前集群處於非平衡狀態,這個過程還有可能會觸發小規模的分片移動。其他不相關的分片將在節點間遷移來達到乙個最佳的平衡狀態

分片動態變化保證了集群資料的安全性;同時也會引發其他問題,比如node-3是偶爾失聯,幾分鐘之內有回來了,那麼這些操作也會不會被終止,恰巧如果集群資料量巨大,那麼這個機制會引發大量的io操作,以至於集群卡死。這樣的結果肯定不是我們想要的。如何解決這個問題,我們將在另外一篇文章集群管理進行解答。

參考:《elasticsearch權威指南》

elasticsearch技術總結(二) 集群管理

所謂集群管理是指集群搭建好後的日常維護和管理。一 集群健康 集群狀態分為三種 green 所有主分片以及副分片都可用 yellow 部分副本不可用 red 丟失分片 其中集群狀態為 green 和 yellow 集群正常,資料完整 狀態為red部分資料丟失,分配到缺失分片的操作會有異常 集群狀態以及...

elasticsearch配置詳解

elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置檔案來設定就行了。下面主要講解下e...

誰在使用Elasticsearch

github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...