1、spark Streaming是一个微批处理的框架
2、批处理时间间隔 batchInterval
>> 表示在batchInterval时间内Spark 所接收的数据被当做一个批次做处理
3、批处理时间间隔(batchInterval)、窗口长度(windowLen)、窗口滑动时间(windowSlide)之间的关系
>> 3.1 spark提交作业最小的单位是batchInterval即在batchInterval时间内的数据作为数据处理最小的单位
>> 3.2 windowLen 表示处理的"数据量"即处理的数据量是batchInterval的N倍,N具体是几就要看windowLen是batchInterval的几倍
>> 3.3 windowSlide 表示提交作业的时长,也是batchInterval的整数倍
>> 3.4 eg:如果 batchInterval=t, windowLen=10t, windowSlide=3t
>> 此时,spark每次会处理最近10t时间内的数据,即每3t时间处理一次,处理的数据时最近10t内的数据
>> 在现实中比如天猫双11的销售额,每10秒钟处理一下最近24小时的销售额,这个10秒钟就是windowSlide,24小时就是windowLen
>> 由此可见,windowLen和windowSlide都必须是batchInterval的整数倍
4、DStream的原理以及与RDD的关系
>> 4.1 DStream是针对RDD的抽象,表示一系列在时间上连续的RDD
>> 4.2 Dstream中包含3大部分(1)、DStream之间的依赖关系,即操作链依赖 (2)、一系列时间上连续的RDD,使用HashMap<Time,RDD>持有,新的RDD不断的添加到这个hash表中,
>>而旧的不需要的则会从这个hash表中删除,(3)、用于对RDD进行计算的compute()函数,当对Dstream进行计算时,通过这个函数作用于RDD上
5、spark的容错处理
>> 5.1 Worker节点失效
>>5.1.1 如果数据的输入源在HDFS上,那么在任务恢复时可以再次计算出来
>>5.1.2 如果数据源是网络或者kafka则有可能丢失一部分数据
>>5.1.3 如果是转换操作可以实现精处理一次,如果是写出操作则能保证至少处理一次
>> 5.2 Driver节点失效
>> 可以通过设置checkPoint来预防Driver失效,设置checkPoint,sparkStreaming会周期性的将Dstream的元数据写入到HDFS中,如果Driver节点失效,则可以通过其记录点将StreamingContext回复
>> 如果使用checkPoint则通过 JavaStreamingContext.getOrCreate方法获取 JavaStreamingContext的对象,还需要注意的是当spark应用重新编译后就不能通过checkPoint恢复到原来的状态了
>> 所以在每次编译代码后要显示的把checkPoint路径下的文件删除
>> 5.3 这些情况在standalone模式下会自动回复,其他模式下则需要借助其他机制辅助
6、spark Streaming作业
>> 6.1 类似于spark作业,spark Streaming作业通过输出操作触发
>> 6.2 spark Streaming作业最终会转换为spark作业而被spark集群执行
大家喜欢多多关注,你的关注是我最大的动力。
作者:大数据首席数据师
链接:https://www.jianshu.com/p/f4826bdaeac3