首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花流作业的巨大延迟

火花流作业的巨大延迟
EN

Stack Overflow用户
提问于 2018-03-04 14:24:23
回答 1查看 2K关注 0票数 1

我有一个几乎实时的火花流应用,用于图像识别,其中接收器从卡夫卡获得输入帧。我有6个接收器每个执行者,5个执行者在总数,我可以看到30个活动任务每次迭代在星火UI。

我的问题是能够从kafka读取850帧/秒,但处理任务非常缓慢,这就是为什么我面临背压相关的问题。在每一批中,任务将运行少量的tensorflow模型,首先使用keras.model_loads加载模型,然后执行其他相关处理,以便从模型中获得预测。第一tensorflow模型的输出是第二tensorflow模型的输入,第二tensorflow模型也依次加载另一个模型并在其之上进行预测。最后,#2的输出是对模型#3的输入,它做同样的事情,加载模型并执行预测。最后的预测是把卡夫卡送回另一个话题。有了每个任务的流程流,处理单个任务的总延迟就会出现在10到15秒之间,这对于火花流应用程序来说是巨大的。

有人能帮我吗,我怎么才能让这个程序更快?

记住,我必须在我的程序中使用这些定制的tensorflow模型来获得最终的输出。

我脑子里有以下几点想法:

  • 选项1-将火花流替换为结构化流
  • 选项2-中断顺序处理,并将每个子进程放在单独的RDD中,即RDD1中的模型#1处理,RDD2中的模型#2处理,等等。
  • 选项3-重写自定义tensorflow功能仅在spark,目前,这是一个单一的python程序,我正在使用的每项任务。不过,我对这个方案还不太确定,甚至到目前为止,我甚至没有检查过这个方案的可行性。但我所假设的是,如果我能够做到这一点,我将完全控制模型的分布。因此,可以在AWS集群上的GPU机器上实现这些任务的快速处理,这是目前尚未实现的。
EN

回答 1

Stack Overflow用户

发布于 2018-03-04 17:34:32

调整火花作业是最耗时的部分,您可以试用以下选项-

  • 通过这个链接,这是必须为任何火花作业调优http://spark.apache.org/docs/latest/streaming-programming-guide.html#performance-tuning
  • 尝试使用直接卡夫卡摄取而不是基于接收器的方法。
  • 尝试从日志中分析并找出执行过程中最耗时的部分。如果您的自定义代码需要很长的时间,因为顺序处理,火花调优将不会有帮助。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49096436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档