Spark流与Pubsub-BigTable性能问题

问题描述

上下文:我正在研究一个火花流传输管道,以实现200K + RPS的高吞吐量。该管道正在使用多个自定义接收方流(60-80)从Pubsub中读取并写入BigTable ,并在两者之间进行了一些自定义转换以收集指标(不进行混洗)。我已在下面附上DAG。每个微批处理都有2个作业,1个用于空检查,1个用于写操作。批处理间隔为10s。 5-10个并发作业。执行程序的数量(每5个核心/ 13g,每GCP n1-standard-16机器3个执行程序)超过具有25个节点集群的流的数量

我面临一个处理时间不一致的问题,这导致管道在几个小时后的某个时间变得不稳定。这导致吞吐量下降。例如,有时一批740K记录的处理时间约为9s,而500K记录的处理时间最长为1.3分钟(请参见下面的屏幕截图)。

我检查了任务执行时间,发现对于500K批处理,并行性不足,而对于740K批处理,并行性很高(请参阅所附的屏幕截图)。有人可以提供帮助和建议,以解决此类问题并实现一致的处理时间吗?或其他有关使用PubSub的自定义接收器进行火花流传输的其他建议?

enter image description here

enter image description here

DAG用于管道:

enter image description here

740K批处理作业的任务执行图:

enter image description here

500K批处理作业的任务执行图:

enter image description here

enter image description here

使用了其他Spark配置,

“ spark.executor.instances”:“ 90”

“ spark.executor.heartbeat.maxFailures”:“ 6”,

“ spark.yarn.maxAppAttempts”:“ 4”,

“ spark.yarn.am.attemptFailuresValidityInterval”:“ 1h”,

“ spark.yarn.executor.failuresValidityInterval”:“ 1h”,

“ spark.task.maxFailure”:“ 8”,

“ spark.streaming.concurrentJobs”:“ 10”,

“ spark.streaming.numStreams”:“ 80”,

“ spark.scheduler.allocation.file”:“ / usr / lib / spark / conf / fairscheduler.xml”,

“ spark.streaming.dynamicAllocation.enabled”:“ true”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)