使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

网上的 MapReduce WordCount 教程对于如何编译 WordCount.java 几乎是一笔带过… 而有写到的,大多又是 0.20 等旧版本版本的做法,即 javac -classpath /usr/local/hadoop/hadoop-1.0.1/hadoop-core-1.0.1.jar WordCount.java,但较新的 2.X 版本中,已经没有 hadoop-core*.jar 这个文件,因此编辑和打包自己的MapReduce程序与旧版本有所不同。

本文以 Hadoop 2.6.0 单机模式环境下的 WordCount 实例来介绍 2.x 版本中如何编辑自己的 MapReduce 程序。

Hadoop 2.x 版本中的依赖 jar

Hadoop 2.x 版本中 jar 不再集中在一个 hadoop-core*.jar 中,而是分成多个 jar,如使用 Hadoop 2.6.0 运行 WordCount 实例至少需要如下三个 jar:

  • $HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar
  • $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar
  • $HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar

实际上,通过命令 hadoop classpath 我们可以得到运行 Hadoop 程序所需的全部 classpath 信息。

编译、打包 Hadoop MapReduce 程序

我们将 Hadoop 的 classhpath 信息添加到 CLASSPATH 变量中,在 ~/.bashrc 中增加如下几行:

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

别忘了执行 source ~/.bashrc 使变量生效,接着就可以通过 javac 命令编译 WordCount.java 了(使用的是 Hadoop 源码中的 WordCount.java,源码在文本最后面):

  1. javac WordCount.java

Shell 命令

编译时会有警告,可以忽略。编译后可以看到生成了几个 .class 文件。

使用Javac编译自己的MapReduce程序

接着把 .class 文件打包成 jar,才能在 Hadoop 中运行:

  1. jar -cvf WordCount.jar ./WordCount*.class

Shell 命令

打包完成后,运行试试,创建几个输入文件:

  1. mkdir input
  2. echo "echo of the rainbow" > ./input/file0
  3. echo "the waiting game" > ./input/file1

Shell 命令

创建WordCount的输入

如果读者Hadoop的环境是单机模式,请跳过此步骤。如果读者的Hadoop环境已经配置成伪分布式,那么读者还需要进行执行下列操作命令:

  1. # 把本地文件上传到伪分布式HDFS上
  2. /usr/local/hadoop/bin/hadoop fs -put ./input input

Shell 命令

开始运行。直接运行/usr/local/hadoop/bin/hadoop jar WordCount.jar WordCount input output,可能会出现找不到类的错误:

这是因为我们在代码中设置了package包名,这里也要写全,正确的命令如下。

  1. /usr/local/hadoop/bin/hadoop jar WordCount.jar org/apache/hadoop/examples/WordCount input output

Shell 命令

正确运行后的结果如下:

查看结果

原文地址:https://www.cnblogs.com/lfxiao/p/10432377.html

时间: 2024-12-26 10:28:22

使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0的相关文章

6.命令行编译打包运行五个MapReduce程序

对于如何编译WordCount.java,对于0.20 等旧版本版本的做法很常见,具体如下: javac -classpath /usr/local/hadoop/hadoop-1.0.1/hadoop-core-1.0.1.jar WordCount.java 但较新的 2.X 版本中,已经没有 hadoop-core*.jar 这个文件,因此编辑和打包自己的MapReduce程序与旧版本有所不同. Hadoop 2.x 版本中的依赖 jar Hadoop 2.x 版本中jar不再集中在一个

使用命令行编译打包运行MapReduce程序

本文地址:http://www.cnblogs.com/myresearch/p/mapreduce-compile-jar-run.html,转载请注明源地址. 对于如何编译WordCount.java,对于0.20 等旧版本版本的做法很常见,具体如下: javac -classpath /usr/local/hadoop/hadoop-1.0.1/hadoop-core-1.0.1.jar WordCount.java 但较新的 2.X 版本中,已经没有 hadoop-core*.jar 这

[hadoop]命令行编译并运行hadoop例子WordCount

首先保证JDK.Hadoop安装设置成功 可以参考[linux]ubuntu下安装hadoop [linux]ubutnu12.04 下安装jdk1.7 使用hadoop版本为1.2.1,jdk为1.7 在hadoop-1.2.1\src\examples\org\apache\hadoop\examples找到WordCount.java 源码如下: 1 /** 2 * Licensed under the Apache License, Version 2.0 (the "License&q

如何使用命令行编译和运行java文件

相信大家现在一般都在使用IDE环境来开发运行java文件,但我觉得可以在命令行里面简单运行java文件,技多不压身. 接下来我来说一下编译和运行java文件: 第一步,首先下一个入门程序(注意:一定要将程序里面的类名跟保存的文件名称写成一样) 第二步,进入到java文件保存的目录(注意:必须要进入到保存的目录,否则运行会出错) 第四步使用javac HelloWorld.java编译源程序会生成一个.class的中间代码 第五步使用java HelloWorld运行程序(注意java后面的程序结

命令行编译和运行带backage和带jar的包

一.带backage的: 编写一个类,它是按照包的层次编码的,如果此时想通过javac和java命令来编译运行,就需要如下来做: 在c:\net\test下建立一个HelloWorld.java的文件,放入C:\,内容如下: package net.test; //注意:这个第一行就是对包进行说明,其中net后面的点其实是目录的意思. public class HelloWorld { public static void main(String args[]) { System.out.pri

加载依赖的jar包在命令行编译和运行java文件

在命令里编译和执行java文件,当应用程序需要需要依赖的jar包里面的class文件才能编译运行的时候,应该这样做: 1. 首先是编译过程,在命令行里面执行: (1) javac -classpath ClassPath Test.java    //其中ClassPath对应的是jar包的路径,这个jar包亦可以是zip包 (2) javac -classpath CLASSPATH:*.jar Test.java    //其中ClassPath对应的是jar包的路径,这个jar包亦可以是z

window 下命令行编译连接运行

编程的流程 一个编程的基本流程包括编辑.编译和链接三大步骤. 1.什么叫编辑 编辑edit代码即编写代码,是编程的第一步.你可以任意一个编辑器进行代码的编写,也可以使用windows自带的"记事本"来编写代码,也可以使用Notepad++,或者visual studio提供的编辑器. 2.什么叫编译 注:编译链接前,系统应该安装有相应的编译器,并设置好环境变量 编译(compile)是将用某种编程语言(如 C++语言)写成的源代码,转换成目标文件. 目标文件包含着机器代码(可直接被计算

java命令行编译和运行引用jar包的文件

经常遇到需要添加第三方jar文件的情况.在命令行状态下要加载外部的jar文件非常麻烦,很不好搞,在网上折腾了很久终于搞定了,在这里做个笔记: 1.编译:javac -Djava.ext.dirs=./lib Test.java 2.运行:java -Djava.ext.dirs=./lib Test ./lib是指存放第三方jar文件的目录.也可以写成绝对路径:/**/lib (试过了可以!)Test.java指包含main函数的类.

xcodebuild命令行编译打包iOS应用和企业发布

最近继续完善App的自动生成系统,android App自动生成已经工作的很好了,开始实现iOS App的自动生成,经过在stackoverflow等不断的搜索和实验,终于成功实现了在命令行下实现iOS App编译,压缩,签名等生成企业inhouse应用的过程,比较坑人的一点是最后一行命令可以实现压缩应用的效果,不需要通过xcodebuild exportArchive命令到处压缩的应用, 这个是国外一个blog看到的.关键命令如下: xcodebuild -project "SalesApp.