怎样解析SparkStreaming和Kafka集成的两种方式

发布时间:2021-12-15 11:39:46 作者:柒染
来源:亿速云 阅读:165

本篇文章为大家展示了怎样解析SparkStreaming和Kafka集成的两种方式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Spark Streaming是基于微批处理的流式计算引擎,通常是利用Spark Core或者Spark Core与Spark Sql一起来处理数据。在企业实时处理架构中,通常将Spark Streaming和Kafka集成作为整个大数据处理架构的核心环节之一。

针对不同的Spark、Kafka版本,集成处理数据的方式分为两种:Receiver based Approach和Direct  Approach,不同集成版本处理方式的支持,可参考下图:

怎样解析SparkStreaming和Kafka集成的两种方式

Receiver based Approach

基于receiver的方式是使用kafka消费者高阶API实现的。

对于所有的receiver,它通过kafka接收的数据会被存储于spark的executors上,底层是写入BlockManager中,默认200ms生成一个block(通过配置参数spark.streaming.blockInterval决定)。然后由spark  streaming提交的job构建BlockRdd,最终以spark core任务的形式运行。

关于receiver方式,有以下几点需要注意:

建议通过参数spark.locality.wait调整数据本地性。该参数设置的不合理,比如设置为10而任务2s就处理结束,就会导致越来越多的任务调度到数据存在的executor上执行,导致任务执行缓慢甚至失败(要和数据倾斜区分开)

多个kafka输入的DStreams可以使用不同的groups、topics创建,使用多个receivers接收处理数据

两种receiver可靠的receiver:

限制消费者消费的最大速率涉及三个参数:

在产生job时,会将当前job有效范围内的所有block组成一个BlockRDD,一个block对应一个分区

kafka082版本消费者高阶API中,有分组的概念,建议使消费者组内的线程数(消费者个数)和kafka分区数保持一致。如果多于分区数,会有部分消费者处于空闲状态

Direct Approach

direct approach是spark  streaming不使用receiver集成kafka的方式,一般在企业生产环境中使用较多。相较于receiver,有以下特点:

1.不使用receiver

不需要创建多个kafka streams并聚合它们

减少不必要的CPU占用

减少了receiver接收数据写入BlockManager,然后运行时再通过blockId、网络传输、磁盘读取等来获取数据的整个过程,提升了效率

无需wal,进一步减少磁盘IO操作

2.direct方式生的rdd是KafkaRDD,它的分区数与kafka分区数保持一致一样多的rdd分区来消费,更方便我们对并行度进行控制

注意:在shuffle或者repartition操作后生成的rdd,这种对应关系会失效

3.可以手动维护offset,实现exactly once语义

4.数据本地性问题。在KafkaRDD在compute函数中,使用SimpleConsumer根据指定的topic、分区、offset去读取kafka数据。

但在010版本后,又存在假如kafka和spark处于同一集群存在数据本地性的问题

5.限制消费者消费的最大速率

spark.streaming.kafka.maxRatePerPartition:从每个kafka分区读取数据的最大速率(每秒记录数)。这是针对每个分区进行限速,需要事先知道kafka分区数,来评估系统的吞吐量。

上述内容就是怎样解析SparkStreaming和Kafka集成的两种方式,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. SparkStreaming整合kafka的补充
  2. SparkStreaming整合kafka

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sparkstreaming kafka

上一篇:大数据Kafka的核心技术有哪些

下一篇:Kafka和Redis各自的优缺点是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》