68°

Spark Streaming调优 kafka

当使用Spark Streaming的Direct方式接受Kafka数据时, 如果kafka中的数据过多, 会导致spark数据积压, 无法准时完成作业, 甚至OOM。

Spark的运行指标及调优的目标


共两个运行指标:调度延迟与执行延迟。
调优的目标是在SparkStreaming设定的批次时间间隔内, spark能够完整处理完一个批次, 而不会出现无法准时完成作业, 数据堆压等问题。

限制Kafka的最大流量


配置项spark.streaming.kafka.maxRatePerPartition, 设置了每秒钟从每个分区中所获得的数据的最大值, 每个批次处理的数据为 批次时间分区数N

背压机制(back pressure) 弹性地调整Kafka的流量


在上一节中的配置项难以调控, 具体的值不易设置, 可以使用back pressure机制来动态地调整从kafka获得的数据量。 back pressure机制会根据上一批次的运行情况来动态调整获取的数据量。
打开back pressure: 设置spark.streaming.backpressure.enabledtrue

二者结合来调控kafka的流量


在开启背压机制时, 程序运行的第一个批次没有其他批次的运行情况作为参考, 会获取相当多的数据, 可能会导致OOM, 因此需要设置kafka的最大流量。 在两者均开启的情况下, 背压机制划定了数据量的下限, 另一个划定了上限, 可以有效控制SparkStreaming所接受到的数据量。

本文由【d】发布于开源中国,原文链接:https://my.oschina.net/dreamness/blog/3072799

全部评论: 0

    我有话说: