簡體   English   中英

具有高讀取和非常低數據的最佳 Elasticsearch 索引分片

[英]Optimal Elasticsearch Index Shards with high Reads and very low data

我正在關注有關 Elasticsearch 索引的“選擇分片數量”的 AWS 文檔
我的 ES 索引讀取 TPS 將非常高(大約 1300 TPS,並且可以增加到 6500 TPS),但是將出現的數據量將非常少(小於 GB)。

  1. 為了配合高reads,我打算實現橫向擴展(增加數據節點的數量)
  2. 由於數據非常少,根據上述文檔,分片數量應為 1(最佳所需分片大小 ~ 10GB-50GB,我的數據小於 1GB)

問題:

  1. 據我了解,一個分片並不分布在數據節點上。 (一個分片只能駐留在一個數據節點上)。 這種理解正確嗎?
  2. 這里開始In Elasticsearch, each query is executed in a single thread per shard. Multiple shards can however be processed in parallel, as can multiple queries and aggregations against the same shard. In Elasticsearch, each query is executed in a single thread per shard. Multiple shards can however be processed in parallel, as can multiple queries and aggregations against the same shard. . 如果上面的理解是正確的,如果我只有一個分片,所有的請求將在一個數據節點上單線程。 因此不能實現水平縮放。
    考慮到高 TPS 和低數據,索引的最佳主分片/副本數應該是多少?
    我是不是該
    1. 仍然有一個分片,但有多個副本(與主機數量成正比),或者
    2. 多個主分片本身(其大小以 MB 為單位)和一個副本(以節省內存)。 (我沒有看到我的集群中的節點出現嚴重故障,以至於我需要多個副本!)
  1. 是的,你是對的。 設置映射時,您可以設置分片(主)和副本(副本)的數量。 副本分片基本上是主分片的克隆,它們具有彈性,但也有利於讀取性能(它們可以提供讀取操作)。 但是它們可能會損害寫入性能,因為彈性需要跨節點復制數據以使它們保持最新。 根據節點的數量,您可以決定主分片和副本分片的數量,同時考慮彈性(如果節點出現故障會發生什么)
  2. 是的,如果您有一個零副本的分片,根據文檔,它將是一個單線程。 這不一定是壞事或好事。 請記住,在一個請求的情況下,該請求由多個線程(包含部分數據的多個分片)提供服務,最終這些記錄需要累積才能提供給客戶端。 這會損害性能。 此外,即使你有副本,如果你只有一個主分片,那意味着你的索引的所有數據都在一個分片中(主分片或副本)。 這意味着任何分片(因此任何線程)都可以處理不同的請求,但是每個請求將由一個線程處理(不需要發生累積,這對於 MB 的數據來說並不是一件壞事)

由於數據量很小,並且您需要非常高的吞吐量,因此我會選擇擁有 1 個主節點和與節點數量一樣多的副本 - 1(它將保存主節點)。 現在節點的數量取決於。 您必須進行測試,但您可以使用 3 個節點的 go(這是一種常見的彈性/高性能首次設置)。 所以總共有 1 個主副本和 2 個副本。 檢查該設置並嘗試對其進行壓力測試。

對於壓力測試,您可以使用rally ,這是 elasticsearch 在測試新版本時使用的框架。

這是一個有趣的場景,是的,提供的大部分信息都很好,只是想補充以下幾點:

  1. 由於數據量非常小,擁有多個主分片實際上會導致性能不佳,因為創建多個線程來查詢多個分片並從所有分片收集結果。
  2. 現在,由於我們只需要 1 個主分片以獲得最佳性能,並且主分片的副本不能分配在同一個物理數據節點上,因此您需要在集群中擁有其他節點以實現高可用性並提高讀取性能(副本兩者都有幫助)。
  3. 現在,對於單個搜索查詢,它只需要查詢一個分片(主分片或副本分片),因此 Elasticsearch 將只創建一個線程。
  4. 為了更好地利用和節省成本,請確保您擁有較少 CPU 內核的小型數據節點,在這種情況下,2 核機器似乎是合理的(但您可以對此進行基准測試)。
  5. 很高興您使用的是 AWS Elasticsearch,因此您可以在讀取流量時快速更改副本數量並啟動更多小尺寸(如上所述)數據節點,甚至可以更改核心數量,從而更好地自動擴展您可以根據一些生產流量獲得選項,並且可以進一步微調。
  6. 您還可以使用更新索引設置 API動態更改副本數量,但如果現有數據節點 CPU 利用率很高,請確保添加更多數據節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM