linux运行hadoop实例wordcount详解

来源:互联网 发布:fx5800p编程视频教学 编辑:程序博客网 时间:2024/05/12 16:58

在服务器上配置了hadoop准备自己从wordcount.java开始到跑起wordcount程序,但是就这简单的几步遇到了很多问题,现在总结一下我碰到的问题:

整个过程步骤是:

1.首先创建文件目录:

mkdir  Test

2.编译wordcount.java文件生成.class文件,存放在第一步创建的文件夹Test中:

javac  -classpath <hadoop_path>/hadoop*core*.jar  -d  Test

报错:

WordCount.java:53: 错误: 无法访问Options
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
                         ^
  找不到org.apache.commons.cli.Options的类文件
1 个错误

错误原因:找不到commons.cli.Options这个类,需要讲这个jar导入

解决方法:在*core*.jar后添加冒号和该类的路径如下:

javac  -classpath <hadoop_path>/hadoop*core*.jar:<hadoop_path>/lib/common-cli-1.2.jar  -d  Test

3.将Test中的文件打包生成wordcount.jar文件:

jar  -cvf  wordcount.jar  -C  Test/  .

注意:结尾有个点

4.执行jar包,确保已经将数据放入dfs的input文件中:

hadoop  jar  wordcount.jar  WordCount  input  output

报错:

Exception in thread "main" java.lang.ClassNotFoundException: WordCount
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

错误原因:找不到WordCount类,因为我们没有指定该类的位置,需要再WordCount前加上文件架构(即最初的.java文件开头那句package ...)

解决方法:我的只有一个文件examples(即开头是:package examples;)

hadoop  jar  wordcount.jar  examples.WordCount  input  output


有可能这时候还会报上面一样的错误,那就要检查你的文件了,有可能是你的文件的写法和你安装的hadoop版本不一致,你可以在安装目录里的src里找WordCount.java文件来执行。

费一天劲终于跑出来了

0 0