当前位置: 首页 > 知识库问答 >
问题:

使用自定义AMI运行Amazon EMR?

皮献
2023-03-14

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

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

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

谢谢

共有3个答案

陈项禹
2023-03-14

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

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

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

罗绪
2023-03-14

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

免责声明:我为Qubole工作。

冉伯寅
2023-03-14

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

 类似资料:
  • 我们正在评估Activiti作为一个流程引擎,以取代我们现有的本土工作流引擎。Activiti的功能给我们留下了深刻的印象,特别是与多租户和REST WS相关的功能。 我想这种情况会很常见,其他人也会面临同样的情况。 我知道我在这个问题上很含糊,但在这个阶段,我没有具体的问题可以讨论。

  • 问题内容: 我有一个自定义运行程序,它通过与其他硬件上运行的Junit服务器的套接字连接来交付Junit测试。测试按预期目标运行: 但是,当我添加以下 元素时… 没有任何东西被运送到硬件,这使我相信在 的上下文中没有使用我的@RunWith(com.company.name.RemoteTestCaseRunner.class)批注。是否有我遗忘的事情,或者必须另外执行才能调用@RunWith注释

  • 问题内容: 我有一个Dockerfile和自定义Nginx配置文件(与Dockerfile位于同一目录中),如下所示: Dockerfile: nginx.conf文件: 我运行以下两个命令: 然后,我签出了所有正在运行的容器,但没有显示出来。当我搜索nginx容器的日志时,发现以下错误消息: [emerg] 1#1:/etc/nginx/nginx.conf中的未知指令“上游”:1 nginx:

  • 假设我有一个名为的方法的接口,它接受了的参数。在中有名为和的字段。我想模拟调用此方法的响应,并返回不同的模拟响应结果,只要ServiceRequest中的值不同。 我有以下代码,如follow(参考https://www.baeldung.com/mockito-argument-matchers),但它返回空指针异常。这里出了什么问题?

  • 问题内容: 我已经创建了自己的文件,并通过将其设置为系统类加载器。它已经初始化,并且一切正常,但是找不到我要加载的类。这是: 我已确认该罐子存在,并且路径正确。这是我在程序中如何称呼它: 这是我得到的例外(第166行是指我尝试创建新行的行: 我什至尝试像这样显式加载类: 是什么原因造成的?它不应该“正常工作”吗? 更新: 这是来自的重要代码 更新2: 这是一个SSCCE:http : //nucl