开发者社区> 问答> 正文

sparkstreaming异步消费kafka疑问

假设A topic有3个分区(p0、p1、p2),Spark streaming分配1个Executor,3个CPU。
streaming会在这个Executor上启动3个Task(t0、t1、t2),这3个task会分别消费A topic
上3个分区的数据,然后消费完将offset写到zk上。
假设t1和t2消费的快,而t0很慢。我sparkstreaming是以异步方式消费的,那么这
时Executor上会再启动3个Task(t0、t1、t2),那这3个task很快就消费完了,然后消费完
将offset写到zk上。这时,第一批次的t0也消费完了,那么这时不是会造成offse覆盖?

展开
收起
hbase小能手 2018-11-08 14:04:34 2363 0
1 条回答
写回答
取消 提交回答
  • HBase是一个分布式的、面向列的开源数据库,一个结构化数据的分布式存储系统。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。阿里云HBase技术团队共同探讨HBase及其生态的问题。

    你好,
    1、spark streaming是基于mini batch的;在你的场景只有第一批次的所有task(t0、t1、t2)都运行完了之后,才会去调度第二批次的(t0、t1、t2)task,不会有offset覆盖的问题。
    2、至于那个消费慢的t0需要调查原因呢,如果是因为分区t0的数据比较多,spark streaming的receiver可以按照读取的数据条数做切分的。
    3、另外你这边的“sparkstreaming是以异步方式消费” 不是太理解

    2019-07-17 23:13:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载