学习spark-streaming收获
1.流处理的核心概念
•实时 vs微批处理:理解了 Spark
Streaming 的微批处理(Micro-Batch)模型,将流数据切分为小批次(如1秒间隔)进行处理,与真正的流处理(如Flink)的区别。
・DStream (Discretized Stream):掌握了
DStream 的抽象,它是一系列连续的RDD,通过转换操作(如 map、reduceByKey)实现流式计算。
2. Spark Streaming 的架构
•Driver 和 Worker 分工:Driver 负责调度任务,Worker 执行具体的计算任务,与 Spark
核心架构一致。
•容错机制:通过 RDD的血缘(Lineage)和检查点(Checkpoint) 实现故障恢复,确保数据不丢失。
•背压机制(Backpressure):动态调整接收
速率以避免数据釈圧(Spark 1.5+支持)。
3.关键技术与 API 使用
• 输入源 (Input Sources):熟悉了从
Kafka、Socket、HDFS、自定义源等读取数据的方法,尤其是 Kafka Direct API 的高效集成。
• 窗口操作(Window Operations):学会了滑动窗口(如 window、
reduceByKeyAndWindow)的应用场景,例如统计最近 N秒的指标。
•状态管理(Stateful Processing):通过
updateStateByKey 或 mapwithState 实现跨批次的状态维护(如用户会话跟踪)。
4.性能优化与调优
•并行度调整:通过 repartition 或修改批次间隔(Batch Interval)优化吞吐量。
•资源分配:合理设置 Executor 内存、CPU核心数,避免 GC开销或数据倾斜。
•检查点优化:合理配置检查点目录和频率,平衡容错和性能。
5.与其他工具的集成
• Kafka 集成:掌握了
KafkaUtils.createDirectStream 的使用,理解了如何保证 Exactly-Once 语义。
・Spark SQL 結合:在流処理中週用 Spark
SQL 分析数据(如将 DStream 转为
DataFrame) .
•机器学习:使用
StreamingLinearRegressionWithSGD
等算法实现实时模型更新。