在 HDInsight 上使用 Apache Kafka 的 Apache Spark 串流 (DStream) 範例

瞭解如何使用 Apache Spark,使用 DStreams 在 HDInsight 上將數據串流至或移出 Apache Kafka。 此範例會使用 在Spark叢集上執行的 Jupyter Notebook

注意

本檔中的步驟會建立 Azure 資源群組,其中包含 HDInsight 上的 Spark 和 HDInsight 叢集上的 Kafka。 這些叢集都位於 Azure 虛擬網絡 內,可讓 Spark 叢集直接與 Kafka 叢集通訊。

當您完成本檔中的步驟時,請記得刪除叢集以避免產生過多費用。

重要

此範例使用 DStreams,這是較舊的 Spark 串流技術。 如需使用較新 Spark 串流功能的範例,請參閱 使用 Apache Kafka 的 Spark 結構化串流檔。

建立叢集

HDInsight 上的 Apache Kafka 無法透過公用因特網存取 Kafka 訊息代理程式。 與 Kafka 交談的任何專案都必須位於與 Kafka 叢集中節點相同的 Azure 虛擬網路中。 在此範例中,Kafka 和 Spark 叢集都位於 Azure 虛擬網路中。 下圖顯示叢集之間的通訊如何流動:

Diagram of Spark and Kafka clusters in an Azure virtual network.

注意

雖然 Kafka 本身僅限於虛擬網路內的通訊,但叢集上的其他服務,例如 SSH 和 Ambari 可以透過因特網存取。 如需 HDInsight 可用公用埠的詳細資訊,請參閱 HDInsight 所使用的埠和 URI。

雖然您可以手動建立 Azure 虛擬網路、Kafka 和 Spark 叢集,但使用 Azure Resource Manager 範本會比較容易。 使用下列步驟,將 Azure 虛擬網路、Kafka 和 Spark 叢集部署到您的 Azure 訂用帳戶。

  1. 使用下列按鈕登入 Azure,並在 Azure 入口網站 中開啟範本。

    Deploy to Azure button for new cluster

    警告

    若要保證 HDInsight 上的 Kafka 可用性,您的叢集必須包含至少四個背景工作節點。 此範本會建立包含四個背景工作節點的 Kafka 叢集。

    此範本會為 Kafka 和 Spark 建立 HDInsight 4.0 叢集。

  2. 使用下列資訊填入 [自訂部署] 區段上的專案:

    屬性
    資源群組 建立群組或選取現有的群組。
    Location 選取地理上靠近您的位置。
    基底叢集名稱 此值會當做 Spark 和 Kafka 叢集的基底名稱使用。 例如,輸入 hdistreaming 會建立名為 spark-hdistreaming 的 Spark 叢集,以及名為 kafka-hdistreaming 的 Kafka 叢集。
    叢集登入使用者名稱 Spark 和 Kafka 叢集的管理員用戶名稱。
    叢集登入密碼 Spark 和 Kafka 叢集的管理員用戶密碼。
    SSH 使用者名稱 要為Spark和 Kafka 叢集建立的 SSH 使用者。
    SSH 密碼 Spark 和 Kafka 叢集的 SSH 用戶密碼。

    HDInsight custom deployment parameters.

  3. 閱讀 [條款與條件],然後選取 [我同意以上所述的條款及條件]

  4. 最後,選取 [ 購買]。 建立叢集大約需要 20 分鐘的時間。

建立資源之後,會出現摘要頁面。

Resource group summary for the vnet and clusters.

重要

請注意,HDInsight 叢集的名稱是 spark-BASENAMEkafka-BASENAME,其中BASENAME是您提供給範本的名稱。 聯機到叢集時,您可以在後續步驟中使用這些名稱。

使用筆記本

本檔中所述範例的程式代碼可在取得 https://github.com/Azure-Samples/hdinsight-spark-scala-kafka

選取叢集

警告

不論使用與否,HDInsight 叢集都是按分鐘計費。 請務必在使用完叢集後將它刪除。 請參閱如何刪除 HDInsight 叢集

由於本檔中的步驟會在相同的 Azure 資源群組中建立這兩個叢集,因此您可以在 Azure 入口網站 中刪除資源群組。 刪除群組會移除遵循本檔、Azure 虛擬網絡 和叢集所使用的記憶體帳戶所建立的所有資源。

下一步

在此範例中,您已瞭解如何使用 Spark 來讀取和寫入 Kafka。 使用下列連結來探索使用 Kafka 的其他方式: