什么是 Apache Kafka on HDInsight?

Apache Kafka 是开源分布式流式处理平台,可用于构建实时流数据管道和应用程序。 Kafka 还提供类似于消息队列的消息中转站功能,可在其中向命名的数据流发布和订阅信息。

Kafka on HDInsight 的具体特征如下:

  • 它是一种托管服务,可提供简化的配置过程。 其结果是经 Microsoft 测试并支持的配置。

  • Microsoft 就 Kafka 正常运行时间提供 99.9 % 的服务级别协议(SLA)。 有关详细信息,请参阅 HDInsight 的 SLA 信息文档。

  • 它使用 Azure 托管磁盘作为 Kafka 的后备存储。 托管磁盘可为每个 Kafka 代理提供高达 16 TB 的存储空间。 有关为 Kafka on HDInsight 配置托管磁盘的信息,请参阅提高 Kafka on HDInsight 的可伸缩性

    有关托管磁盘的详细信息,请参阅 Azure 托管磁盘

  • Kafka 采用一维机架视图设计。 Azure 将机架分为两个维度,即更新域 (UD) 和容错域 (FD)。 Microsoft 提供相关工具,重新均衡 UD 和 FD 中的 Kafka 分区与副本。

    有关详细信息,请参阅使用 Kafka on HDInsight 实现高可用性

  • 创建群集后,HDInsight 允许更改辅助角色节点(托管 Kafka 代理)的数目。 可以通过 Azure 门户、Azure PowerShell 和其他 Azure 管理界面执行缩放。 对于 Kafka,在执行缩放操作后,应重新均衡分区副本。 重新均衡分区可让 Kafka 利用新的工作节点数。

    有关详细信息,请参阅使用 Kafka on HDInsight 实现高可用性

Kafka on HDInsight 体系结构

下图显示了一个典型的 Kafka 配置,该配置利用使用者组、分区和复制提供带容错功能的事件并行读取:

Kafka 群集配置关系图

Apache ZooKeeper 管理 Kafka 群集的状态。 Zookeeper 专用于并发、可复原和低延迟事务。

Kafka 将记录(数据)存储在主题中。 记录由生成者生成,由使用者使用。 生成者将记录发送到 Kafka 代理。 HDInsight 群集中的每个辅助角色节点都是一个 Kafka 中转站。

主题跨代理对记录进行分区。 在使用记录时,每个分区最多可使用一个使用者来实现数据并行处理。

利用复制功能将分区复制到各个节点上,以防止发生节点(代理)服务中断。 关系图中用 (L) 表示的分区是给定分区的前导者。 生成方流量将根据由 ZooKeeper 管理的状态路由到每个节点的前导者。

为何使用 Kafka on HDInsight?

以下是可使用 Kafka on HDInsight 执行的常见任务和模式:

  • Kafka 数据复制:Kafka 提供 MirrorMaker 实用工具,用于在 Kafka 群集之间复制数据。

    有关使用 MirrorMaker 的信息,请参阅使用 Kafka on HDInsight 复制 Kafka 主题

  • 发布-订阅消息传送模式:Kafka 提供一个生成者 API,用于将记录发布到 Kafka 主题。 订阅某个主题时,会用到使用者 API。

    有关详细信息,请参阅 Kafka on HDInsight 入门

  • 流处理:Kafka 通常与 Apache Storm 或 Spark 配合使用,以实现实时流式处理。 Kafka 0.10.0.0(HDInsight 版本 3.5 和 3.6)引入了流式处理 API,可用于构建流式处理解决方案,而无需使用 Storm 或 Spark。

    有关详细信息,请参阅 Kafka on HDInsight 入门

  • 横向缩放:Kafka 可将 HDInsight 群集中不同节点之间的流进行分区。 使用者进程可与单个分区相关联,在使用记录时提供负载均衡。

    有关详细信息,请参阅 Kafka on HDInsight 入门

  • 有序传送:在每个分区中,记录按接收顺序存储在流中。 通过在使用者进程与分区之间建立一对一的关联,可以保证记录按顺序处理。

    有关详细信息,请参阅 Kafka on HDInsight 入门

用例

  • 消息传送:由于支持发布-订阅消息模式,Kafka 通常用作消息中转站。

  • 活动跟踪:由于 Kafka 提供有序的日志记录,因此可用于跟踪和重建活动, 例如,网站上或应用程序内的用户操作。

  • 聚合:使用流处理可以从不同的流聚合信息,并将信息组合并集中化为操作数据。

  • 转换:使用流处理可将多个输入主题的数据组合并扩充为一个或多个输出主题。

后续步骤

单击以下链接了解如何使用 Apache Kafka on HDInsight: