在
Hadoop
中运行字数统计示例时,我遇到以下错误。
saying "JAR does not exist or is not a normal file:
/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar"
我的输入命令是:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar wordcount input output
只需转到该路径并检查名称是否正确,约定可能因发行版而异。
例如hadoop 3.1.0在以下路径:
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar
我遇到了同样的问题,问题出在文件中的版本号上。例如,在安装说明中,命令是:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep 输入输出 'dfs[a-z.]+'
虽然我正在使用的版本是 3.1.3,所以对我有用的是:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep 输入输出 'dfs[a-z.]+'
只需检查您的 jar 文件中是否包含所有依赖项即可。 尝试这样的事情。
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0-jar-with-dependencies.jar wordcount input output
由于
.jar
路径可能因发行版而异,因此很难说出确切的路径,显然,您可以 cd 进入每个目录并检查,但您是否想过有一种简单的方法。只需执行以下命令,它就会列出所有名为 hadoop-mapreduceexamples-2.2.0.jar
的 jar 文件以及确切位置,
find . -name hadoop-mapreduceexamples-2.2.0.jar
或者如果您不知道
.jar
文件的名称,您可以尝试这个,
find . -name *.jar
我也遇到了这个问题,因为我在
/opt/module/hadoop-3.1.3/wcinput
目录中。
当 cd
/opt/module/hadoop-3.1.3
时,然后再试一次:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
.
成功了。
我正在为一个学校项目做这个,他们在底部有这个。我们的问题的解决方案: 运行:
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar
编译
hadoop com.sun.tools.javac.Main WordCount.java
制作罐子:
jar cf wc.jar WordCount*.class
最后,正如我们所做的那样......:
hadoop jar wc.jar WordCount /user/your_name/wordcount/input /user/your_name/wordcount/output
运行它,立即生效。