從EMR-3.4.0版本開始將支援Kafka服務。

建立Kafka叢集

在E-MapReduce控制台建立叢集時,選擇叢集類型為Kafka,則會建立一個預設只包含Kafka組件的叢集,除了基礎組件外包括Zookeeper,Kafka和KafkaManager三個組件。每個節點將只部署一個Kafka broker。我們建議您的Kafka叢集是一個專用叢集,不要和Hadoop相關服務混部在一起。

本地碟Kafka叢集

為了更好地降低單位成本以及應對更大的儲存需求,E-MapReduce將在EMR-3.5.1版本開始支援基於本地碟(D1類簇機型,詳情參考ECS機型介紹文檔)的Kafka叢集。相比較雲端硬碟,本地碟Kafka叢集有如下特點:

  • 執行個體配備大容量、高吞吐SATA HDD本地碟,單磁碟 190 MB/s 順序讀寫效能,單一實例最大 5 GB/s 儲存吞吐能力。
  • 本機存放區價格比 SSD 雲端硬碟降低 97%。
  • 更高網路效能,最大17 Gbit/s執行個體間網路頻寬,滿足業務高峰期執行個體間資料互動需求。
但本地碟機型也有特殊之處:
操作 本地磁碟資料狀態 說明
作業系統重啟/控制台重啟/強制重啟 保留 本地磁碟儲存卷保留,資料保留
作業系統關機/控制台停止/強制停止 保留 本地磁碟儲存卷保留,資料保留
控制台上釋放(執行個體) 擦除 本地磁碟儲存卷擦除,資料不保留
注意
  • 當宿主機宕機或者磁碟損壞時,磁碟中的資料將會丟失。
  • 請勿在本地磁碟上儲存需要長期儲存的業務資料,並及時做好資料備份和採用高可用架構。如需長期儲存,建議將資料存放區在雲端硬碟上。

為了能夠在本地碟上部署Kafka服務,E-MapReduce預設要求:

  1. default.replication.factor = 3,即要求topic的分區副本數至少為3。如果設定更小副本數,則會增加資料丟失風險。
  2. min.insync.replicas = 2,即要求當producer設定acks為all(-1)時,每次至少寫入兩個副本才算寫入成功。

當出現本地碟損壞時,E-MapReduce會進行:

  1. 將壞盤從Broker的配置中剔除,重啟Broker,在其他正常可用的本地碟上恢複壞盤丟失的資料。根據壞盤上已經寫入的資料量不等,恢複的總時間也不等。
  2. 當機器磁碟損壞數目過多(超過20%)是,E-MapReduce將主動進行機器遷移,恢複異常的磁碟。
  3. 如果當前機器上可用剩餘磁碟空間不足以恢複壞盤遺失資料時,Broker將異常Down掉。這種情況,您可以選擇清理一些資料,騰出磁碟空間並重啟Broker服務;也可以聯絡E-MapReduce進行機器遷移,恢複異常的磁碟。

參數說明

您可以在E-MapReduce的叢集組態管理中查看Kafka的軟體配置,當前主要有:
配置項 說明
zookeeper.connect Kafka叢集的Zookeeper串連地址
kafka.heap.opts Kafka broker的堆記憶體大小
num.io.threads Kafka broker的IO線程數,預設為機器CPU核心數目的2倍
num.network.threads Kafka broker的網路線程數,預設為機器的CPU核心數目