首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡夫卡-火花流集成: DStreams和任务重用

卡夫卡-火花流集成: DStreams和任务重用
EN

Stack Overflow用户
提问于 2019-05-12 18:12:59
回答 1查看 187关注 0票数 1

我试图理解星火流(不是结构化流)的内部结构,特别是任务查看DStream的方式。我正在浏览斯派克在scala,这里中的源代码。我理解呼叫堆栈:

代码语言:javascript
运行
复制
ExecutorCoarseGrainedBackend (main) -> Executor (launchtask) -> TaskRunner (Runnable).run() -> task.run(...) 

我理解DStream确实是RDDs的哈希映射,但我试图理解任务查看DStream的方式。我知道基本上有两种方法来整合卡夫卡星火:

  • 基于接收机的高级卡夫卡消费API 这里,在每个批处理间隔(例如5秒)上创建一个新的(微)批处理,接收任务创建5个分区(=> 1秒块间隔),并将其顺流传递给常规任务。 问题:考虑到我们的例子,每5秒创建每个微批处理;所有微批的所有这些分区都应该以完全相同的方式在下游进行DAG处理,对于每个微批处理的相同分区id,是否重复使用相同的常规任务作为长时间运行的任务?例如: 如果时间上的分区的ubatch1 (P1、P2、P3、P4、P5)被分配给任务is (T1、T2、T3、T4、T5),那么会为创建分区的ubatch2 (P1‘、P2’、P3‘、P4’、P5')还是为创建新任务(en25 20#、en25 21#、p4‘、P5’)? 如果后者是这样的话,那么,如果您已经知道有一些任务在做完全相同的事情,并且可以作为长时间运行的任务重复使用,那么每5秒就必须通过网络将新的任务发送给执行者,这难道不是性能密集型的吗?
  • 使用低级别Kafka消费API的Direct 在这里,卡夫卡分区映射到一个火花分区,因此是一个任务。同样,考虑到主题t的5个Kafka分区,我们得到了5个火花分区及其相应的任务。 问题:说,T0的ubatch1有分配给任务的分区(P1、P2、P3、P4、P5) (T1、T2、T3、T4、T5)。时间上的分区(P1',P2',P3',P4',P5')是否也分配给同一组任务(T1,T2,T3,T4,T5),或者为ubatch2创建新任务(T6、T7、T8、T9、T10)?
EN

回答 1

Stack Overflow用户

发布于 2019-05-15 18:00:58

在浏览了Apache的源代码之后,下面是明确的答案:

这是一种非常直观的方法。

  1. 我们使用来自SparkContext的SparkContext (ssc)来创建和保存流上的转换序列,形式为DStream DAG,结束于ForEachDStream DStream,其中每个DStream都是RDDs的容器,即Hashmap。
  2. ForEachDStream在ssc的DStreamGraph中注册。
  3. 在ssc.start(-ing)执行时,JobScheduler将保存的计划放在一个事件循环中,该循环执行为每个DStream创建/提取每个DStream的RDD的每个ubatch间隔段,并将其保存在用于corr的HashMap中。DStream ( rememberDuration持续时间)(例如用于窗口)
  4. 在此过程中,创建RDD,结束于ForEachDStream中指定的操作,然后将一个新作业提交给DAG。

这个循环重复每一个ubatch间隔秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56102094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档