使用自定义 AMI 运行 Amazon EMR?

6
我需要在亚马逊上使用 Hadoop 流处理来运行一个自定义 C++ 作业,并且计划使用 Map Reduce。C++ 映射器可执行文件依赖于数十个自定义库,其中一些构建起来耗时。我期望 EMR 支持自定义 AMIs(已经有一个构建好的)。然而,在仔细查看文档后,似乎只能在预定义的映像上运行 EMR:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-cli-commands.html。我是否遗漏了什么?如果确实只支持预定义的 AMI,则将其运行的最佳选项是什么?显然,可执行文件在 s3 上,但我真的可以打包它,以使其不再依赖任何共享库吗?谢谢。
3个回答

4
您是正确的。由于在Hadoop集群节点上需要许多软件工具和配置,因此只允许使用Amazon提供的AMI在EMR上运行。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
定制AMIs确实是一个非常有趣的用例。您可以选择使用Qubole,它提供了内置支持定制构建的AMIs,其中您可以安装所有必要的库以及与Qubole的所有强大功能相结合,如自动缩放、Spot实例等等!
免责声明:我在Qubole工作。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接