大白話講解大數據之Elasticsearch的分佈式架構以及其部分原理

一、先來簡述下Windows上的Elasticsearch安裝

1、先安裝JDK,最好1.8版本(因為這裡是ES5.X的安裝,不在闡述2.X),java -version

2、去官網下載和解壓縮Elasticsearch安裝包到任意目錄(目錄最好不要帶中文)

3、直接啟動Elasticsearch目錄下的:bin\elasticsearch.bat即可,因為es本身特點之一就是開箱即用,如果是中小型應用,數據量少,操作不是很複雜,直接啟動就可以用了,若有經驗的話可以進行更改配置參數調優。

4、檢查ES是否啟動成功:Url地址欄輸入:http://localhost:9200/?pretty

若出現如下則代表啟動成功

{

"name" : "4onsTYV",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "nKZ9VK_vQdSQ1J0Dx9gx1Q",

"version" : {

"number" : "5.2.0",

"build_hash" : "24e05b9",

"build_date" : "2017-01-24T19:52:35.800Z",

"build_snapshot" : false,

"lucene_version" : "6.4.0"

},

"tagline" : "You Know, for Search"

}

解釋說明

name: node名稱

cluster_name: 集群名稱(默認的集群名稱就是elasticsearch)

version.number: 5.2.0,es版本號(你可以下載更高版本,沒問題的)

ES還有一些插件,比如kibana,sql插件,head等等,這些以後文章陸續發。

二、Elasticsearch的分佈式架構講解

1、ES對複雜分佈式機制完全隱藏起來了,使其完全透明化。如下四點:

(1)ES是一套分佈式的系統,其隱藏了複雜的分佈式內部機制和原理,這正滿足了ES的開箱即用的特點。

(2)ES的分片機制,我們之前隨隨便便就將一些document插入到es集群中了,我們並不知道數據到哪個shard中了,這是ES內部幫我們做好的,完全不用我們去關係,他隱藏了複雜的實現,我們直接用就好了,開箱即用特點再次印證。

(3)集群發現機制 cluster discovery,首先我們打開一個ES節點,這時候會發現他加入了一個叫Elasticsearch的集群中,這時候我們打開第二個es服務,他也會自動幫我們加入到Elasticsearch集群中,並作為第一個節點的replica shard存在

(4)shard負載均衡。負載均衡什麼意思?

舉例:假設現在有3個節點,總共有25個shard要分配到3個節點上去,ES會自動進行均勻分配,以保證每個節點的均衡的讀寫負載請求,緩解了服務器的壓力。

我對其上四點總結了一張圖,如下

大白話講解大數據之Elasticsearch的分佈式架構以及其部分原理

四個特點圖示

2、ES的擴容(分為兩種,垂直擴容和水平擴容)

(1)垂直擴容:買更強大的服務器,成本非常高昂不說,而且會有瓶頸(再大的內存和硬盤也會有爆滿時刻),假設世界上最強大的服務器容量就是10T,但是當你的總數據量達到5000T的時候,你要採購多少臺最強大的服務器?即使買得到,那麼錢呢?花不起啊。。。

(2)水平擴容:非常優雅的方式,買越來越多的普通服務器,性能比較一般,但是很多普通服務器組織在一起,就能構成強大的計算和存儲能力。重點是不會到瓶頸,因為普通服務器買得起啊,沒空間了就買啊,便宜實惠。

例如:

假設:6臺服務器,每臺容納1T數據,馬上數據量要增長到8T,這時候兩個方案:

(1)垂直擴容:再買兩臺容量是2T的服務器,替換到老的兩臺服務器,那麼現在是6臺服務器的總容量就是4 * 1T + 2 * 2T = 8T

(2)水平擴容:再買兩臺容量是1T的服務器,直接加入到集群中去(而不是替換老的),那麼現在是8(無線增加,不會達到一直是6臺的瓶頸)臺服務器,總容量就是8 * 1T = 8T。(推薦)

3、ES增加或減少節點時的數據rebalance,使其負載均衡

什麼是數據的rebalance?

看圖就明白了

大白話講解大數據之Elasticsearch的分佈式架構以及其部分原理

問題

大白話講解大數據之Elasticsearch的分佈式架構以及其部分原理

rebalance

4、master節點

(1)作用:

1、管理ES集群中的元數據:比如說索引的創建和索引的刪除

2、維護索引元數據

3、節點的增加和移除

4、維護集群的元數據。

(2)默認情況下,會自動選擇(怎麼選的?他自己內部的算法)出一臺節點作為master節點。

注意:master節點不承載所有的請求,所以不會是一個單點瓶頸。(意思是說並不是因為他是master節點,所以所有請求都由他來轉發,而是每個節點都有可能被請求到。負載均衡,緩解服務器壓力)

5、節點對等的分佈式架構

(1)節點對等,每個節點都能接收所有請求(並不是說master節承受全部請求)

(2)自動請求路由(選擇哪個路由?以後文章詳解)

(3)相應收集

如下圖

大白話講解大數據之Elasticsearch的分佈式架構以及其部分原理

路由簡單圖示

若有興趣,歡迎來加入群,【Java初學者學習交流群】:458430385,此群有Java開發人員、UI設計人員和前端工程師。有問必答,共同探討學習,一起進步!

歡迎關注我的微信公眾號【Java碼農社區】,會定時推送各種乾貨(純乾貨的東西,並非Java基礎語法這些。)

大白話講解大數據之Elasticsearch的分佈式架構以及其部分原理

java碼農社區

相關推薦

推薦中...