如何使用 Amazon 的 EMR 在 CLI 中使用自定义 jar 指定 mapred 配置和 java 选项?

2024-05-12

我想知道如何指定mapreduce配置,例如mapred.task.timeout , mapred.min.split.size等等,当使用自定义 jar 运行流作业时。

当我们使用 ruby​​ 或 python 等外部脚本语言运行时,我们可以使用以下方式来指定这些配置:

ruby elastic-mapreduce -j --stream --step-name "mystream" --jobconf mapred.task.timeout=0 --jobconf mapred.min.split.size=52880 --mapper s3://somepath/mapper。 rb --reducer s3:somepath/reducer.rb --input s3://somepath/input --output s3://somepath/output

我尝试了以下方法,但没有一个有效:

  1. ruby elastic-mapreduce --jobflow --jar s3://somepath/job.jar --arg s3://somepath/input --arg s3://somepath/output --args -m,mapred.min.split .size=52880 -m,mapred.task.timeout=0

  2. ruby elastic-mapreduce --jobflow --jar s3://somepath/job.jar --arg s3://somepath/input --arg s3://somepath/output --args -jobconf,mapred.min.split .size=52880 -jobconf,mapred.task.timeout=0

我还想知道如何使用 EMR 中的自定义 jar 将 java 选项传递给流作业。 当在 hadoop 上本地运行时,我们可以按如下方式传递它:

bin/hadoop jar job.jar 输入路径 输出路径-D=


在这样的背景下亚马逊弹性MapReduce(亚马逊EMR) http://aws.amazon.com/elasticmapreduce/,您正在寻找引导操作 http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/Bootstrap.html:

引导操作允许您传递对存储在中的脚本的引用 亚马逊S3。该脚本可以包含配置设置和 与 Hadoop 或 Elastic MapReduce 相关的参数。引导操作 在 Hadoop 启动之前和节点开始处理之前运行 数据。[强调我的]

Section 从 CLI 运行自定义引导操作 http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/Bootstrap.html#CustomBootstrapCLI提供了一个通用的用法示例:

& ./elastic-mapreduce --create --stream --alive \
--input s3n://elasticmapreduce/samples/wordcount/input \
--mapper s3://elasticmapreduce/samples/wordcount/wordSplitter.py \
--output s3n://myawsbucket 
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/download.sh  

特别是,有单独的引导操作来配置 Hadoop 和 Java:

Hadoop(集群)

您可以通过引导操作指定 Hadoop 设置配置Hadoop http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/Bootstrap.html#PredefinedBootstrapActions_ConfigureHadoop, which 允许您设置集群范围的 Hadoop 设置, 例如:

$ ./elastic-mapreduce --create \
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
--args "--site-config-file,s3://myawsbucket/config.xml,-s,mapred.task.timeout=0"     

Java(JVM)

您可以通过引导操作指定自定义 JVM 设置配置守护进程 http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/Bootstrap.html#PredefinedBootstrapActions_ConfigureDaemons:

这个预定义的引导操作允许您指定堆大小或 Hadoop 守护进程的其他 Java 虚拟机 (JVM) 选项。你 可以使用此引导操作为大型作业配置 Hadoop 需要比 Hadoop 默认分配的内存更多的内存。您还可以使用 此引导操作用于修改高级 JVM 选项,例如垃圾 采集行为。

提供的示例将堆大小设置为 2048 并配置 Java namenode 选项:

$ ./elastic-mapreduce –create –alive \
  --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons \
  --args --namenode-heap-size=2048,--namenode-opts=-XX:GCTimeRatio=19   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Amazon 的 EMR 在 CLI 中使用自定义 jar 指定 mapred 配置和 java 选项? 的相关文章

随机推荐