伪分布式环境下命令行正确运行hadoop示例wordcount
来源:互联网 发布:怎么淘宝网店装修步骤 编辑:程序博客网 时间:2024/05/09 10:17
首先确保hadoop已经正确安装、配置以及运行。
1. 首先将wordcount源代码从hadoop目录中拷贝出来。
[root@cluster2 logs]# cp /usr/local/hadoop-1.1.2/src/examples/org/apache/hadoop/examples/WordCount.java ~/ygch/hadoop/
因为在编译过程中需要将jave源文件和class类文件分离,所以在~/ygch/hadoop下还要有一个class目录。
2. 编译WordCount.java文件:
[root@cluster2 src]#javac -classpath /usr/local/hadoop-1.1.2/hadoop-core-1.1.2.jar:/usr/local/hadoop-1.1.2/lib/commons-cli-1.2.jar WordCount.java -d class
该命令的特别之处是利用-classpath选项指定WordCount需要的jar包。一开始我们可能不知道WordCount需要什么jar包,我们可以通过搜索hadoop的目录来搜寻相关jar包。hadoop目录下存放jar包的位置有两个:根目录和/lib目录。然后我们可以通过jar tvf *.jar查看jar包内容,进而可以知道WordCount需要的是哪几个jar包。
-d选项指定生成的类文件的位置,在编译的时候这个选项必须重新指定,不能让class文件生成在当前目录下。这是因为WordCount.java内包含package信息,如果我们不加-d选项,则编译的时候会将package信息丢失,导致能编译通过,但是后续不能找到类文件的错误。
此时我们直接调用java命令运行生成的WordCount:
[root@cluster2 classes]# java org.apache.hadoop.examples.WordCount
则会报错:
Exceptionin thread "main" java.lang.NoClassDefFoundError:org/apache/hadoop/conf/Configuration
atorg.apache.hadoop.examples.WordCount.main(WordCount.java:52)
Caused by:java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
atjava.net.URLClassLoader$1.run(URLClassLoader.java:366)
atjava.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(NativeMethod)
atjava.net.URLClassLoader.findClass(URLClassLoader.java:354)
atjava.lang.ClassLoader.loadClass(ClassLoader.java:424)
atsun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
错误提示表明java找不到我们在编译时添加的jar包,这时即使用-classpath选项添加相关jar包也不能正确运行。正确的方式是,将class文件打包成jar包。
3. 将class文件打包成一个jar包:
[root@cluster2 hadoop]# jar cvf WordCount.jar -C classes/ .
注意不要忘记最后有一个点,否则jar命令报错。该点指示jar命令的文件列表,表示指定目录下的所有文件。这里不能用*,否则会添加除了指定目录还有当前目录下的所有文件。
我们也可以首先cd到指定目录,然后利用命令:
[root@cluster2 class]# jar cvf WordCount.jar *
来执行打包命令。
打包的结果是在执行jar命令的目录下生成一个WordCount.jar。
4. 生成input文件:
由于运行hadoop时指定的输入文件只能是HDFS文件系统中的文件,所以我们必须将要进行wordcount的文件从本地文件系统拷贝到HDFS文件系统中。
[root@cluster2 hadoop]# hadoop fs -mkdir input[root@cluster2 hadoop]# hadoop fs -put testfile input
5. 运行jar包:
[root@cluster2 hadoop]#hadoop jar WordCount.jar org.apache.hadoop.examples.WordCount input output
在运行命令中由于WordCount.java中包括package信息,所以我们在指定类时要包含package的完整信息。
6. 查看结果
在hadoop程序运行完后,结果会放在output目录下,该目录是自动生成的。查看命令为:
[root@cluster2 hadoop]# hadoop fs -cat output/part-r-00000
至此,hadoop下的WordCount实例运行结束。
- 伪分布式环境下命令行正确运行hadoop示例wordcount
- 搭建Hadoop伪分布式环境,及运行wordcount程序总结
- Eclipse下伪分布式运行hadoop例子wordcount
- hadoop伪分布式运行wordcount 实例Fedora14
- Hadoop伪分布式运行wordcount小例子
- Hadoop伪分布式运行wordcount小例子
- Hadoop伪分布式运行wordcount例子
- 配置Hadoop伪分布式模式并运行WordCount示例操作实例演示步骤
- hadoop on yarn 入门系列1-伪分布式环境搭建并运行wordcount
- Hadoop在Linux下伪分布式的安装 wordcount实例的运行
- Hadoop在Linux下伪分布式的安装 wordcount实例的运行
- Hadoop在Linux下伪分布式的安装 wordcount实例的运行
- Hadoop在Linux下伪分布式的安装 wordcount实例的运行
- 2.2hadoop伪分布式---Wordcount.java配置和运行
- 配置Hadoop伪分布模式并运行Wordcount示例
- Hadoop在Linux下伪分布式的安装以及wordcount实例的运行还有Eclipse的使用
- Hadoop错误2_Hadoop伪分布式下,运行WordCount时,Input path does not exist错误原因
- hadoop伪分布式搭建&hadoop-example运行示例
- pb 调用zip压缩dll
- VMware中Shared Folders(共享文件夹)的配置
- C++模板类内友元(友元函数,友元类)声明的三种情况
- 关于虚拟机的一点想法
- Android开发过程中的小心得
- 伪分布式环境下命令行正确运行hadoop示例wordcount
- myeclipse for spring 6.0 序列号
- VS2010中使用Boost库的方法(超级简单)
- android 9Patch(.9)图片的使用
- uva 10361 Automatic Poetry(字符串处理)
- hdu1879(并查集+Kruskal算法)
- telnet简单操作 模拟请求
- Opencv学习记录之鼠标窗口响应
- 近期团队管理工作的一些反思总结