伪分布式环境下命令行正确运行hadoop示例wordcount
首先确保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的更多相关文章
- iOS系统提供开发环境下命令行编译工具:xcodebuild
iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...
- HBase伪分布式环境下,HBase的API操作,遇到的问题
在hadoop2.5.2伪分布式上,安装了hbase1.0.1.1的伪分布式 利用HBase的API创建个testapi的表时,提示 Exception in thread "main&q ...
- windows环境隐藏命令行窗口运行Flask项目
Linux下可以使用nohub来使Flask项目在后台运行,而windows环境下没有nohub命令,如何让Flask项目在windows中在后台运行而不显示命令行窗口呢? 1.写一个.bat脚本来启 ...
- 命令行方式运行hadoop程序
1,写一个java代码.*.java.(这里从example 拷贝一个过来作为测试) cp src/examples/org/apache/hadoop/examples/WordCount.java ...
- linux 下 命令行中运行 selenium chrome 问题
1.chrome 现在不允许使用root运行了. 2.无界面 chromedriver 调用chrome 会出错. <另外一定要匹配 chromedriver和chrome 的版本. 要不会出各 ...
- 在命令行中运行Hadoop自带的WordCount程序
1.启动所有的线程服务 start-all.sh 记得要查看线程是否启动 jps 2.在根目录创建 wordcount.txt 文件 放置一些数据 3.创建 hdfs dfs -mkdir /文件夹 ...
- 《OD大数据实战》Hadoop伪分布式环境搭建
一.安装并配置Linux 8. 使用当前root用户创建文件夹,并给/opt/下的所有文件夹及文件赋予775权限,修改用户组为当前用户 mkdir -p /opt/modules mkdir -p / ...
- Hadoop Yarn(一)—— 单机伪分布式环境安装
HamaWhite(QQ:530422429)原创作品,转载请注明出处:http://write.blog.csdn.net/postedit/40556267. 本文是依据Hadoop官网安装教程写 ...
- CentOS7下Hadoop伪分布式环境搭建
CentOS7下Hadoop伪分布式环境搭建 前期准备 1.配置hostname(可选,了解) 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(p ...
随机推荐
- 强烈推荐android studio用的几个插件,androidstudio
不懂安装studio插件,看参考博文:android stuido插件安装:http://blog.csdn.net/liang5630/article/details/46372447 1.Butt ...
- squid 安装、配置、优化
官方网站:http://www.squid-cache.org 下载路径:wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABL ...
- Android代码中设置背景图片
//设置背景图片 String picfile= Environment.getExternalStorageDirectory() + "/pdp/pdp.png" ...
- Timus 1446. Sorting Hat 分类问题
At the start of each school year, a very important event happens at Hogwarts. Each of the first-year ...
- C 高级编程4 makefile 与 IO
make 与 makefile .目标的语法 目标名:依赖目标 @命令 @命令 make的命令行使用 make -f make 脚本文件 目标名 .目标的划分 demo.mk demo: gcc -c ...
- [ZZ]如果有人问你数据库的原理,叫他看这篇文章
如果有人问你数据库的原理,叫他看这篇文章 http://blog.jobbole.com/100349/ 文章把知识链都给串起来,对数据库做一个概述. 合并排序 阵列.树和哈希表 B+树索引概述 数据 ...
- eclipse安装android sdk后工具栏没有图标的设置
如果没有出现这android图标,选择'Window>Customize Perspective...>Commands',并在'Available command groups'中勾选' ...
- Paginator
Paginator There are several ways to paginate items. The simplest is by using the paginate method on ...
- 在oc代码中使用swift第三方框架
swift现在使用越来越多了,一些主流的框架或者效果比较好的demo都陆陆续续使用swift写了.所以,要学会如何在oc的项目中调用swift. 这里主要借助一个桥梁文件,这个桥梁文件一般在你导入sw ...
- JAVA8永久代
在Java虚拟机(以下简称JVM)中,类包含其对应的元数据,比如类的层级信息,方法数据和方法信息(如字节码,栈和变量大小),运行时常量池,已确定的符号引用和虚方法表. 在过去(当自定义类加载器使用不普 ...