[英]Hadoop “error while writing TokenizerMapper permission denied”
I am using Google Developer Console for running the Hadoop example "WordCount". 我正在使用Google Developer Console运行Hadoop示例“WordCount”。 The error I am getting when I run hadoop com.sun.tools.javac.Main WordCount.java
is: 我运行hadoop com.sun.tools.javac.Main WordCount.java
时得到的错误是:
WordCount.java:26: error: error while writing TokenizerMapper:
WordCount$TokenizerMapper.class (Permission denied)
public static class TokenizerMapper
There is an arrow pointing to class of the last line. 有一个箭头指向最后一行的类。
echo $HADOOP_CLASSPATH
returns /usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar
echo $HADOOP_CLASSPATH
返回/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar
echo $HADOOP_HOME
returns /home/hadoop/hadoop-install
echo $HADOOP_HOME
返回/home/hadoop/hadoop-install
echo $JAVA_HOME
returns /usr/lib/jvm/java-7-openjdk-amd64/jre
echo $JAVA_HOME
返回/usr/lib/jvm/java-7-openjdk-amd64/jre
javac -version
returns javac 1.6.0_36
javac -version
返回javac 1.6.0_36
java -version
returns java version "1.6.0_36" OpenJDK Runtime Environment (IcedTea6 1.13.8) (6b36-1.13.8-1~deb7u1) OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
java -version
返回java version "1.6.0_36" OpenJDK Runtime Environment (IcedTea6 1.13.8) (6b36-1.13.8-1~deb7u1) OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
I changed the permissions on the javac file to be 777 and WordCount.java but nothing happened. 我将javac文件的权限更改为777和WordCount.java但没有任何反应。
This was a terrible work around and I do not recommend it but I changed the permission of the /home/hadoop directory to 777 and it works. 这是一个可怕的工作,我不推荐它,但我将/ home / hadoop目录的权限更改为777,它的工作原理。 I couldn't find where TokenizedMapper resided in my user file. 我找不到TokenizedMapper在我的用户文件中的位置。 This is a terrible option but I am accepting it in order to close the question 这是一个可怕的选择,但我接受它是为了结束这个问题
For the ones who had made hadoop installation with creating different hadoop user, make sure that your WordCount.java file also resides in the same hadoop installation directory (in my case "/usr/local/hadoop/"). 对于那些通过创建不同的hadoop用户进行hadoop安装的人,请确保您的WordCount.java文件也位于相同的hadoop安装目录中(在我的情况下为“/ usr / local / hadoop /”)。 Otherwise Hadoop will not get permission to access that java file. 否则Hadoop将无法获得访问该java文件的权限。
如果不工作则以root身份编译它你必须为你的hadoop用户提供正确和安全的root权限你可以通过编辑/ etc / sudoers来实现
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.