在ami3.0.1上运行弹性mapreduce流

iqjalb3h  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(312)

尝试使用较新的ami 3.0.1运行流式处理作业:会出现以下错误:

Error: java.lang.RuntimeException: Error in configuring object
...
Caused by: java.io.IOException: Cannot run program "s3://elasticmapreduce/samples/wordcount/wordSplitter.py": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:219)
... 23 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 24 more

对于一个非常基本的示例作业:

elastic-mapreduce --create --ami-version 3.0.1 --instance-type m1.large \
--log-uri s3n://mybucket/logs --stream \
--mapper s3://elasticmapreduce/samples/wordcount/wordSplitter.py \
--input s3://mybucket/input/alice.txt \

--output s3://mybucket/output—减速机聚合
虽然在ami 2.4.2上运行相同的作业可以正常工作:

elastic-mapreduce --create --instance-type m1.large \
--log-uri s3n://mybucket/logs --stream \
--mapper s3://elasticmapreduce/samples/wordcount/wordSplitter.py \
--input s3://mybucket/input/alice.txt \
--output s3://mybucket/output --reducer aggregate

我需要使用ami3.0.1,因为其他自定义jar步骤都使用hadoop2.2.0。

nnsrf1az

nnsrf1az1#

虽然不是对这个特定问题的确切答案,但当我在emr主机上直接启动作业时遇到同样的问题时,这个问题让我决定了答案。
我遇到的问题的解决方案(使用amiv3.x.x提供的hadoop 2.x)需要使用-files选项:

hadoop jar contrib/streaming/hadoop-streaming.jar \
    -files s3n://<my bucket>/mapper.py,s3n://<my bucket>/reducer.py \
    -input s3n://<my bucket>/location/* \
    -output s3n://<my bucket>/emr-output \
    -mapper mapper.py  \
    -reducer reducer.py

在以前版本的hadoop(由AMIv2.4.x提供的Hadoop1.x)中,以下语句工作正常:

hadoop jar contrib/streaming/hadoop-streaming.jar \
    -input s3n://<my bucket>/location/* \
    -output s3n://<my bucket>/emr-output \
    -mapper s3n://<my bucket>/mapper.py  \
    -reducer s3n://<my bucket>/reducer.py

相关问题