如何解决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的自定义接收器进行火花流传输的其他建议?
使用了其他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 举报,一经查实,本站将立刻删除。