使用自定义AMI运行Amazon EMR
Running Amazon EMR with a custom AMI?
我需要在亚马逊上运行一个自定义的C++作业作为Map Reduce,并计划使用Hadoop流。C++映射程序可执行文件依赖于数十个自定义库,其中一些库的构建非常耗时。
我期望EMR支持自定义AMI(已经构建了一个)。但是,仔细查看文档后,似乎只能在预定义的图像上运行EMR:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-cli-commands.html.
我是不是错过了什么?如果确实只支持预定义的AMI,那么让它运行的最佳选项是什么?很明显,可执行文件在s3上,但我真的能把它捆绑起来,让它完全不依赖于共享的lib吗?
谢谢。
您是对的,因为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快照和卷,但其可行性实际上取决于您的用例。
Custom AMI确实是一个非常有趣的用例。您的一个选择是使用Qubole,它为自定义构建的AMI提供内置支持,在您的情况下,安装所有必要的库,再加上Qubole的所有酷功能,如对自动缩放、点实例等的支持!
免责声明:我为Qubole。
我也在调查这件事。在第一次查看文档的基础上,实现这一点的最佳选择是通过自定义引导选项。
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html
然而,对我们来说,运行自定义脚本需要15-20分钟。我希望有一种方法可以定制AMI并将所需的软件添加到AMI中,而不是在每个节点上安装它。
- Amazon aws-cpp-sdk Index Faces 给出段错误
- 从 Amazon FreeRTOS 的串行问题中读取
- Amazon AWS CPP SDK 获取 S3 存储桶下载进度
- 在 Amazon Linux 上"cmake" Libigl 时找不到 Libigl
- 使用AWS CPP SDK拒绝Amazon S3的访问
- Amazon EC2的CrossCompile C 二进制
- 使用自定义AMI运行Amazon EMR
- 使用 libcurl 调用 Amazon s3 RESTful 服务
- Amazon Web Services 和 mysql c++ 连接器无法从 EC2 instace 连接到 RDS 实
- 对于不存在的对象,Amazon S3 HEAD 请求返回空响应,而不是 404
- 如何在 Amazon EC2(运行 Ubuntu Lucid)上设置 Nginx,并针对 FastCGI/FastCGI
- 如何从Arch Linux构建基本64位Amazon Linux
- 调用第三方api,如amazon/ebay,使用c++获取产品详细信息
- 在Amazon EC2上安装测试应用程序
- 在Amazon EC2上的socket.h中的编译器错误
- Amazon S3在尝试使用boost asio进行PUT时出现403错误
- 如何使用C和c++的GSOAP访问Amazon AWS S3 ?
- 使用c++ GSOAP客户端访问Amazon S3服务
- 来自 EPEL 的 Amazon Linux 上的 Clang 找不到C++标头或库