spark流式接收器仅处理一条记录

vuv7lop3  于 2021-05-26  发布在  Spark
关注(0)|答案(1)|浏览(317)

我有16个接收器在Spark流2.2.1工作。一段时间后,一些接收器处理的记录越来越少,最终每秒只处理一个记录。在屏幕截图上可以观察到这种行为:

虽然我知道根本原因很难找到,也不明显,但有没有办法进一步调试这个问题?目前我不知道从哪里开始挖掘。可能和背压有关吗?
spark流属性:

spark.app.id    application_1599135282140_1222
spark.cores.max 64
spark.driver.cores  4
spark.driver.extraJavaOptions -XX:+PrintFlagsFinal -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dump/ -Dlog4j.configuration=file:///tmp/4f892127ad794245aef295c97ccbc5c9/driver_log4j.properties
spark.driver.maxResultSize  3840m
spark.driver.memory 4g
spark.driver.port   36201
spark.dynamicAllocation.enabled false
spark.dynamicAllocation.maxExecutors    10000
spark.dynamicAllocation.minExecutors    1
spark.eventLog.enabled  false
spark.executor.cores    4
spark.executor.extraJavaOptions -XX:+PrintFlagsFinal -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dump/
spark.executor.id   driver
spark.executor.instances    16
spark.executor.memory   4g
spark.jars  file:/tmp/4f892127ad794245aef295c97ccbc5c9/main-e41d1cc.jar
spark.master    yarn
spark.rpc.message.maxSize   512
spark.scheduler.maxRegisteredResourcesWaitingTime   300s
spark.scheduler.minRegisteredResourcesRatio 1.0
spark.scheduler.mode    FAIR
spark.shuffle.service.enabled   true
spark.sql.cbo.enabled   true
spark.streaming.backpressure.enabled    true
spark.streaming.backpressure.initialRate    25
spark.streaming.backpressure.pid.minRate    1
spark.streaming.concurrentJobs  1
spark.streaming.receiver.maxRate    100
spark.submit.deployMode client
uajslkp6

uajslkp61#

似乎问题在运行30分钟后开始显现。我认为背压可能是一个原因。根据这篇文章:
利用激活的背压,驱动程序监控当前的批调度延迟和处理时间,并动态调整接收器的最大速率。可以在接收器日志中验证新速率限制的通信:
2016-12-06 08:27:02572 info org.apache.spark.streaming.receiver.receiversupervisorimpl收到新的速率限制:51。
以下是我建议您尝试的方法:
检查接收器日志以查看是否触发了反压。
检查您的流接收器,看看是否有任何错误。
检查Yarn资源管理器的资源利用率。
调整spark参数,看看这是否有影响。

相关问题