在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
看了stack overflow的解答
Hadoop java.io.IOException: Mkdirs failed to create /some/path
应该是这个输出路径不在HDFS里,而且在这个路径里我没有创建目录的权限。试了一下mkdir,的确不能创建。所以我把输出位置改到了有权限的地方。但不知道这样做是不是对的?是否应该把当前路径添加到HDFS中?如何添加?或者是应该修改当前路径的权限?
如果有大神看到望解答,感激不尽。
===========更新==========
output目录创建不成功的确是权限的问题。网上有的教程使用的是root权限或者新建了用户赋予了权限。
解决办法:
赋予当前路径权限
or
把output改到有权限的地方
至于如何添加到HDFS是下一步的工作,单机版不需要这个。