在这样的背景下亚马逊弹性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