Elasticsearch究竟要設(shè)置多少分片數(shù)

Elasticsearch究竟要設(shè)置多少分片數(shù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的商河網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

0、引言

 在構(gòu)建Elasticsearch集群的初期如果集群分片設(shè)置不合理,可能在項目的中后期就會出現(xiàn)性能問題。

Elasticsearch是一個非常通用的平臺,支持各種各樣的用例,并且為數(shù)據(jù)組織和復制策略提供了巨大靈活性。這種靈活性使得作為ELK新手的你將數(shù)據(jù)組織成索引和分片變得困難。雖然不一定會在首次啟動時出現(xiàn)問題,但由于數(shù)據(jù)量隨時間的推移,可能會導致性能問題。集群所擁有的數(shù)據(jù)越多,糾正問題就越困難,甚至有時可能需要重新索引大量數(shù)據(jù)。

當我們遇到遭遇性能問題的用戶時,可以追溯到關(guān)于數(shù)據(jù)索引的數(shù)據(jù)和群集數(shù)量的問題并不罕見。 對于涉及multi-tenancy或使用基于時間的索引的用戶尤其如此。 在與用戶討論這個問題時(會議、論壇形式),引申出的一些最常見的問題是:

1)“我應(yīng)該有多少個分片?”
2)“我的分片應(yīng)該有多大”?

下面幫助您回答這些問題,并為使用基于時間的索引的使用案例( 日志記錄或安全分析 )提供實用的指導。

1、什么是分片?

在開始之前,讓我們約定文章中用到的一些概念和術(shù)語。 

Elasticsearch中的數(shù)據(jù)組織成索引。每一個索引由一個或多個分片組成。每個分片是Luncene索引的一個實例,你可以把實例理解成自管理的搜索引擎,用于在Elasticsearch集群中對一部分數(shù)據(jù)進行索引和處理查詢。

【刷新】當數(shù)據(jù)寫入分片時,它會定期地發(fā)布到磁盤上的新的不可變的Lucene段中,此時它可用于查詢?!@被稱為刷新。更詳細的解讀請參考: 
http://t.cn/R05e3YR

【合并】隨著分段數(shù)(segment)的增長,這些segment被定期地整合到較大的segments。 這個過程被稱為合并(merging)。

由于所有段都是不可變的, 因為新的合并段需要創(chuàng)建,舊的分段將被刪除 ,這意味著所使用的磁盤空間通常在索引時會波動。 合并可能資源相當密集,特別是在磁盤I/O方面。

分片是Elasticsearch在集群周圍分發(fā)數(shù)據(jù)的單位。 Elasticsearch在重新平衡數(shù)據(jù)時 (例如 發(fā)生故障后) 移動分片的速度 取決于分片的大小和數(shù)量以及網(wǎng)絡(luò)和磁盤性能。

提示:避免有非常大的分片,因為大的分片可能會對集群從故障中恢復的能力產(chǎn)生負面影響。 對于多大的分片沒有固定的限制,但是分片大小為50GB通常被界定為適用于各種用例的限制。

2、索引有效期( retention period )

由于段是不可變的,更新文檔需要Elasticsearch首先查找現(xiàn)有文檔,然后將其標記為已刪除,并添加更新的版本。刪除文檔還需要找到文檔并將其標記為已刪除。因此,刪除的文檔將繼續(xù)占據(jù)磁盤空間和一些系統(tǒng)資源,直到它們被合并,這將消耗大量的系統(tǒng)資源。

Elasticsearch允許從文件系統(tǒng)直接刪除完整索引,而不必明確地必須單獨刪除所有記錄。這是迄今為止從Elasticsearch刪除數(shù)據(jù)的最有效的方式。

提示:盡可能使用基于時間的索引來管理數(shù)據(jù)。根據(jù)保留期(retention period,可以理解成有效期)將數(shù)據(jù)分組。基于時間的索引還可以輕松地隨時間改變主分片和副本分片的數(shù)量(以為要生成的下一個索引進行更改)。這簡化了適應(yīng)不斷變化的數(shù)據(jù)量和需求。3、索引和分片不是空閑的?

【集群狀態(tài)】對于每個Elasticsearch索引,其映射和狀態(tài)的信息都存儲在集群狀態(tài)。 這些集群狀態(tài)信息保存在內(nèi)存中以便快速訪問。 因此,如果在集群中擁有大量索引,可能導致大的集群狀態(tài)(特別是如果映射較大)。 所有更新集群狀態(tài)操作為了在集群中保證一致性,需要通過單個線程完成,因此更新速度將變慢。

提示:為了減少索引數(shù)量并避免大的乃至非常龐大的映射,請考慮將相同索引結(jié)構(gòu)的數(shù)據(jù)存儲在相同的索引中,而不是基于數(shù)據(jù)的來源將數(shù)據(jù)分割成獨立的索引。 在每個索引的索引數(shù)量和映射大小之間找到一個很好的平衡很重要。**

每個分片都有數(shù)據(jù)需要保存在內(nèi)存中并使用堆空間。 這包括在分片級別保存信息的數(shù)據(jù)結(jié)構(gòu),也包括在段級別的數(shù)據(jù)結(jié)構(gòu),以便定義數(shù)據(jù)駐留在磁盤上的位置。 這些數(shù)據(jù)結(jié)構(gòu)的大小不是固定的,并且將根據(jù)用例而有所不同。

然而,段相關(guān)開銷的一個重要特征是它與分段的大小不成正比。 這意味著與較小的段相比,較大的段的每個數(shù)據(jù)量具有較少的開銷,且這種差異很大。

【堆內(nèi)存的重要性】為了能夠每個節(jié)點存儲盡可能多的數(shù)據(jù),重要的是盡可能多地管理堆內(nèi)存使用量并減少其開銷。 節(jié)點擁有的堆空間越多,它可以處理的數(shù)據(jù)和分片越多。

因此,索引和分片從集群的角度看待不是空閑的,因為每個索引和分片都有一定程度的資源開銷。

提示1:小分片會導致小分段(segment),從而增加開銷。目的是保持平均分片大小在幾GB和幾十GB之間。對于具有基于時間的數(shù)據(jù)的用例,通??吹酱笮≡?0GB和40GB之間的分片。

提示2:由于每個分片的開銷取決于分段數(shù)和大小,通過強制操作迫使較小的段合并成較大的段可以減少開銷并提高查詢性能。一旦沒有更多的數(shù)據(jù)被寫入索引,這應(yīng)該是理想的。請注意,這是一個消耗資源的(昂貴的)操作,較為理想的處理時段應(yīng)該在非高峰時段執(zhí)行。

提示3:您可以在集群節(jié)點上保存的分片數(shù)量與您可用的堆內(nèi)存大小成正比,但這在Elasticsearch中沒有的固定限制。 一個很好的經(jīng)驗法則是:確保每個節(jié)點的分片數(shù)量保持在低于每1GB堆內(nèi)存對應(yīng)集群的分片在20-25之間。 因此,具有30GB堆內(nèi)存的節(jié)點最多可以有600-750個分片,但是進一步低于此限制,您可以保持更好。 這通常會幫助群體保持處于健康狀態(tài)。

4、分片的大小如何影響性能?

在Elasticsearch中,每個查詢在每個分片的單個線程中執(zhí)行。然而,可以并行處理多個分片,并可以在相同分片上執(zhí)行多個查詢和聚合。

【小分片的利弊】這意味著,在不涉及高速緩存時,最小查詢延遲將取決于數(shù)據(jù)、查詢的類型、分片的大小。查詢大量小分片將使得每個分片的處理速度更快,但是隨著更多的任務(wù)需要按順序排隊和處理,它不一定要比查詢較小數(shù)量的更大的分片更快。如果有多個并發(fā)查詢,則有很多小碎片也會降低查詢吞吐量。

提示:從查詢性能角度確定最大分片大小的最佳方法是使用逼真的數(shù)據(jù)和查詢進行基準測試(真實數(shù)據(jù)而非模擬數(shù)據(jù))。 始終使用查詢和索引負載進行基準測試,代表節(jié)點在生產(chǎn)中需要處理的內(nèi)容,因為單個查詢的優(yōu)化可能會產(chǎn)生誤導性的結(jié)果。

5、如何管理分片大???

當使用基于時間的索引時,每個索引傳統(tǒng)上都與固定的時間段相關(guān)聯(lián)。 每日索引非常普遍,經(jīng)常用于持有時間區(qū)間短或每日量大的數(shù)據(jù)。 這些允許數(shù)據(jù)期限期間以良好的粒度進行管理,并且可以方便地對每天更換調(diào)整volumes。

時間周期長的數(shù)據(jù),特別是如果每日不保存每天的索引數(shù)據(jù),則通常會使用每周或每月的保存的碎片大小的增加。 這減少了隨著時間的流逝需要存儲在群集中的索引和碎片數(shù)量大?。ㄖ弊g有點費勁此處)。

提示:如果使用固定期限的時間索引數(shù)據(jù),可以根據(jù)時間周期預(yù)期數(shù)據(jù)量調(diào)整所涵蓋的時間范圍,以達到目標分片大小。

【均勻更新&快速變化的索引數(shù)據(jù)對比】具有固定時間間隔的基于時間的索引在數(shù)據(jù)量合理預(yù)測并且變化緩慢的情況下工作良好。 如果索引率可以快速變化,則很難保持均勻的目標分片大小。

為了能夠更好地處理這種情況,推出了RolloverShrink API。這些增加了如何管理索引和分片的靈活性,尤其適用于基于時間的索引。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網(wǎng)頁標題:Elasticsearch究竟要設(shè)置多少分片數(shù)
鏈接分享:http://www.muchs.cn/article8/ghpoip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、關(guān)鍵詞優(yōu)化、網(wǎng)站營銷、網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司