標籤:elasticsearch kibana elk logstash
es叢集裡的master node、data node和client node到底是怎麼個意思,分別有何特點?
master節點
主要功能是維護中繼資料,管理叢集各個節點的狀態,資料的匯入和查詢都不會走master節點,所以master節點的壓力相對較小,因此master節點的記憶體配置也可以相對少些;但是master節點是最重要的,如果master節點掛了或者發生腦裂了,你的中繼資料就會發生混亂,那樣你叢集裡的全部資料可能會發生丟失,所以一定要保證master節點的穩定性。
data node
是負責資料的查詢和匯入的,它的壓力會比較大,它需要分配多點的記憶體,選擇伺服器的時候最好選擇配置較高的機器(大記憶體,雙路CPU,SSD... 土豪~);data node要是壞了,可能會丟失一小份資料。
client node
是作為任務分發用的,它裡面也會存中繼資料,但是它不會對中繼資料做任何修改。client node存在的好處是可以分擔下data node的一部分壓力;為什麼client node能分擔data node的一部分壓力?因為es的查詢是兩層匯聚的結果,第一層是在data node上做查詢結果匯聚,然後把結果發給client node,client node接收到data node發來的結果後再做第二次的匯聚,然後把最終的查詢結果返回給使用者;所以我們看到,client node幫忙把第二層的匯聚工作處理了,自然分擔了data node的壓力。
這裡,我們可以舉個例子,當你有個大資料查詢的任務(比如上億條查詢任務量)丟給了es叢集,要是沒有client node,那麼壓力直接全丟給了data node,如果data node機器配置不足以接受這麼大的查詢,那麼就很有可能掛掉,一旦掛掉,data node就要重新recover,重新reblance,這是一個異常恢複的過程,這個過程的結果就是導致es叢集服務停止... 但是如果你有client node,任務會先丟給client node,client node要是處理不來,頂多就是client node停止了,不會影響到data node,es叢集也不會走異常恢複。
對於es 叢集為何要設計這三種角色的節點,也是從分層邏輯去考慮的,只有把相關功能和角色劃分清楚了,每種node各盡其責,才能發揮出分布式叢集的效果。
更多elasticsearch的知識,請看下面的圖:
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/85/DC/wKiom1esi1eB4ojLAAihBMsKgF0640.jpg-wh_500x0-wm_3-wmp_4-s_3407292064.jpg" title="es javanew.jpg" alt="wKiom1esi1eB4ojLAAihBMsKgF0640.jpg-wh_50" />
Elasticsearch master node、 data node、 client node的區別與各自特點