使用自定义AMI运行Amazon EMR?

时间:2014-01-07 21:37:22

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

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

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

我错过了什么吗?实际上,如果只支持预定义的AMI,那么运行它的最佳选择是什么?显然,可执行文件是在s3上,但是我可以将它实际捆绑起来,这样它根本不依赖于共享库吗?

感谢。

3 个答案:

答案 0 :(得分:4)

您是对的,因为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快照和卷 - 但这的可行性实际上取决于您的用例。

答案 1 :(得分:2)

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

免责声明:我为Qubole工作。

答案 2 :(得分:1)

我也在调查。基于第一次看文档的最佳选择来实现这一点是通过自定义引导选项。

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

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