本文主要介紹通過簡單規則來評估一般業務場景下EMR Kafka集群所需硬件資源。實際業務場景中,您可以通過這些規則評估出資源規模后,再結合負載測試來確定最終的集群規格。集群創建后,您也可以根據實際資源使用率通過集群擴容功能來變更集群的資源配置。
Kafka集群硬件資源的影響因素較多,包括消息流量的峰值、消息的平均大小、分區的個數、副本因子、客戶端的個數等,以及使用的業務場景、業務應用程序的性能等非Kafka服務控制因素。因此評估硬件資源需求時,需要先預估實際業務的規模,并以此作為業務參數輸入來評估所需資源。您可以使用kafka-producer-perf-test、kafka-consumer-perf-test等工具來模擬實際負載,進一步評估實際需要的硬件資源。
Master節點組(Zookeeper)資源評估
Master節點組主要用于安裝Zookeeper組件。此外,Kafka Manager、Schema Registry、Rest Proxy等Kafka生態組件也安裝在Master節點組。
通常情況下,Master節點組規格配置推薦如下:
節點數:3個。
數據盤:選擇1塊云盤,存儲容量120 GiB。
系統盤:80 GiB。
CPU:4 Core。
內存:8 GiB。
重要建議選擇CPU和內存配比為1:2的機型。
Core節點組(Kafka Broker)資源評估
評估業務需求
您需要根據業務情況,評估以下參數:
扇出因子:業務數據會被下游消費的次數,不包含Kafka本身副本復制產生的消費次數。
數據峰值流入:業務數據的峰值流量,單位MB/s。
數據平均流入:業務數據的平均流量,單位MB/s。
數據保留時長:數據保留時長,默認7天。
分區副本因子:分區副本因子,默認為3,即每個分區具有3個副本。
需要根據實際的業務情況,充分評估峰值流量,峰值流量通常會比平均流量高1個數量級以上。
在評估參數時,需要保留適度的冗余以便在極端業務場景負載時,集群仍能正常提供服務。根據以上參數,可以計算出以下需求指標:
集群總寫入流量峰值:
數據峰值流入 * 分區副本因子
。集群總讀取流量峰值:
數據峰值流入 *(扇出因子 + 分區副本因子 - 1)
。數據總存儲容量:
數據平均流入 * 數據保留時長 * 分區副本因子
。
節點規格推薦
通常情況下,Core節點組規格配置推薦如下:
節點數:根據業務需求評估,具體請參見評估Broker的節點數。
CPU:16 Core。
內存:64 GiB。
重要建議選擇CPU和內存配比為1:4的機型。
系統盤:80 GiB。
數據盤:選擇4塊云盤,云盤容量根據業務需求評估。
網卡帶寬:根據節點磁盤總IO計算網卡帶寬。
數據盤推薦使用云盤機型,避免因磁盤故障產生的運維工作量,可以獲取更高的服務可用性并降低人力運維成本。
選擇數據盤類型以及塊數之后,計算出總的磁盤IO吞吐量。建議選擇網卡帶寬不低于磁盤IO吞吐量。
評估Broker的節點數
理想情況下,Kafka Broker最大流量能夠達到節點磁盤IO的最大吞吐量或者網卡最大帶寬。因此,可以根據數據峰值流量以及每個節點IO吞吐量(或者網卡帶寬)計算所需Broker的節點數。
獲取單個節點磁盤性能指標
單個節點磁盤吞吐量 = 單塊盤吞吐量 * 數據盤個數
云盤的IO性能理論值請參見塊存儲性能。例如,PL1每塊云盤的最大吞吐量為350 MB/s。對于本地盤機型,建議根據理論值的一半來計算磁盤吞吐量指標。例如,通常一塊本地盤按照50 MB/s估算。
計算所需Broker節點數
如果您的分區副本數為3,則建議選擇4個及以上Broker節點,即出現一個節點暫時不可用時,仍然可以創建3副本的分區。通常建議保留50%的硬件資源冗余。基于以上前提,計算所需Broker節點數公式為:
Broker節點數 = Max(4,(集群總讀取流量峰值 + 集群總寫入流量峰值)/ 單個節點磁盤吞吐量 / 50%)
此外,從分區副本限制考慮,每個Broker建議不超過2000個分區副本、最多不能超過4000個分區副本;整個集群不應超過200,000個分區副本。如果預估集群總分區副本數量會比較多,建議您從總分區數來評估所需Broker的節點數。此時,計算所需Broker節點數公式為:
Broker節點數 = Max(4,總預估分區數 * 分區副本因子 / 2000)
估算每個Broker的磁盤大小
每個Broker的磁盤大小 = 數據總存儲容量 / Broker節點數 / 節點數據盤塊數 / 50%
(可選)Task節點組(Kafka Connect)資源評估
該節點組是可選的。集群創建后,您可以根據資源使用情況隨時擴容。
通常情況下,Task節點組規格配置推薦如下:
節點數:建議選擇2個節點以上,這樣Connect集群是高可用的。
數據盤:選擇1塊云盤,存儲容量80 GiB以上。
CPU:建議每個節點選擇8 Core以上,根據Connector的計算量隨時擴容。
內存:根據Connector的類型以及內存使用情況選擇。
重要建議選擇CPU和內存配比為1:2或者1:4的機型。