apache-spark - Spark Streaming 接收器只处理一条记录
问题描述
我在 Spark Streaming 2.2.1 作业中有 16 个接收器。一段时间后,一些接收器处理的记录越来越少,最终每秒只处理一条记录。可以在屏幕截图中观察到该行为:
虽然我知道根本原因很难找到并且不明显,但有没有办法可以进一步调试这个问题?目前我不知道从哪里开始挖掘。会不会和背压有关?
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
解决方案
似乎问题在运行 30 分钟后开始显现。我认为背压可能是一个原因。根据这篇文章:
激活背压后,驱动程序监控当前的批处理调度延迟和处理时间,并动态调整接收器的最大速率。可以在接收器日志中验证新速率限制的通信:
2016-12-06 08:27:02,572 INFO org.apache.spark.streaming.receiver.ReceiverSupervisorImpl 收到新的速率限制:51。
以下是我建议您尝试的方法:
- 检查接收器日志以查看是否触发了 backpress。
- 检查您的流接收器以查看是否有任何错误。
- 检查 YARN 资源管理器的资源利用率。
- 调整 Spark 参数,看看是否有影响。
推荐阅读
- android - Jenkins build failed with stripe 无法确定任务':stripe:check'的依赖关系
- android - 是否可以将包含一些子项的布局添加到 listView
- ios - 快速避免索引超出范围错误
- fortran - 将可选参数传递给子程序
- tensorflow - 在 Ubuntu Bionics 上找不到 Tensorflow GPU /device:GPU:0
- python-3.x - python spyder-ide在拆分窗口之间切换
- arrays - Excel IF 函数查询 - 日期
- rest - 在 post 方法 spring boot 的情况下调用经过身份验证的 rest web 服务失败
- node.js - WebStorm 调试器第一次未附加
- security - 如何禁用 tomcat 以纯文本形式记录密码?