共用方式為


什麼是 Azure HDInsight 中的 Apache Kafka

Apache Kafka 是開放原始碼分散式串流平臺,可用來建置即時串流數據管線和應用程式。 Kafka 也提供類似消息佇列的訊息代理程式功能,您可以在其中發佈及訂閱具名數據流。

以下是 HDInsight 上 Kafka 的特定特性:

  • 這是一項受控服務,可提供簡化的設定程式。 結果會是已經過測試且 Microsoft 支援的設定。

  • Microsoft 在 Kafka 運行時間上提供 99.9% 的服務等級協定 (SLA)。 如需詳細資訊,請參閱 HDInsight 的 SLA 信息檔。

  • 它會使用 Azure 受控磁碟作為 Kafka 的備份存放區。 受控磁碟 每個 Kafka 訊息代理程式最多可提供 16 TB 的記憶體。 如需在 HDInsight 上使用 Kafka 設定受控磁碟的相關信息,請參閱 增加 HDInsight 上的 Apache Kafka 延展性。

    如需受控磁碟的詳細資訊,請參閱 Azure 受控磁碟

  • Kafka 是使用機架的單一維度檢視所設計。 Azure 會將機架分成兩個維度 - 更新網域 (UD) 和容錯網域 (FD)。 Microsoft 提供可在 UD 和 FD 之間重新平衡 Kafka 分割和複本的工具。

    如需詳細資訊,請參閱 HDInsight 上的 Apache Kafka 高可用性。

  • HDInsight 可讓您在叢集建立後,變更背景工作角色 (裝載 Kafka 訊息代理程式的節點) 的數目。 您可以從 Azure 入口網站、Azure PowerShell 和其他 Azure 管理介面執行向上調整。 對於 Kafka,您應該在調整作業完成後重新平衡資料分割複本。 重新平衡資料分割可讓 Kafka 利用新的背景工作角色節點數。

    HDInsight Kafka 不支援向下調整或減少叢集中的訊息代理程式數目。 如果嘗試減少節點數目, InvalidKafkaScaleDownRequestErrorCode 則會傳回錯誤。

    如需詳細資訊,請參閱 HDInsight 上的 Apache Kafka 高可用性。

  • Azure 監視器記錄可用來監視 HDInsight 上的 Kafka。 Azure 監視器記錄會顯示虛擬機層級資訊,例如磁碟和 NIC 計量,以及 Kafka 的 JMX 計量。

    如需詳細資訊,請參閱 分析 HDInsight 上的 Apache Kafka 記錄。

HDInsight 架構上的 Apache Kafka

下圖顯示典型的 Kafka 組態,其使用取用者群組、數據分割和複寫來提供容錯事件的平行讀取:

Kafka cluster configuration diagram.

Apache ZooKeeper 會管理 Kafka 叢集的狀態。 Zookeeper 是針對並行、復原和低延遲交易所建置。

Kafka 會將記錄(數據)儲存在主題。 記錄是由「產生者」產生,並由「取用者」取用。 產生者會將記錄傳送至 Kafka 訊息代理程式。 HDInsight 叢集中的每個背景工作節點都是 Kafka 訊息代理程式。

主題跨訊息代理程式分割記錄。 取用記錄時,每個分割區最多可以使用一個取用者,以達到數據的平行處理。

復寫用於跨節點重複的數據分割,以防止節點(Broker) 中斷。 圖表中以 (L) 表示的數據分割是指定資料分割的領導者。 生產者流量會使用 ZooKeeper 所管理的狀態,路由傳送至每個節點的領導者。

為什麼要在 HDInsight 上使用 Apache Kafka?

以下是可在 HDInsight 上使用 Kafka 執行的常見工作和模式:

使用 描述
Apache Kafka 數據的複寫 Kafka 提供 MirrorMaker 公用程式,可復寫 Kafka 叢集之間的數據。 如需使用 MirrorMaker 的資訊,請參閱 使用 HDInsight 上的 Apache Kafka 複寫 Apache Kafka 主題。
發佈-訂閱傳訊模式 Kafka 提供製作者 API,可將記錄發佈至 Kafka 主題。 訂閱主題時會使用取用者 API。 如需詳細資訊,請參閱 從 HDInsight 上的 Apache Kafka 開始。
串流處理 Kafka 通常會與 Spark 搭配使用,以進行即時串流處理。 Kafka 2.1.1 和 2.4.1 (HDInsight 4.0 和 5.0 版) 支援串流 API,可讓您建置串流解決方案,而不需要 Spark。 如需詳細資訊,請參閱 從 HDInsight 上的 Apache Kafka 開始。
水平縮放比例 Kafka 會將數據流分割到 HDInsight 叢集中的節點。 取用者進程可以與個別分割區相關聯,以在取用記錄時提供負載平衡。 如需詳細資訊,請參閱 從 HDInsight 上的 Apache Kafka 開始。
訂單傳遞 在每個分割區中,記錄會以接收的順序儲存在數據流中。 藉由將每個分割區的一個取用者進程產生關聯,您可以保證記錄會依序處理。 如需詳細資訊,請參閱 從 HDInsight 上的 Apache Kafka 開始。
傳訊 因為它支援發佈-訂閱訊息模式,因此 Kafka 通常用來做為訊息代理程式。
活動追蹤 由於 Kafka 提供記錄的順序記錄,因此可用來追蹤和重新建立活動。 例如,在網站或應用程式內的用戶動作。
彙總 您可以使用串流處理,匯總來自不同數據流的資訊,以將資訊合併並集中到作業數據中。
轉換 使用串流處理,您可以將多個輸入主題的數據合併並擴充成一或多個輸出主題。

下一步

使用下列連結來瞭解如何在 HDInsight 上使用 Apache Kafka: