spark streaming使用微批次架构,把流式计算当做一系列连续的小规模批处理来对待。
默认情况下,数据分别存在于两个节点。
转化操作
DStream转化操作分为无状态和有状态操作两种。
无状态操作,每个批次的处理不依赖于之前批次的数据。
有状态操作,需要使用之前批次的数据或者是中间结果来计算当前批次的数据。
无状态操作
和rdd操作基本一致
有状态操作
有状态的操作需要打开检查点机制来确保容错性。
ssc.checkpoint(“hdfs://“)
updateStateByKey提供了跨批次的状态维护
基于窗口的操作
窗口的时长和滑动步长必须是 StreamContext的批次间隔的整数倍。
优化
批次的大小设置
500毫秒已经被证实是比较好的最小批次设置。
垃圾回收和内存使用
GC引起的问题,参考JVM部分
配置参数,spark.executor.extraJavaOptions