如果群集资源少,处理数据较慢,则可以通过设置最大速率限制来限制接收器。在Spark 1.5中,引入了一项称为反压机制的功能,无需设置此速率限制,因为Spark Streaming会自动计算出速率限制,并在处理条件发生变化时动态调整。可以通过设置来启用配置参数。详细参数配置如下:
参数名称 | 默认值 | 含义 |
spark.streaming.backpressure.enabled | false | 是否启用反压机制 |
spark.streaming.backpressure.initialRate | no set | 每个接收器初次接收数据的最大速率 |
spark.streaming.blockInterval | 200ms | 数据块分块的时间间隔 |
spark.streaming.receiver.maxRate | no set | 每个接收器最大接收速率(每秒记录数) |
spark.streaming.receiver.writeAheadLog.enable | false | 启用预写日志 |
spark.streaming.unpersist | true | 清除sparkstreaming持久化的RDD |
spark.streaming.stopGracefullyOnShutdown | false | Spark StreamingContext 在JVM关闭时立即关闭 |
spark.streaming.kafka.maxRatePerPartition | no set | 从每个kafka分区中读取数据的速率(每秒记录数) |
spark.streaming.kafka.minRatePerPartition | 1 | 从每个kafka分区中读取数据的速率(每秒记录数) |
spark.streaming.kafka.maxRetries | 1 | 驱动程序在每个kafka分区的leader中寻找最新的偏移量的最大重试次数(设置为1,表示重试次数为2) |
spark.streaming.ui.retainedBatches | 1000 | 在垃圾收集之前,Spark Streaming UI和状态API记住的批次数量 |
spark.streaming.driver.writeAheadLog.closeFileAfterWrite | false | 在驱动器端写入预写日志后是否关闭文件 |
spark.streaming.receiver.writeAheadLog.closeFileAfterWrite | false | 在接收器端写入预写日志后是否关闭文件 |
详情见http://spark.apache.org/docs/latest/configuration.html#spark-streaming