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
等算法實現實時模型更新。