本文主要介紹通過簡單規則來評估一般業務情境下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效能理論值請參見Block Storage效能。例如,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的機型。