使用 HDInsight Spark 和 Kafka
作为一名数据工程师,你需要确定要创建的最合适的 HDInsight 群集类型,以便构建解决方案。 Spark 和 Kafka 群集一起使用时,提供了一种引入和处理实时或近实时数据流方法。
使用 Kafka 来引入实时数据
Apache Kafka 可以用作消息传递系统、发布订阅系统或流式处理平台。 它将数据存储到可以实时读取、后期处理并且可同时由多个使用者读取的日志中。
使用 Spark 结构化流处理实时事件
Apache Spark 是一种开源分布式数据处理引擎,可在许多情况下用于快速处理、查询、分析和大规模转换数据。 Spark 通常用于对大数据执行 ETL 和 SQL 作业、处理流数据和执行机器学习。
Spark 结构化流具有其他平台上未提供的功能,例如容错保证、联接批处理和流式处理数据、处理新到的数据,以及我们将在本模块中稍后了解的更多功能。 此外,借助 Azure HDInsight,你可以创建同时承载 Spark 和 Kafka 群集的 VNet。 由于两个群集位于一个 VNet 中,Spark 群集可以访问 Kafka 群集中的单个数据分区,而不是跨群集或终结点通信。 通过提供对单个数据分区的访问,提高了实时处理作业的并发度,从而提高了吞吐量。
将 Kafka 与 Spark 配合使用的场景
有许多实时分析场景将受益于 Apache Kafka 和 Spark 支持的实时流。 这些场景全都有一个流数据引入组件(即 Kafka 组件)和对数据运行的分析过程(即 Spark 组件)。
- 实时欺诈检测:引入金融交易数据,并将其与欺诈行为的历史模式进行比较。
- 车队管理和互联汽车场景:你引入 IoT 设备数据,并在某些传感器数据(如里程、速度、位置或温度数据)达到阈值时做出响应。
- 电子商务解决方案的点击流分析:分析产品的页面放置对冲动性购买和点击量的影响。
- 实时患者监控:监视血压和心率信息,并在患者处于危急状态时通知医生。
- 智能网格解决方案:监视电气使用情况并随需求变化做出响应。
- 顾客在商店的行为:掌握在一天中某些时间的购买情况,以安排补充库存和修改收银台人员配置。
- IT 基础结构和网络监控:监视服务器可用性和带宽,并根据需要重新路由流量。
- 实时需求和库存管理:监视低库存水平,并提示重新订购或补进这些物品。
从批处理到流式处理的轻松迁移
在许多情况下,这些场景都发生在本地,对数据使用的是批处理,但随着解决方案的开发和需求的增大,批处理变为流式处理,本地应用程序迁移到云端。 如上所述,Spark 结构化流在处理批处理和流式处理作业的能力方面非常优秀,这使你能轻松将执行的批处理转换为实时作业,因为你可以使用相同的应用程序和框架从一个作业转换到另一个,或者同时使用这些作业。