2

我收到一个错误,我认为这与我设置目录的方式有关:

运行后:

hadoop-0.20.205.0/bin/hadoop jar hadoop-0.20.205.0/contrib/streaming/hadoop-streaming-*.jar -file mapper.py -mapper mapper.py -file reducer.py -reducer reducer.py -input cs4501input -输出 py_wc_out

我得到: packageJobJar: [mapper.py, reducer.py, /tmp/hadoop-ubuntu/hadoop-unjar6120166906857088018/] [] /tmp/streamjob1341652915014758694.jar tmpDir=null

12/04/08 01:34:01 INFO mapred.JobClient: 清理暂存区 hdfs://localhost:9000/tmp/hadoop-ubuntu/mapred/staging/ubuntu/.staging/job_201204080100_0004

12/04/08 01:34:01 ERROR streaming.StreamJob:启动作业时出错,输出路径已存在:输出目录 hdfs://localhost:9000/user/ubuntu/py_wc_out 已存在 流式作业失败!

我认为这与我使用 hdfs 指定 core-site.xml 文件有关,但那是在快速入门指南中。我不明白为什么我需要在带有端口号的 localhost 地址旁边指定 hdfs。

4

1 回答 1

4

问题是您试图在不清理输出目录的情况下运行相同的作业。先删除输出目录,然后重新运行。您必须在每项工作之间执行此操作。Hadoop 失败,而不是让您覆盖目录。

hadoop fs -rmr /user/ubuntu/py_wc_out

就个人而言,我喜欢解决这个“问题”的方法是动态地将时间戳附加到输出目录。这样它就永远是独一无二的,你不必摆脱以前的运行。

hadoop-0.20.205.0/bin/hadoop jar ... -output py_wc_out-`date +%s`
于 2012-04-09T01:36:46.287 回答