流式计算在大数据生态中也是非常地有份量,Spark Streaming 在过去很长一段时间都是最常用的流式计算引擎,直到出现了 Flink。所以常常有人问我,有了 Flink 之后 Spark Streaming 还需要学吗,答案是肯定的,Spark Streaming 目前在大部分公司的应用还是非常广泛的,虽然有被 Flink 替代的趋势,但是技术的迭代是需要消耗成本的,并不是每个公司都愿意去承担这个成本,而且大部分公司的业务需求也并没有那么复杂,所以很多公司还是抱着能用就行的心态。
另外,Spark Streaming 依附着强大的 Spark 生态,Spark 能做的事情太多了,Flink 除了流式计算,在其他方面目前都还是不如 Spark 的,所以直接使用 Spark 全家桶来做计算目前也还是一个比较常规的选择。
本篇面试内容划重点:架构、容错、反压、窗口函数。
SparkStreaming 的底层执行流程
Driver 端
- StreamingContext 是程序的入口,在 Driver 端执行,负责初始化和控制图中