我收到一个错误,我认为这与我如何设置目录有关:
运行后:
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 -output py_wc_out
我得到: packageJobJar: [mapper.py, reducer.py,/tmp/hadoop-ubuntu/hadoop-unjar6120166906857088018/] []/tmp/streamjob1341652915014758694.jar tmpDir=null
12/04/08 01:34:01 信息映射。工作客户: 清理暂存区域 hdfs://localhost:9000/tmp/hadoop-ubuntu/mapred/staging/ubuntu/.staging/job_201204080100_0004
08-04-12 01:34:01 流式处理错误。StreamJob:启动作业时出错,输出路径已存在:输出目录 hdfs://localhost:9000/user/ubuntu/py_wc_out 已存在流式处理作业失败!
我认为这与我使用 hdfs 指定核心站点.xml文件的时间有关,但这在快速入门指南中。我不明白为什么我需要在带有端口号的本地主机地址旁边指定 hdfs。
问题是您正在尝试运行相同的作业而不清理输出目录。首先删除输出目录,然后重新运行它。您必须在每份工作之间执行此操作。Hadoop 失败,而不是让你覆盖目录。
hadoop fs -rmr /user/ubuntu/py_wc_out
就个人而言,我喜欢解决这个"问题"的方法是动态将时间戳附加到输出目录。这样,它将始终是唯一的,您不必摆脱以前的运行。
hadoop-0.20.205.0/bin/hadoop jar ... -output py_wc_out-`date +%s`