1 说一下spark streaming?
spark streaming是抽象了离散的数据流Dstream,包括一组连续的RDD,对Dstream的操作最终会映射到内部的RDD上,构建成Dstream链,提交为Job执行
spark streaming中最为重要的是批处理间隔,指的是spark streaming以多少时间间隔为单位处理数据;批处理间隔决定了任务提交的频率以及数据处理的延迟。
sparm streaming中比较重要的概念是批处理间隔、滑动间隔与窗口间隔。滑动窗口与窗口间隔必须是批处理的整数倍。滑动间隔一般与批处理间隔相同,而窗口间隔要大一些。
备注:
窗口间隔(窗口长度):窗口持续的时间,只有窗口的长度满足了才会触发批数据的处理
滑动间隔:经过多长时间窗口滑动一次形成新的窗口
批次间隔:每一个批次执行的时间
一般滑动间隔 = 批次间隔 < 窗口间隔 整数倍的关系
2 Spark streaming是如何处理反压?
当batch processing time > batch interval 时,即说明:处理数据的速度小于接受数据的速度,若这种情况持续时间过长,会内存堆积,导致Receiver所在的Executor内存溢出,即使溢写磁盘也会加大延迟。
可以设置Receiver的数据接受速率,设置过低会造成资源利用率低;
Spark1.5引入了反压机制,通过开启使用backpressure机制(默认是不开启),来动态控制数据接受速率来适配集群数据处理能力。
备注:优化点,开启反压机制.....
3 Spark streaming支持的输入源有那些?
socket 、Text、 flume 、kafka、file、 network
4 Spark streaming和Spark 作业的关系?
Spark streaming作业最终会转化为spark作业提交并执行,我们对Dstream的操作最终会映射到内部的RDD上,构建成Dstream链会转化为RDD链,以作业形式提交执行。
5 Spark中persist与cache的区别?
cache()调用了persist(),它只是一个默认的缓存级别MEMORY_ONLY
persist()可以根据情况设置其它的缓存级别;persist有一个StorageLevel参数,表示Rdd的缓存级别