当前位置:首页 » 编程软件 » 手动编译hadoop

手动编译hadoop

发布时间: 2022-09-04 18:55:25

❶ hadoop在window10上怎么编译

前言 Windows下运行Hadoop,通常有两种方式:一种是用VM方式安装一个linux操作系统,这样基本可以实现全Linux环境的Hadoop运行;另一种是通过Cygwin模拟Linux环境。后者的好处是使用比较方便,安装过程也简单,本篇文章是介绍第二种方式Cygwin模.

❷ 如何编译hadoop-eclipse-plugin插件

1.编译hadoop2.6.0的eclipse插件
编译源码
cd src/contrib/eclipse-plugin
ant jar -Dversion=2.6.0 -Declipse.home=/opt/eclipse -Dhadoop.home=/opt/hadoop-2.6.0
eclipse.home 和 hadoop.home 设置成你自己的环境路径

命令行执行编译,产生了8个警告信息,直接忽略。
compile:
[echo] contrib: eclipse-plugin
[javac] /software/hadoop2x-eclipse-plugin/src/contrib/eclipse-plugin/build.xml:76: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 45 source files to /software/hadoop2x-eclipse-plugin/build/contrib/eclipse-plugin/classes
[javac] /opt/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar(org/apache/hadoop/fs/Path.class): warning: Cannot find annotation method 'value()' in type 'LimitedPrivate': class file for org.apache.hadoop.classification.InterfaceAudience not found
[javac] /opt/hadoop-2.6.0/share/hadoop/hdfs/hadoop-hdfs-

❸ 怎么自己动手编译hadoop的eclipse插件

1.在Linux环境中伪分布式部署hadoop(SSH免登陆),运行WordCount实例成功。 http://www.cnblogs.com/PurpleDream/p/4009070.html

2.自己打包hadoop在eclipse中的插件。 http://www.cnblogs.com/PurpleDream/p/4014751.html

3.在eclipse中访问hadoop运行WordCount成功。

所以我下边会分三次记录下我的过程,为自己以后查阅方便,要是能帮助到其他人,自然是更好了!

===============================================================长长的分割线====================================================================

正文:

如果你想在eclipse中安装hadoop的插件,一个很重要的问题就是hadoop的版本与eclipse版本的匹配问题,如果不匹配,可能会导致很多问题。

综上,我在完成了在Linux的CentOS系统中安装hadoop并简单运行WordCount之后(具体参看本文前言中的博客链接),将学习的重点放到了hadoop的eclipse插件上。其实网上也有部分文章在介绍如何编写插件,但是由于我的eclispe版本是Juno,而之前在CentOS安装的是hadoop-1.0.1,所以没有找到完全匹配的成功案例。所以最终决定自己也动手变异一个自己的hadoop插件。

在有了这个想法之后,一开始会觉得特别困难,但是在真正去做之后,会发现很多问题其实还是可以解决的,只要你懂得如果使用网络和谷歌,多参考一下别人的文章,汲取精华,最终一定会成功的。

第一步,确定大致流程:

1.首先我需要ant编译,然后就是hadoop-1.0.1.tar.gz这个安装包,还有就是eclipse。

2.针对我自己的环境,电脑是Win7,eclispe是Juno,下载了hadoop-1.0.1.tar.gz,就差ant之前没有安装。

第二步,安装ant:

1.我参考的是这篇文章http://blog.csdn.net/yang382197207/article/details/10185251,我当时下载的是apache-ant-1.9.4,其他的步骤按照这篇文章介绍的配置就会成功。

第三步,在正式建立项目之前,我在介绍下我的环境: OS: windows 7, Eclipse: Juno, JDK: 1.6.0_43, Hadoop: 1.0.1

1.首先在Eclipse中新建一个Java项目,名字叫hadoop-1.0.1-eclipse-plugin,其实这个名字你可以随意的。

2.解压hadoop-1.0.1.tar.gz,在解压后的目录中(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),依次将下面的文件放到项目中:

(1).将\hadoop-1.0.1\src\contrib\eclipse-plugin里面的所有文件以及\hadoop-1.0.1\src\contrib\build-contrib.xml拖拽到项目中

(2).将根目录\hadoop-1.0.1里的所有.jar文件拖拽到eclipse项目中bin目录下。

3.打开项目中的build-contrib.xml,做如下的配置:

(1).找到<property name="hadoop.root" location="hadoop-1.0.1解压缩后的目录"/>

(2).找到<property name="eclipse.home" location="自己的eclipse的目录"/>

(3).找到<property name="version" value="hadoop的版本号"/>

可以参考我的配置,如图:

view sourceprint?
1.
<property name="name" value="${ant.project.name}"/>
2.
<property name="root" value="${basedir}"/>
3.
<property name="hadoop.root" location="D:/SettingUp/ITSettingUp/Hadoop/hadoop-1.0/hadoop-1.0.1"/>
4.
<property name="eclipse.home" location="D:/HaveSetted/ITHaveSetted/Eclipse"/>
5.
<property name="version" value="1.0.1"/>
4.打开项目中的build.xml,做如下的配置:

(1).将文件开头的 <import file="../build-contrib.xml"/> 修改为 <import file="build-contrib.xml"/>

(2).在<javac...>里如下图加入includeantruntime="on",效果如下:

view sourceprint?
01.
<target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">
02.
<echo message="contrib: ${name}"/>
03.
<javac
04.
encoding="${build.encoding}"
05.
srcdir="${src.dir}"
06.
includes="**/*.java"
07.
destdir="${build.classes}"
08.
debug="${javac.debug}"
09.
deprecation="${javac.deprecation}"
10.
includeantruntime="on">
11.
<classpath refid="classpath"/>
12.
</javac>
13.
</target>
(3).在<path id="classpath">中添加:<path refid="hadoop-jars"/>,效果如下:

view sourceprint?
1.
<!-- Override classpath to include Eclipse SDK jars -->
2.
<path id="classpath">
3.
<pathelement location="${build.classes}"/>
4.
<pathelement location="${hadoop.root}/build/classes"/>
5.
<path refid="eclipse-sdk-jars"/>
6.
<path refid="hadoop-jars"/>
7.
</path>
(4).在<target name="jar" depends="compile" unless="skip.contrib">这个标签里,在< file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>这个配置的下面添加如下几个jar包的配置:

view sourceprint?
1.
< file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
2.
< file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
3.
< file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
4.
< file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
5.
< file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
最终效果如图:

view sourceprint?
01.
<!-- Override jar target to specify manifest -->
02.
<target name="jar" depends="compile" unless="skip.contrib">
03.
<mkdir dir="${build.dir}/lib"/>
04.
< file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core-1.0.1.jar" verbose="true"/>
05.
< file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>
06.

07.
< file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
08.
< file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
09.
< file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
10.
< file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
11.
< file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
12.

13.
<jar
14.
jarfile="${build.dir}/hadoop-${name}-${version}.jar"
15.
manifest="${root}/META-INF/MANIFEST.MF">
16.
<fileset dir="${build.dir}" includes="classes/ lib/"/>
17.
<fileset dir="${root}" includes="resources/ plugin.xml"/>
18.
</jar>
19.
</target>
(5).在文件末尾</project>标签之前添加配置:

view sourceprint?
1.
<path id="hadoop-jars">
2.
<fileset dir="${hadoop.root}/">
3.
<include name="hadoop-*.jar"/>
4.
</fileset>
5.
</path>
5.打开hadoop-1.0.1的解压缩目录(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),复制两个jar包到对应的目录文件夹,以我的文件目录结构举例如下:

(1).将D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\hadoop-core-1.0.1.jar 复制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\这个文件夹中

(2).将D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib\commons-cli-1.2.jar复制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\ivy\lib\Hadoop\common这个文件夹中

6.再回到eclipse,打开项目中的\META-INF\MANIFEST.MF文件,做如下的添加:

view sourceprint?
1.
Bundle-ClassPath: classes/,
2.
lib/hadoop-core-1.0.1.jar,
3.
lib/commons-cli-1.2.jar,
4.
lib/commons-configuration-1.6.jar,
5.
lib/commons-httpclient-3.0.1.jar,
6.
lib/commons-lang-2.4.jar,
7.
lib/jackson-core-asl-1.8.8.jar,
8.
lib/jackson-mapper-asl-1.8.8.ja,
7.经过上边的配置,基本已经完成,我们可以编译项目了。右击build.xml文件选择 Run As Ant Build,编译成功,生成的hadoop-1.0.1-eclipse-plugin.jar在hadoop-1.0.1解压目录的\build\contrib\eclipse-plugin文件夹里面。

第四步,当然就是在eclipse中配置我们编译好的插件。

1.把hadoop-1.0.1-eclipse-plugin.jar文件放到eclipse安装目录的plugins中,重启eclipse。重启后,会在Window->Open Perspective->Other里,看到大象图标的Map/Rece出现,或者是window->Preferences中看到Hadoop Map/Rece这个选项。

2.window->Preferences中点击Hadoop Map/Rece这个选项,将Hadoop的那个解压缩目录(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1)的路径配置上,配置效果图如下:

\

3.然后我们在Window->Open Perspective->Other里,点击Map/Rece,切换到这个模式,截图如下:

\

4.切换到Map/Rece模式后,我们看到画面(4)中的截图,点击右下角的两个小图标,测试有没有反应,如果有反应,暂时先别配置,这个我下篇博客会具体讲。如果怎么点都没有反应,则可以做如下操作:

(1).打开项目中的\META-INF\MANIFEST.MF文件,找到之前编译时,添加的Bundle-ClassPath: classes/ 这个位置,之前我们添加了7个jar包的配置,再增加四个,如下:

view sourceprint?
1.
lib/hadoop-common-0.21.0.jar,
2.
lib/hadoop-hdfs-0.21.0.jar,
3.
lib/log4j-1.2.15.jar,
4.
lib/hadoop-mapred-0.21.0.jar
(2).然后我们还需要去网上下载这四个jar包放到下面的文件夹中,以我的目录举例:D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib。

(3).然后在重新编译即可,在替换原来的插件时,在重启eclipse的过程中,你可以这样做:先删除原来的插件,原来重启eclipse,确认Map/Rece没了;然后再关掉eclipse,将新的插件放到plugins里,之后再次启动eclipse。解决这个问题时我在网上参考的文章是:http://blog.csdn.net/kky2010_110/article/details/7774747,大家也可以看看~。

(4).上边所提到的截图如下:

\

经过上边说的这些步骤,eclipse中的hadoop插件我们算是编译完了,这个过程中一定要注意的是,不要怕失败,多尝试,因为hadoop版本与eclipse版本是有关系的,所以导致你的版本和我的不太一致,可能会失败,但是也可能会成功。所以在这里再次提醒,注意文章开始,我对自己的环境的版本的介绍,尤其是eclipse和hadoop的版本。建议大家如果有时间的话,可以先不管版本,按照我的步骤先走一遍,如果实在是不成功的话,则可以找个和我一样的eclipse和hadoop版本,再体验一回。因为,我在这个过程中,就发现,由于是第一次学hadoop,不见到成功的效果,总觉得少点什么,总想见识一下,莫取笑哈~

至于下一步,如果配置Location和运行WordCount,我会在下一篇博客中具体说明,谢谢支持,觉得文章还不错的话,多多点赞,多多留言哈,这将使我充满动力!

❹ 怎么使用eclipse编译hadoop源码

使用eclipse编译hadoop源码

1,建立一个Hadoop源码文件夹。
2、svn 检出hadoop1.0.4的源码。svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-1.0.4
注意:如果在ubuntu下直接上面语句报错,可能需要执行下面的语句
sudo apt-get install autoconf
sudo apt-get install libtool
3、在检出完成后的目录下执行
ant eclipse.然后将源码导入到eclipse中。
4、修改 release-1.0.4/src/contrib/gridmix/src/Java/org/apache/hadoop/mapred/gridmix/Gridmix.java
将两处的 Enum<? extends T> 改成 Enum<?>

5、编译器设置及编译。
右击工程名,Properties-->Builders-->New--->Ant Builder
New_Builder --> Edit: Name: hadoop-Builder.Main:Builderfile(builder.xml的位置):/home/nacey/workspace/source-workspace/hadoop-1.0.4;Targets—>Manual Build: jar
然后选择菜单Project-->Build Project

在/home/nacey/workspace/source-workspace/hadoop-1.0.4/build文件夹下会生成三个开发 jar 包:

hadoop-client-1.0.4-SNAPSHOT.jar
hadoop-core-1.0.4-SNAPSHOT.jar
hadoop-minicluster-1.0.4-SNAPSHOT.jar

去掉"-SNAPSHOT"即可替换hadoop-1.0.4 下的同名 jar 包.

注意如果要在集群中使用自己编译的jar,则需要替换集群中的所有机器。不然会出现版本不匹配。

❺ 如何在CentOS6.5下编译64位的Hadoop2.x

一、预先安装必要软件

1、需要的软件:java, svn, autoconf, automake, libtool, ncurses-devel, openssl-devel, gcc, lzo-devel, zlib-devel, znt, maven, protobuf, cmake
检测系统中是否已安装了某一软件命令:rpm -qa|grep 软件名,如检测系统中是否安装了svn:

$ rpm -qa|grep svn
2、如果已安装,则跳过,如果没有安装,用命令:yum install svn进行安装,如:

$ yum install svn
如果yum命令安装失败(找不到相应的包),则需手动下载相应的软件包进行安装,比如maven, protobuf这两个个软件;

二、安装maven

1、软件包:apache-maven-3.0.5-bin.tar.gz
不要使用最新的Maven3.1.1,与Maven3.0.x存在兼容性问题,所以老是出现java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter之类的错误。选择3.0.5版本:apache-maven-3.0.5-bin.tar.gz
将apache-maven-3.0.5-bin.tar.gz移动到/usr目录(软件包所在目录):
# mv ./apache-maven-3.0.5-bin.tar.gz /usr
进入/usr目录,解压(/usr目录):
# tar –zxvf apache-maven-3.0.5-bin.tar.gz ./
删除解压后的压缩包(/usr目录):
# rm –rf apache-maven-3.0.5-bin.tar.gz
将/usr / apache-maven-3.0.5/bin加到环境变量中
# vi /etc/profile
在PATH行的最后加上“:/usr/apache-maven-3.0.5/bin”
2、使配置生效:

# source /etc/profile
验证是否安装成功:

# mvn –version

三、安装protobuf
1、软件包:protobuf-2.5.0.tar.gz
将protobuf-2.5.0.tar.gz移动到/usr目录(软件包所在目录):
# mv ./ protobuf-2.5.0.tar.gz /usr
进入/usr目录,解压(/usr目录):

# tar –zxvf protobuf-2.5.0.tar.gz ./
删除解压后的压缩包(/usr目录):

# rm –rf protobuf-2.5.0.tar.gz
进入/usr/protobuf-2.5.0目录:
# cd /usr/protobuf-2.5.0
2、依次执行下列命令:
# ./configure
# make
# make check
# make install
检测是否安装成功:
# protoc --version
四、下载hadoop-2.2.0源码并编译

在/usr目录进行
用svn下载hadoop-2.2.0源码,命令:
$ svn checkout 'http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0'
源码下载完成后,在/usr目录下会有一个release-2.2.0目录,进入该目录:
$ cd /usr/release-2.2.0
$ ls –la

编译源码:
$ mvn package -Pdist,native -DskipTests –Dtar --不生成文档
$ mvn package -Pdist,native,docs,src -DskipTests –Dtar --生成文档,需要安装findbugs,并设置FINDBUGS_HOME环境变量
编译的时间比较久,编译过程中会联网下载所需要的包,机子没联网是不会成功编译的。
编译结束,最后打印的信息如下,每一项均是‘SUCCESS’,则编译成功:

编译好的代码包在/usr/release-2.2.0/hadoop-dist/target目录下:
$ cd /usr/release-2.2.0/hadoop-dist/target
$ ls –la
因为是在64位系统下编译的,所以编译出来的代码包是64位版本的;可以直接将/usr/release-2.2.0/hadoop-dist/target目录下的hadoop-2.2.0或者hadoop-2.2.0.tar.gz拷贝到其他linux64位平台进行搭建hadoop集群。

说明:
1、 机器得连网,如果没联网找可以联网的机器下载,但是编译时还是要下载一些东西,所以,实在不行。最好找相同平台(可以是虚拟机)能上网的机器做下面工作,弄好了再把编译好的代码包拷回来。
2、 命令操作中,‘#’开头的是在root用户进行,‘$’开头的是在普通用户下进行

❻ 如何编译hadoop的native库

3、进入hadoop-2.4.1-src编译hadoop
cd hadoop-2.4.1-src
mvn clean package -Pdist,native -DskipTests -Dtar

4、一般情况下/root/soft/hadoop/hadoop-2.4.1-src/hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads路径下的apache-tomcat-6.0.36.tar.gz下载不完全,
正常大小应该为6.47M左右,如果不对请官网手动下载,路径为http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.tar.gz
5、替换hadoop-2.4.1/lib/native为编译后hadoop-2.4.1-src/hadoop-dist/target/hadoop-2.4.1/lib/native包

❼ 如何编译Apache Hadoop2.4.0源代码

安装JDK
hadoop是java写的,编译hadoop必须安装jdk。
从oracle官网下载jdk,下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,选择 jdk-7u45-linux-x64.tar.gz下载。
执行以下命令解压缩jdk
tar -zxvf jdk-7u45-linux-x64.tar.gz
会生成一个文件夹jdk1.7.0_45,然后设置环境变量中。
执行命令 vi/etc/profile,增加以下内容到配置文件中,结果显示如下

export JAVA_HOME=/usr/java/jdk1.7.0_45
export JAVA_OPTS="-Xms1024m-Xmx1024m"
exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

保存退出文件后,执行以下命令
source /etc/profile
java –version 看到显示的版本信息即正确。

安装maven

hadoop源码是使用maven组织管理的,必须下载maven。从maven官网下载,下载地址是http://maven.apache.org/download.cgi,选择 apache-maven-3.1.0-bin.tar.gz 下载,不要选择3.1下载。

执行以下命令解压缩jdk
tar -zxvf apache-maven-3.1.0-bin.tar.gz
会生成一个文件夹apache-maven-3.1.0,然后设置环境变量中。

执行命令vi /etc/profile,编辑结果如下所示
MAVEN_HOME=/usr/maven/apache-maven-3.1.0
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

保存退出文件后,执行以下命令

source /etc/profile
mvn -version
如果看到下面的显示信息,证明配置正确了。

❽ 如何在hadoop-2.6.0上编译运行自己编写的java代码

在不使用eclipse情况使java程序在hadoop 2.2中运行的完整过程。整个过程中其实分为java程序的编译,生成jar包,运行测试。
这三个步骤运用的命令都比较简单,主要的还是如何找到hadoop 2.2提供给java程序用来编译的jar包。具体可以查看:
HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib目录
下面会通过一个在hadoop中创建一个目录的JAVA例子来进行演示
具体代码如下:

package com.wan.demo;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HADemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
mkdir(args[0]);
}

public static void mkdir(String dir){
Configuration configuration=new Configuration();
FileSystem fs;
try {
fs = FileSystem.get(configuration);
fs.mkdirs(new Path(dir));
fs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

把HADemo.java文件拷贝到linux环境中
配置HADOOP_HOME/bin到环境中,启动集群,进入HADemo.java文件目录中
注:下面的lib目录里面的文件由HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/ webhdfs/WEB-INF/lib目录中获取,下面做的目的是为了缩减命令长度
1.编译java
# mkdir class
#Javac -classpath .:lib/hadoop-common-2.2.0.jar:lib/hadoop-annotations-2.2.0.jar -d class HADemo.java
2.生成jar包
#jar -cvf hademo.jar -C class/ .
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/wan/(in = 0) (out= 0)(stored 0%)
adding: com/wan/demo/(in = 0) (out= 0)(stored 0%)
adding: com/wan/demo/HADemo.class(in = 844) (out= 520)(deflated 38%)
3.测试运行
#hadoop jar hademo.jar com.wan.demo.HADemo /test
检测:
#hadoop fs -ls /

结束!

❾ 如何在hadoop2.5.2使用命令行编译打包运行自己的maprece程序

网上的 MapRece 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 这个文件,因此编辑和打包自己的 MapRece 程序与旧版本有所不同。
本文以 Hadoop 2.7.2 环境下的 WordCount 实例来介绍 2.x 版本中如何编辑自己的 MapRece 程序。

编译、打包 Hadoop MapRece 程序
我们将 Hadoop 的 classhpath 信息添加到 CLASSPATH 变量中,在 ~/.bashrc 中增加如下几行:

[html] view plain
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

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

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

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

[html] view plain
jar -cvf WordCount.jar ./WordCount*.class

开始运行:
[html] view plain
hadoop jar WordCount.jar WordCount input output//hdfs上的input文件夹,命令执行所在位置为WordCount.jar同一目录

因为程序中声明了
package ,所以在命令中也要 org.apache.hadoop.examples 写完整:

[html] view plain
hadoop jar WordCount.jar org.apache.hadoop.examples.WordCount input output

查看:
[html] view plain
hadoop fs -cat /output/part-r-00000
WordCount.java 源码

package org.apache.hadoop.examples;

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.maprece.Job;
import org.apache.hadoop.maprece.Mapper;
import org.apache.hadoop.maprece.Recer;
import org.apache.hadoop.maprece.lib.input.FileInputFormat;
import org.apache.hadoop.maprece.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

public class WordCount {

public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{

private final static IntWritable one = new IntWritable(1);
private Text word = new Text();

public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}

public static class IntSumRecer
extends Recer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();

public void rece(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumRecer.class);
job.setRecerClass(IntSumRecer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}

❿ 如何编译Apache Hadoop2.2.0源代码

下载hadoop-2.2.0-src.tar.gz 下载。

执行以下命令解压缩jdk
tar -zxvf hadoop-2.2.0-src.tar.gz

会生成一个文件夹 hadoop-2.2.0-src。源代码中有个bug,这里需要修改一下,编辑目录/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth中的文件pom.xml,执行以下命令
gedit pom.xml
在第55行下增加以下内容
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>

保存退出即可。

上述bug详见https://issues.apache.org/jira/browse/HADOOP-10110,在hadoop3中修复了,离我们太遥远了。

好了,现在进入到目录/usr/local/hadoop-2.2.0-src中,执行命令
mvn package -DskipTests -Pdist,native,docs
如果没有执行第4步,把上面命令中的docs去掉即可,就不必生成文档了。
该命令会从外网下载依赖的jar,编译hadoop源码,需要花费很长时间,你可以吃饭了。
在等待n久之后,可以看到如下的结果:
[INFO] Apache Hadoop Main ................................ SUCCESS [6.936s]
[INFO] Apache Hadoop Project POM ......................... SUCCESS [4.928s]
[INFO] Apache Hadoop Annotations ......................... SUCCESS [9.399s]
[INFO] Apache Hadoop Assemblies .......................... SUCCESS [0.871s]
[INFO] Apache Hadoop Project Dist POM .................... SUCCESS [7.981s]
[INFO] Apache Hadoop Maven Plugins ....................... SUCCESS [8.965s]
[INFO] Apache Hadoop Auth ................................ SUCCESS [39.748s]
[INFO] Apache Hadoop Auth Examples ....................... SUCCESS [11.081s]
[INFO] Apache Hadoop Common .............................. SUCCESS [10:41.466s]
[INFO] Apache Hadoop NFS ................................. SUCCESS [26.346s]
[INFO] Apache Hadoop Common Project ...................... SUCCESS [0.061s]
[INFO] Apache Hadoop HDFS ................................ SUCCESS [12:49.368s]
[INFO] Apache Hadoop HttpFS .............................. SUCCESS [41.896s]
[INFO] Apache Hadoop HDFS BookKeeper Journal ............. SUCCESS [41.043s]
[INFO] Apache Hadoop HDFS-NFS ............................ SUCCESS [9.650s]
[INFO] Apache Hadoop HDFS Project ........................ SUCCESS [0.051s]
[INFO] hadoop-yarn ....................................... SUCCESS [1:22.693s]
[INFO] hadoop-yarn-api ................................... SUCCESS [1:20.262s]
[INFO] hadoop-yarn-common ................................ SUCCESS [1:30.530s]
[INFO] hadoop-yarn-server ................................ SUCCESS [0.177s]
[INFO] hadoop-yarn-server-common ......................... SUCCESS [15.781s]
[INFO] hadoop-yarn-server-nodemanager .................... SUCCESS [40.800s]
[INFO] hadoop-yarn-server-web-proxy ...................... SUCCESS [6.099s]
[INFO] hadoop-yarn-server-resourcemanager ................ SUCCESS [37.639s]
[INFO] hadoop-yarn-server-tests .......................... SUCCESS [4.516s]
[INFO] hadoop-yarn-client ................................ SUCCESS [25.594s]
[INFO] hadoop-yarn-applications .......................... SUCCESS [0.286s]
[INFO] hadoop-yarn-applications-distributedshell ......... SUCCESS [10.143s]
[INFO] hadoop-maprece-client ........................... SUCCESS [0.119s]
[INFO] hadoop-maprece-client-core ...................... SUCCESS [55.812s]
[INFO] hadoop-yarn-applications-unmanaged-am-launcher .... SUCCESS [8.749s]
[INFO] hadoop-yarn-site .................................. SUCCESS [0.524s]
[INFO] hadoop-yarn-project ............................... SUCCESS [16.641s]
[INFO] hadoop-maprece-client-common .................... SUCCESS [40.796s]
[INFO] hadoop-maprece-client-shuffle ................... SUCCESS [7.628s]
[INFO] hadoop-maprece-client-app ....................... SUCCESS [24.066s]
[INFO] hadoop-maprece-client-hs ........................ SUCCESS [13.243s]
[INFO] hadoop-maprece-client-jobclient ................. SUCCESS [16.670s]
[INFO] hadoop-maprece-client-hs-plugins ................ SUCCESS [3.787s]
[INFO] Apache Hadoop MapRece Examples .................. SUCCESS [17.012s]
[INFO] hadoop-maprece .................................. SUCCESS [6.459s]
[INFO] Apache Hadoop MapRece Streaming ................. SUCCESS [12.149s]
[INFO] Apache Hadoop Distributed Copy .................... SUCCESS [15.968s]
[INFO] Apache Hadoop Archives ............................ SUCCESS [5.851s]
[INFO] Apache Hadoop Rumen ............................... SUCCESS [18.364s]
[INFO] Apache Hadoop Gridmix ............................. SUCCESS [14.943s]
[INFO] Apache Hadoop Data Join ........................... SUCCESS [9.648s]
[INFO] Apache Hadoop Extras .............................. SUCCESS [5.763s]
[INFO] Apache Hadoop Pipes ............................... SUCCESS [16.289s]
[INFO] Apache Hadoop Tools Dist .......................... SUCCESS [3.261s]
[INFO] Apache Hadoop Tools ............................... SUCCESS [0.043s]
[INFO] Apache Hadoop Distribution ........................ SUCCESS [56.188s]
[INFO] Apache Hadoop Client .............................. SUCCESS [10.910s]
[INFO] Apache Hadoop Mini-Cluster ........................ SUCCESS [0.321s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 40:00.444s
[INFO] Finished at: Thu Dec 26 12:42:24 CST 2013
[INFO] Final Memory: 109M/362M
[INFO] ------------------------------------------------------------------------

热点内容
安卓苹果通讯录怎么同步 发布:2025-03-17 09:58:12 浏览:172
ai缓存 发布:2025-03-17 09:48:27 浏览:920
翘嘴水滴轮什么配置 发布:2025-03-17 09:47:34 浏览:581
小蚁摄像机如何云存储 发布:2025-03-17 09:42:42 浏览:816
如何修改自己的名字和密码 发布:2025-03-17 09:32:20 浏览:787
宝马3系枪灰色轮毂是哪个配置 发布:2025-03-17 09:28:17 浏览:513
鸿蒙系统退回安卓系统怎么备份 发布:2025-03-17 09:14:33 浏览:614
数据库服务公司 发布:2025-03-17 08:56:43 浏览:495
我的世界服务器加载不了区块 发布:2025-03-17 08:56:39 浏览:817
如何给无线路由器设置密码 发布:2025-03-17 08:51:40 浏览:886