代码之家  ›  专栏  ›  技术社区  ›  Sheel Pancholi

Kafka-Spark流集成:任务与数据流的关系

  •  0
  • Sheel Pancholi  · 技术社区  · 5 年前

    here

    ExecutorCoarseGrainedBackend (main) -> Executor (launchtask) -> TaskRunner (Runnable).run() -> task.run(...) 
    

    • 接收器 基于使用高级Kafka消费api

      在这里,每个批处理间隔(比如5秒)创建一个新的(微)批处理,其中包含5个分区(=>1秒阻塞间隔) 接收器 任务并交给下游 常规

      问题: 有规律的

      如果 乌巴奇1 (P1、P2、P3、P4、P5) 在时间 T0级 ,将 乌巴奇2 隔墙数量 (P1',P2',P3',P4',P5') 在时间 T5级 也可以分配给同一组任务 (T1、T2、T3、T4、T5) 还是会有新的任务 (T6、T7、T8、T9、T10) 为创建 乌巴奇2 ?

      如果是后者,那么当您已经知道有任务在做完全相同的事情并且可以作为长时间运行的任务重新使用时,每5秒就必须通过网络将新任务发送给执行者,这不是性能密集型的吗?

    • 直接

      t型

      问题: 说吧,那个 乌巴奇1 T0级 有分区 (P1、P2、P3、P4、P5) (T1、T2、T3、T4、T5)。 威尔 乌巴奇2 隔墙数量 (P1',P2',P3',P4',P5') 在时间 T5级 也可以分配给同一组任务 (T1、T2、T3、T4、T5) 为创建 乌巴奇2 ?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Sheel Pancholi    5 年前

    在阅读了apachespark的源代码之后,这里给出了一个明确的答案:

    1. 我们使用 以数据流DAG的形式在流上创建并保存以 DStream,其中每个DStream是rdd的容器,即Hashmap
    2. 这个 前驱流 在的数据流图中注册 .
    3. ssc.启动 (-ing)执行时,JobScheduler将保存的计划放在事件循环上,该循环每 ubatch间隔秒 为每个数据流创建/提取RDD,并从每个数据流中提取RDD,然后将其保存在
    4. 并在此过程中创建以中指定的操作结尾的RDD DAG 然后向DAG调度程序提交一个新作业。

    此循环每间隔秒重复一次。