【问题标题】:Passing variables between EC2 instances in multi-step AWS data pipeline在多步 AWS 数据管道中的 EC2 实例之间传递变量
【发布时间】:2016-08-08 22:59:44
【问题描述】:

我有一个管道设置,其中有 3 个主要阶段:

1) 从压缩文件中获取输入,在 s3 中解压缩该文件。对每个文件运行一些基本验证以保证其完整性,转到第 2 步

2) 在不同的 EC2 实例上同时启动 2 个处理任务(并行化这一步为我们节省了大量时间,因此我们需要它以提高效率)。每个 EC2 实例将对步骤 1 中解压缩的 s3 中的一些文件运行数据处理步骤,每个实例所需的文件不同。

3) 在 2 个同时处理的进程都完成后,启动另一个 EC2 实例来进行最终的数据处理。完成此操作后,运行清理作业以从 s3 中删除解压缩的文件,只保留原始 zip 文件。

因此,我们遇到的问题之一是我们有 4 个 EC2 实例运行此管道流程,但我们希望每个 EC2 实例都可以访问一些全局参数。如果我们在单个实例上运行,我们当然可以使用 shell 变量来完成这个任务,但确实需要单独的实例来提高效率。目前我们最好的想法是在 s3 存储桶中存储一个平面文件,该文件可以访问这些全局变量,并在初始化时读取它们并在需要更改时写回它们。这很恶心,似乎应该有更好的方法,但我们还想不出一个。我看到有一种方法可以设置可以在管道的任何部分访问的参数,但看起来你只能在每个管道级别上设置它,而不是在管道每次运行的粒度上设置。有没有人有任何资源可以在这里提供帮助?非常感谢。

【问题讨论】:

  • 凹凸。有人有这方面的经验吗?

标签: amazon-web-services amazon-ec2 amazon-data-pipeline


【解决方案1】:

我们能够通过使用 DynamoDB 来跟踪变量/状态来解决这个问题。管道本身没有任何机制来执行此操作,除了参数值,不幸的是,参数值仅适用于每个管道,而不是每个作业。您需要设置一个 DynamoDB 实例,然后使用管道作业 ID 来跟踪状态,通过 CLI 工具或一些 SDK 进行连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多