我们有运行,每30分钟,并采取15秒完成作业的火花流作业。什么是建议在此情况下的最佳实践。我想我可以安排AWS datapipeline运行每30分钟,使EMR 15秒后结束,将被重建。它是推荐的方法?
对于需要15 seconds
上运行EMR它是浪费时间和资源工作,你可能会等待几分钟的EMR集群来引导。
AWS数据管道或AWS批才有意义只有当你有一个长期运行的工作。
首先,确保你真的需要从你描述它可能是矫枉过正,因为火花。
LAMBDA与CloudWatch的事件调度可能是你所需要的东西这么快的工作,没有基础设施的管理。
对于流媒体相关的工作 - >关键是避免IO在你的情况 - 作为作业似乎只需要15秒。把你的消息队列(AWS SQS)。具有通过CloudWatch的事件触发的AWS阶跃函数(在你的情况下,每30分钟实现比如cron时间表 - 调用一个AWS步骤功能)从SQS读取消息,并在拉姆达理想处理它们。
所以一个选项(无服务器):
流消息 - > AWS SQS - >(每30分钟的CloudWatch触发一个阶跃函数) - >触发一个lambda服务来处理队列中的所有消息
选项2:
流消息---> AWS SQS - >使用具有预定任务的是唤醒每30分钟,并从队列中读取的消息并在内存中处理它Python应用程序/爪哇Spring应用程序过程的消息。
我已经用于解决分析问题的选项2,虽然我的分析问题,用了10分钟,是数据intensive.Option 2此外,需要监控的地方运行进程的虚拟机(容器)。在另一方面选项1是无服务器。最后,这一切都归结到你已经到位的软件栈和处理流数据所需的软件。