【问题标题】:Running Amazon EMR with a custom AMI?使用自定义 AMI 运行 Amazon EMR?
【发布时间】:2014-01-25 18:34:07
【问题描述】:

我需要在 Amazon 上将自定义 C++ 作业作为 Map Reduce 运行,并计划为此使用 Hadoop 流。 C++ 映射器可执行文件依赖于数十个自定义库,其中一些构建起来非常耗时。

我希望 EMR 支持自定义 AMI(已经构建了一个)。但是,仔细查看文档后,似乎只能在预定义的图像上运行 EMR:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-cli-commands.html

我错过了什么吗?如果确实只支持预定义的 AMI,那么让它运行的最佳选择是什么?显然,可执行文件位于 s3 上,但我可以将它捆绑起来,使其完全不依赖于共享库吗?

谢谢。

【问题讨论】:

    标签: c++ hadoop amazon-web-services amazon-emr amazon-ami


    【解决方案1】:

    您是对的,因为 Hadoop 集群节点上需要许多软件工具和配置,因此在 EMR 上只允许使用 Amazon 提供的 AMI。 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-ami.html

    您可以使用标准引导技术来安装在集群上运行所需的任何其他软件。 请参阅 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html 了解有关引导操作的更多信息。

    回到您的用例: 为什么在您的用例中引导需要这么长时间?因为有很多包?因为你是从源代码编译它们?

    在后一种情况下,构建 .deb 包并从自定义存储库安装它们以加快引导过程可能是值得的。

    如果只是因为你有很多包要安装,恐怕今天没有明显的解决方案。我可以考虑在引导期间创建和附加 EBS 快照和卷 - 但这样做的可行性实际上取决于您的用例。

    【讨论】:

      【解决方案2】:

      自定义 AMI 确实是一个非常有趣的用例。一种选择是使用 Qubole,它为自定义构建的 AMI 提供内置支持,在这种情况下,您可以安装所有必要的库以及 Qubole 的所有酷功能,例如支持自动缩放、现场实例等等!

      免责声明:我为 Qubole 工作。

      【讨论】:

        【解决方案3】:

        我也在调查同样的事情。基于第一次查看文档,实现这一目标的最佳选择是通过自定义引导选项。

        http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html

        但是对我们来说,运行自定义脚本需要 15-20 分钟。我希望有一种方法可以自定义 AMI 并将所需的软件添加到 AMI 中,而不是在每个节点出现时安装它。

        【讨论】:

          猜你喜欢
          • 2017-01-11
          • 2015-06-09
          • 2014-11-27
          • 1970-01-01
          • 2012-06-19
          • 2019-07-01
          • 1970-01-01
          • 2015-01-04
          • 2018-03-04
          相关资源
          最近更新 更多