Apache spark Kafka-Spark流媒体集成:数据流和任务重用
我试图理解Spark流(非结构化流)的内部结构,特别是任务看到数据流的方式。我正在复习scala中Spark的源代码。我了解调用堆栈:Apache spark Kafka-Spark流媒体集成:数据流和任务重用,apache-spark,apache-kafka,spark-streaming,spark-streaming-kafka,dstream,Apache Spark,Apache Kafka,Spark Streaming,Spark Streaming Kafka,Dstream,我试图理解Spark流(非结构化流)的内部结构,特别是任务看到数据流的方式。我正在复习scala中Spark的源代码。我了解调用堆栈: ExecutorCoarseGrainedBackend (main) -> Executor (launchtask) -> TaskRunner (Runnable).run() -> task.run(...) 我知道DStream实际上是rdd的hashmap,但我试图理解任务看到DStream的方式。我知道卡夫卡星火融合基本上有两
ExecutorCoarseGrainedBackend (main) -> Executor (launchtask) -> TaskRunner (Runnable).run() -> task.run(...)
我知道DStream实际上是rdd的hashmap,但我试图理解任务看到DStream的方式。我知道卡夫卡星火融合基本上有两种方法:
- 基于接收器,使用高级卡夫卡消费API 在这里,接收方任务以每一个批间隔(比如5秒)创建一个新的(微)批,其中包含5个分区(=>1秒的块间隔),并将其交给下游的常规任务 问题:考虑我们的例子,每个微博客每5秒创建一次;有5个分区,所有微批次的所有这些分区都应该以完全相同的方式向下游DAG,相同的常规任务是否作为长时间运行的任务重复使用每个微批次(RDD)的相同分区id?e、 g 如果T0时分区(P1、P2、P3、P4、P5)的ubatch1分配给任务ID(T1、T2、T3、T4、T5),那么T5时分区(P1',P2',P3',P4',P5')的ubatch2是否也分配给同一组任务(T1、T2、T3、T4、T5),或者是否为ubatch2创建新任务(T6、T7、T8、T9、T10) 如果是后一种情况,那么当您已经知道有任务在做完全相同的事情并且可以作为长时间运行的任务重复使用时,每5秒通过网络向执行者发送一次新任务不是性能密集型任务吗
- 直接使用低级卡夫卡消费API 这里,Kafka分区映射到Spark分区,因此是一个任务。同样,考虑主题t的5个Kafka分区,我们得到5个Spark分区及其相应的任务 问题:比如说,T0处的ubatch1具有分配给任务(T1、T2、T3、T4、T5)的分区(P1、P2、P3、P4、P5)。在时间T5,分区(P1',P2',P3',P4',P5')的ubatch2是否也分配给同一组任务(T1,T2,T3,T4,T5),或者是否为ubatch2创建新任务(T6,T7,T8,T9,T10)
此循环每间隔秒重复一次。在浏览Apache Spark的源代码之后,下面是最终答案: 这是一个非常直观的方法
这个循环每隔一秒重复一次。我同意这一点。我试图深入了解这一点,以便能够自下而上地理解整个画面。我想自己写一本。。过于简单的一个。。它将帮助我理解很多方面,非常高贵,有点像我自己,但也有结构化的流媒体,它并没有完全让生活变得容易。一天只有这么多小时!有人能帮我理解吗?在这方面,从接收端转向基于直接的方法,甚至转向结构化流媒体都没有问题。我只是想了解每一种方法的内在细节,以便更好地理解进化的时间线、存在的问题和采取的方法。我同意这一点。我试图深入了解这一点,以便能够自下而上地理解整个画面。我想自己写一本。。过于简单的一个。。它将帮助我理解很多方面,非常高贵,有点像我自己,但也有结构化的流媒体,它并没有完全让生活变得容易。一天只有这么多小时!有人能帮我理解吗?在这方面,从接收端转向基于直接的方法,甚至转向结构化流媒体都没有问题。我只是想了解每一个的内部细节,以便更好地理解进化的时间线、存在的问题和采取的方法。