单机模式Hadoop运行wordcount没有输出结果

在unbuntu16.04虚拟机上部署了单机hadoop,运行wordcount后,没有成功创建output文件夹。

环境

hadoop2.9.1
java openJDK7

显示map100% reduce0%

报错信息如下

java.lang.Exception: java.io.IOException: Mkdirs failed to create file:/opt/hadoop-2.9.1/optput2/_temporary/0/_temporary/attempt_local1079342681_0001_r_000000_0 (exists=false, cwd=file:/opt/hadoop-2.9.1)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:491)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:558)
Caused by: java.io.IOException: Mkdirs failed to create file:/opt/hadoop-2.9.1/optput2/_temporary/0/_temporary/attempt_local1079342681_0001_r_000000_0 (exists=false, cwd=file:/opt/hadoop-2.9.1)

应该已经读取了,但是没有输出

File Input Format Counters 
        Bytes Read=71
    File Output Format Counters 
        Bytes Written=0

想知道为什么没能成功创建output文件夹?

阅读 7.9k
1 个回答

看了stack overflow的解答
Hadoop java.io.IOException: Mkdirs failed to create /some/path

应该是这个输出路径不在HDFS里,而且在这个路径里我没有创建目录的权限。试了一下mkdir,的确不能创建。所以我把输出位置改到了有权限的地方。但不知道这样做是不是对的?是否应该把当前路径添加到HDFS中?如何添加?或者是应该修改当前路径的权限?

如果有大神看到望解答,感激不尽。

===========更新==========
output目录创建不成功的确是权限的问题。网上有的教程使用的是root权限或者新建了用户赋予了权限。
解决办法:
赋予当前路径权限
or
把output改到有权限的地方

至于如何添加到HDFS是下一步的工作,单机版不需要这个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进