最近再学习Hadoop,用的是Cygwin伪分布模式,今天按照书上的例子写了个小MapReduce程序,在eclipse中运行了一下,执行后报错,下面帖一下错误代码
11/12/05 16:10:35 INFO mapred.JobClient: Task Id : attempt_201112051608_0002_m_000001_2, Status : FAILED[color=red]java.io.FileNotFoundException: File C:/hadoop/tmp/mapred/local/taskTracker/jobcache/job_201112051608_0002/attempt_201112051608_0002_m_000001_2/work/tmp does not exist.[/color] at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:361) at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245) at org.apache.hadoop.mapred.TaskRunner.setupWorkDir(TaskRunner.java:519) at org.apache.hadoop.mapred.Child.main(Child.java:155)
通过网上的文章了解到是"mapred.child.tmp"配置项的原因,需要在“mapred-site.xml”配置文件中配置“mapred.child.tmp”属性
<property> <name>mapred.child.tmp</name> <value>/hadoop/childtmp</value> </property>
我又仔细的查看了一下“mapred-site.xml”配置文件,配置确实存在,那是哪里出了问题呢,我就继续查找,在群里不断的问,后来网友给了个提示,我修改了一下,果然好用。
eclipse中的插件中的默认选项有的还需要修改。
默认的配置是:
我按照“mapred-site.xml”中的配置修改了一下
这样执行就不会再报那个错误了。