Apache Kafka on HDInsight 的 Apache Spark 流式处理 (DStream) 示例

了解如何使用 Apache Spark 通过 DStreams 将数据流式传入或流式传出 Apache Kafka on HDInsight。 本示例使用在 Spark 群集上运行的 Jupyter Notebook

注意

本文档中的步骤创建了一个包含 Spark on HDInsight 和 Kafka on HDInsight 群集的 Azure 资源组。 这些群集都位于一个 Azure 虚拟网络中,这样 Spark 群集便可与 Kafka 群集直接通信。

完成本文档中的步骤后,请记得删除这些群集,避免产生额外费用。

重要

此示例使用 DStreams,这是较旧的 Spark 流式处理技术。 有关使用较新的 Spark 流式处理功能的示例,请参阅使用 Apache Kafka 的 Spark 结构化流式处理文档。

创建群集

Apache Kafka on HDInsight 不提供通过公共 Internet 访问 Kafka 中转站的权限。 与 Kafka 对话的任何内容都必须与 Kafka 群集中的节点位于同一 Azure 虚拟网络中。 对于此示例,Kafka 和 Spark 群集都位于 Azure 虚拟网络中。 下图显示通信在群集之间的流动方式:

Azure 虚拟网络中的 Spark 和 Kafka 群集的关系图。

注意

虽然 Kafka 本身受限于虚拟网络中的通信,但可以通过 Internet 访问群集上的其他服务(例如 SSH 和 Ambari)。 有关可用于 HDInsight 的公共端口的详细信息,请参阅 HDInsight 使用的端口和 URI

尽管可手动创建 Azure 虚拟网络、Kafka 和 Spark 群集,但使用 Azure 资源管理器模板更简单。 使用以下步骤将 Azure 虚拟网络、Kafka 和 Spark 群集部署到 Azure 订阅。

  1. 使用以下按钮登录到 Azure,并在 Azure 门户中打开模板。

    新群集的“部署到 Azure”按钮

    警告

    若要确保 Kafka on HDInsight 的可用性,群集必须至少包含四个工作器节点。 此模板创建的 Kafka 群集包含四个工作器节点。

    此模板为 Kafka 和 Spark 创建 HDInsight 4.0 群集。

  2. 使用以下信息填充“自定义部署”部分中的条目

    属性
    资源组 创建一个组或选择有个现有的组。
    位置 选择在地理上邻近的位置。
    基群集名称 此值将用作 Spark 和 Kafka 群集的基名称。 例如,输入 hdistreaming 将创建名为 spark-hdistreaming 的 Spark 群集和名为 kafka-hdistreaming 的 Kafka 群集。
    群集登录用户名 Spark 和 Kafka 群集的管理员用户名。
    群集登录密码 Spark 和 Kafka 群集的管理员用户密码。
    SSH 用户名 创建 Spark 和 Kafka 群集的 SSH 用户。
    SSH 密码 Spark 和 Kafka 群集的 SSH 用户的密码。

    HDInsight 自定义部署参数。

  3. 阅读“条款和条件”,并选择“我同意上述条款和条件”。

  4. 最后,选择“购买”。 创建群集大约需要 20 分钟时间。

创建资源后,会显示摘要页面。

VNet 和群集的资源组摘要。

重要

请注意,HDInsight 群集的名称为 spark-BASENAMEkafka-BASENAME,其中 BASENAME 是为模板提供的名称。 在连接到群集的后续步骤中,会用到这些名称。

使用笔记本

可在 https://github.com/Azure-Samples/hdinsight-spark-scala-kafka 处查看本文档所描述示例的代码。

删除群集

警告

HDInsight 群集是基于分钟按比例计费,而不管用户是否使用它们。 请务必在使用完群集之后将其删除。 请参阅如何删除 HDInsight 群集

由于本文档中的步骤在相同的 Azure 资源组中创建两个群集,因此可在 Azure 门户中删除资源组。 删除该组将删除按照本文档创建的所有资源、Azure 虚拟网络和群集使用的存储帐户。

后续步骤

在本示例中,了解如何使用 Spark 对 Kafka 进行读取和写入。 使用以下链接来发现与 Kafka 配合使用的其他方式: