spark streaming常用调优
1、Spark Streaming第一次运行不丢失数据
kafka参数 auto.offset.reset 参数设置成earliest 从最初始偏移量开始消费数据。
2、Spark Streaming精准一次消费
- 手动维护偏移量
- 处理完业务数据后,再进行提交偏移量操作
- 极端情况下,如在提交偏移量时断网或者停电会造成spark程序第二次启动时重复消费问题,所以在涉及到金额或者精确性非常高的场景会使用事务保证精确一次消费。下级数据库需支持事务
3、Spark Streaming控制每秒消费数据的速度
通过spark.streaming.kafka.maxRatePerPartition参数来设置Spark Streaming从kafka每分区每秒拉取的条数。比如10个分区,每个分区每秒最多拉去1000条。则每秒最高拉去10000条数据。
4、spark streaming背压机制
把spark.streaming.backpressure.enabled 参数设置为ture,开启背压机制后Spark Streaming会根据延迟动态去kafka消费数据,上限由spark.streaming.kafka.maxRatePerPartition参数控制,
所以两个参数一般会一起使用。
5、spark streaming优雅关闭
把spark.streaming.stopGracefullyOnShutdown参数设置成ture,Spark会在JVM关闭时正常关闭StreamingContext,而不是立马关闭
Kill 命令:yarn application -kill 后面跟 applicationid