伪分布式环境下命令行正确运行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内存中的图片
图片在内存中的大小 Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBitmap(intwidth, int height, ...
- DRM你又赢了:其API纳入HTML5标准
摘要:W3C今天发布了一份加密媒体扩展工作草案(EME),将支持DRM多媒体数字内容,而且浏览器将无需使用Flash或Silverlight.EME定义了一系列API,允许JavaScript和HTM ...
- EntityFramework 连接数据库出错
本文转载:http://www.cnblogs.com/shuang121/archive/2012/03/19/2406121.html 总结:选择“是”时,连接字符串的密码会暴露出来,“否”的时候 ...
- dojo(四):ajax请求
储备知识 1.在介绍新版本的ajax请求之前,需要先了解一些dojo/Deferreds. 初次听到“Deferred”这个概念,可能会觉得这是一个神秘的东西.实际上它在执行异步操作的时候非常强大,例 ...
- JS字符处理
JS取整 1.toFixed(num)(ps:num为保留小数点后几位) 自定义保留小数点后几位,进行四舍五入.严格来说,这个函数不属于取整,但是当num=0时,也就是取整了,所以一起放到这里,方便查 ...
- 【项目经验】如何用TexturePacker & Physicseditor开发游戏
首先感谢Andreas的license.先广告一下Andreas. ------------------------------------------------------------------ ...
- 开源PaaS产品介绍
简介 本文主要介绍一下PaaS领域两个著名的开源软件: Cloud Foundry和OpenShift. [广告]如果你喜欢本博客,请点此查看本博客所有文章:http://www.cnblogs.co ...
- 飘逸的python - 使用dis模块进行代码层次的性能剖析
http://blog.csdn.net/handsomekang/article/details/41479597?utm_source=tuicool&utm_medium=referra ...
- [Effective C++ --022]将成员变量声明为private
这一章并没有什么太多的内容,作者无非想告诉我们一件事:成员变量应该是private. 为此,他列举了以下的理由: 1.成员函数来返回成员变量是非常高效: 2.protected成员变量并不比publi ...
- js之createTextRange方法
createTextRange()方法作用: 主要是用来对一些文本对象进行操作.比如你有一大段文字,都在同一个P标签内,但是你只希望通过JS改变其中的一小部分,这时就可以用createTextRang ...