【问题标题】:Which one is a better scheduler in AWS Data Pipeline and AWS SWFAWS Data Pipeline 和 AWS SWF 中哪个调度器更好
【发布时间】:2015-04-04 04:38:05
【问题描述】:

我有一种情况,我必须根据此条件"It has to process all files in s3 and then start again when there are files in s3" 触发我的工作流。但是,我发现 Data Pipeline 会在每个计划的持续时间启动,而 SWF 会启动和结束作业,这也会关闭我的 EMR 集群。这两种情况都不适合这种情况。因此,对于必须根据条件启动或触发的进程,我发现两者都不合适。有没有其他选择?或者是 SWF 和 Data Pipeline 之一可以执行我的任务。

【问题讨论】:

    标签: amazon-web-services cron amazon-swf amazon-data-pipeline


    【解决方案1】:

    看看 Lambda。您可以设置一个触发器,以便在每次将新对象上传到 S3 时调用您的代码。

    【讨论】:

    • 如果我有 1000 个文件同时出现,它会同时处理所有这些文件,并且仍然继续处理每个即将到来的文件。
    • 这就是声明:aws.amazon.com/lambda/details - “您的代码可以处理的请求数量没有限制”
    • 它有帮助。有样品吗?
    • 我没有找到一种方法可以在 Lambda 上运行我的执行某些计算的 java jar 文件。
    • Lambda 目前只支持 node.js 代码,尽管考虑到亚马逊的历史,我怀疑在未来的某个时候 java 将成为一个选项。
    【解决方案2】:

    这更像是@Chris 的答案的推论。您仍然使用 Lambda - 听 S3 - 放置事件触发器 - 所以每次创建新对象时 - 都会调用 lamdba 函数。

    Lambda 函数可以获取 S3 对象的密钥并将其放入 SQS;你可以运行一个单独的工作进程,它可以从队列中挑选项目。

    重申您的声明,

    1. 它必须处理 s3 中的所有文件 [ Can be Done by Lambda ]
    2. 然后当s3中有文件时重新开始[可由SQS & EC2完成]

    【讨论】:

    • 这实际上是避免轮询 S3 的好方法。
    • 这种方法的另一个好处是能够发现实例。您可以排队等候 14 天;可以每天或每周执行一次 cron / 进程来处理队列。都是解耦的
    • 看看Configuring Amazon S3 Event Notifications - S3 可以自动触发 SQS、SNS 和 Lambda,所以除非我遗漏了什么,否则使用 Lambda 并推送到 SQS 没有任何意义。
    • 完全同意你的观点;另外-想法是做一点预处理[在lamdba中/使用lambda]-而不是拥有-2个队列[实际上试图捍卫我的答案:P :)]
    • @Naveen:Lambda 似乎正在相当快地添加功能,所以当有人再次发现这个问题时,可能会出现 2015 年 2 月不可用的东西。
    【解决方案3】:

    Data Pipeline 支持Preconconditions 的概念,它可以根据条件触发您的执行。 S3KeyExists 前提条件似乎是您正在寻找的。当存在特定的 S3 密钥时,这将开始执行您的活动。

    Data Pipeline 还将根据活动的执行来管理您的资源(EC2 或 EMR)的创建和终止。如果您希望使用自己的 EC2 实例或 EMR 集群,您可以查看工作组。工作组资源由你管理,不会被服务终止。

    【讨论】:

    • 你能推荐任何java示例吗?
    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2014-07-13
    相关资源
    最近更新 更多