Spark Streaming 調優指南

SparkStreaming是架構在SparkCore上的一個「應用」,SparkStreaming主要由DStreamGraph、Job的生成、數據的接收和導入以及容錯四大模塊組成,咱們今天就從這四大模塊入手,看看每一個模塊都有什麼樣的調優方式緩存

這裏寫圖片描述

1 DStreamGraph

其實這部分主要是算子的使用優化,這個跟Spark調優的內容是相同,在這一部分能夠優化的內容有架構

  • 重複使用的rdd進行cache
  • 使用高性能的算子代替性能差的算子
    • reduceByKey\aggregateByKey代替groupByKey
    • 使用mappartition代替map
    • 使用foreachpartition代替foreach
  • 使用Kryo序列化代替Java序列化
  • filter以後使用coalesce減小小任務

2 Job的生成

這一部分主要涉及到的調優是batchInternal的調整,爲了程序不延遲地執行,合理的batchInternal是必要的app

3 數據的接收和導入

這一部分主要是針對數據的接受速度進行調優,若是接收速度大於處理數據,那麼程序會走向無限延遲最後崩潰的道路,因此主要的調優在於限速框架

  • 對於receiver和direct approach 方式都通用的
    spark.streaming.backpressure.enabled=true; sparkstreaming框架會自動地計算處理速度來控制數據的接受速度,建議開啓性能

  • receiver方式
    • spark.streaming.receiver.maxRate 來進行限速
    • spark.streaming.blockInternal 設置緩存在內存塊的大小,防止內存被撐爆
  • direct approach方式
    • spark.streaming.kafka.maxRatePartition來對每一個分區進行限速

4 容錯

主要是數據的容錯方式選擇優化

  • 熱備:默認開啓數據備份數爲2
  • 冷備:開啓WAL,將log保存到HDFS上,executor掛掉後能夠從hdfs上進行數據的恢復
  • 重放:對於數據源自己支持重放有效,如Kafka,失效後能夠經過offset值進行恢復
相關文章
相關標籤/搜索