hadoop编译包
Ⅰ 如何安装hadoop本地压缩库
Hadoop安装配置snappy压缩
[一]、 实验环境
CentOS 6.3 64位
Hadoop 2.6.0
JDK 1.7.0_75
[二]、 snappy编译安装
2.1、下载源码
到官网 http://code.google.com/p/snappy/ 或者到 https://github.com/google/snappy
下载源码,目前版本为 1.1.1。
2.2、编译安装
解压 tar -zxvf snappy-1.1.1.tar.gz ,然后以 root 用户 执行标准的三步进行编译安装:
/configure
make
make install
默认是安装到 /usr/local/lib ,这时在此目录下查看:
[hadoop@micmiu ~]$ ls -lh /usr/local/lib |grep snappy
-rw-r--r-- 1 root root 229K Mar 10 11:28 libsnappy.a
-rwxr-xr-x 1 root root 953 Mar 10 11:28 libsnappy.la
lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so ->
libsnappy.so.1.2.0
lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so.1 ->
libsnappy.so.1.2.0
-rwxr-xr-x 1 root root 145K Mar 10 11:28 libsnappy.so.1.2.0
安装过程没有错误同时能看到上面的动态库,基本表示snappy 安装编译成功。
[三]、Hadoop snappy 安装配置
3.1、hadoop 动态库重新编译支持snappy
hadoop动态库编译参考:Hadoop2.2.0源码编译 和 Hadoop2.x在Ubuntu系统中编译源码 ,只是把最后编译的命令中增加
-Drequire.snappy :
1mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy
把重新编译生成的hadoop动态库替换原来的。
3.2、hadoop-snappy 下载
目前官网没有软件包提供,只能借助 svn 下载源码:
1svn checkout http://hadoop-snappy.googlecode.com/svn/trunk/
hadoop-snappy
3.3、hadoop-snappy 编译
1mvn package [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR]
PS:如果上面 snappy安装路径是默认的话,即 /usr/local/lib,则此处
[-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR] 可以省略,或者
-Dsnappy.prefix=/usr/local/lib
编译成功后,把编译后target下的 hadoop-snappy-0.0.1-SNAPSHOT.jar 复制到 $HADOOP_HOME/lib
,同时把编译生成后的动态库 到 $HADOOP_HOME/lib/native/ 目录下:
1cp -r
$HADOOP-SNAPPY_CODE_HOME/target/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/linux-amd64-64
$HADOOP_HOME/lib/native/
3.4、编译过程中常见错误处理
① 缺少一些第三方依赖
官方文档中提到编译前提需要:gcc c++, autoconf, automake, libtool, java 6, JAVA_HOME set,
Maven 3
②错误信息:
[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1
[exec] /usr/bin/ld: cannot find -ljvm
[exec] collect2: ld returned 1 exit status
[exec] make: *** [libhadoopsnappy.la] Error 1
或者
[exec] /bin/sh ./libtool --tag=CC --mode=link gcc -g -Wall -fPIC -O2 -m64
-g -O2 -version-info 0:1:0 -L/usr/local/lib -o libhadoopsna/usr/bin/ld: cannot
find -ljvm
[exec] collect2: ld returned 1 exit status
[exec] make: *** [libhadoopsnappy.la] Error 1
[exec] ppy.la -rpath /usr/local/lib
src/org/apache/hadoop/io/compress/snappy/SnappyCompressor.lo
src/org/apache/hadoop/io/compress/snappy/SnappyDecompressor.lo -ljvm -ldl
[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1
[ant] Exiting
/home/hadoop/codes/hadoop-snappy/maven/build-compilenative.xml.
这个错误是因为没有把安装jvm的libjvm.so 链接到
/usr/local/lib。如果你的系统时amd64,可以执行如下命令解决这个问题:
1ln -s /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so
/usr/local/lib/
[四]、hadoop配置修改
4.1、修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加:
1export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/
4.2、修改 $HADOOP_HOME/etc/hadoop/core-site.xml:
XHTML
io.compression.codecs
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
4.3、修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml 中有关压缩属性,测试snappy:
XHTML
maprece.map.output.compress
true
maprece.map.output.compress.codec
org.apache.hadoop.io.compress.SnappyCodec[五]、测试验证
全部配置好后(集群中所有的节点都需要动态库和修改配置),重启hadoop集群环境,运行自带的测试实例
wordcount,如果maprece过程中没有错误信息即表示snappy压缩安装方法配置成功。
当然hadoop也提供了本地库的测试方法 hadoop checknative :
[hadoop@micmiu ~]$ hadoop checknative
15/03/17 22:57:59 INFO bzip2.Bzip2Factory: Successfully loaded &
initialized native-bzip2 library system-native
15/03/17 22:57:59 INFO zlib.ZlibFactory: Successfully loaded &
initialized native-zlib library
Native library checking:
hadoop: true
/usr/local/share/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true
/usr/local/share/hadoop/lib/native/Linux-amd64-64/libsnappy.so.1
lz4: true revision:99
bzip2: true /lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so
Ⅱ hadoop编译时出现javac: file not found: 求助!!!!!
有 种可能
1、linux的classpath设置有问题,没有加上"."。
2、你的javac后的classpath设置也不对,wordCount的编译不只是需这一个包,我记得还有别的相关的jar包,只有都加到你的classpath中才能正常编译。
3、这种编译明显是不太合适,在windows上编译好后再导入linux运行比较简单直接一些。
试下看吧。
Ⅲ Hadoop到底是什么玩意
Hadoop到底是个啥?
答:Hadoop是基于廉价设备利用集群的威力对海量数据进行安全存储和高效计算的分布式存储和分析框架,Hadoop本身是一个庞大的项目家族,其核心 家族或者底层是HDFS和MapRece,HDFS和MapRece分别用来实现对海量数据的存储和分析,其它的项目,例如Hive、HBase 等都是基于HDFS和MapRece,是为了解决特定类型的大数据处理问题而提出的子项目,使用Hive、HBase等子项目可以在更高的抽象的基础上更简单的编写分布式大数据处理程序。Hadoop的其它子项目还包括Common, Avro, Pig, ZooKeeper, Sqoop, Oozie 等,随着时间的推移一些新的子项目会被加入进来,一些关注度不高的项目会被移除Hadoop家族,所以Hadoop是一个充满活力的系统。
Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapRece分布式计算的软件架构。
Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapRece统计,不必开发专门的MapRece应用,十分适合数据仓库的统计分析。
ApachePig: 是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapRece运算。
ApacheHBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Apache Zookeeper: 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务 ApacheMahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapRece实现了部分数据挖掘算法,解决了并行挖掘的问题。
ApacheCassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集Google BigTable的数据模型与AmazonDynamo的完全分布式的架构于一身 Apache Avro: 是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制 ApacheAmbari: 是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
ApacheChukwa: 是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合 Hadoop 处理的文件保存在 HDFS 中供Hadoop 进行各种 MapRece 操作。
ApacheHama: 是一个基于HDFS的BSP(Bulk Synchronous Parallel)并行计算框架, Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。
ApacheFlume: 是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
ApacheGiraph: 是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和Google 的 Pregel。
ApacheOozie: 是一个工作流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapRece)的任务。
ApacheCrunch: 是基于Google的FlumeJava库编写的Java库,用于创建MapRece程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库 ApacheWhirr: 是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr学支持Amazon EC2和Rackspace的服务。
ApacheBigtop: 是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
ApacheHCatalog: 是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供关系视图。
ClouderaHue: 是一个基于WEB的监控和管理系统,实现对HDFS,MapRece/YARN, HBase, Hive, Pig的web化操作和管理。
Ⅳ 如何在CentOS6.5下编译64位的Hadoop2.x
hadoop2.x在apache官网直接下载的并没有64位直接能用的版本,如果我们想在64位系统使用,那么就需要重新编译hadoop,否则直接使用32位的hadoop运行在64位的系统上,将会出现一些库不兼容的异常。如下图所示,最直接的一个异常:在这之前,先用一个表格来描述下散仙的编译的环境的状况:
序号 描述 备注
1 centos6.5系统64位 linux环境
2 Apache Ant1.9 ant编译
3 Apache Maven3.2.1 maven打包部署
4 gcc,gcc-c++,make 依赖库
5 protobuf-2.5.0 序列化库
6 JDK1.7 JAVA 环境
7 Hadoop2.2.0源码包 官网下载
8 屌丝工程师一名 主角
9 hadoop交流群376932160 技术交流
下面进入正题,散仙的环境是在centos下,所以大部分安装编译依赖库,都可以很方便的使用yum命令来完成。
1,安装gcc,执行如下的几个yum命令即可
Java代码
./configure
make
makecheck
makeinstall
[java]view plain
<spanstyle="font-family:Arial;font-size:12px;">./configure
make
makecheck
makeinstall</span>
[[email protected]]#protoc
Missinginputfile.
[java]view plain
<spanstyle="font-family:Arial;font-size:12px;">[[email protected]]#protoc
Missinginputfile.
[[email protected]]#</span>
[root@ganglia~]#cdhadoop-2.2.0-src
[[email protected]]#ll
总用量108
-rw-r--r--.167974users996810月72013BUILDING.txt
drwxr-xr-x.267974users409610月72013dev-support
drwxr-xr-x.467974users40966月917:05hadoop-assemblies
drwxr-xr-x.367974users40966月917:27hadoop-client
drwxr-xr-x.967974users40966月917:14hadoop-common-project
drwxr-xr-x.367974users40966月917:26hadoop-dist
drwxr-xr-x.767974users40966月917:20hadoop-hdfs-project
drwxr-xr-x.1167974users40966月917:25hadoop-maprece-project
drwxr-xr-x.467974users40966月917:06hadoop-maven-plugins
drwxr-xr-x.367974users40966月917:27hadoop-minicluster
drwxr-xr-x.467974users40966月917:03hadoop-project
drwxr-xr-x.367974users40966月917:05hadoop-project-dist
drwxr-xr-x.1267974users40966月917:26hadoop-tools
drwxr-xr-x.467974users40966月917:24hadoop-yarn-project
-rw-r--r--.167974users1516410月72013LICENSE.txt
-rw-r--r--.167974users10110月72013NOTICE.txt
-rw-r--r--.167974users1656910月72013pom.xml
-rw-r--r--.167974users136610月72013README.txt
[java]view plain
<spanstyle="font-family:Arial;font-size:12px;">[root@ganglia~]#cdhadoop-2.2.0-src
[[email protected]]#ll
总用量108
-rw-r--r--.167974users996810月72013BUILDING.txt
drwxr-xr-x.267974users409610月72013dev-support
drwxr-xr-x.467974users40966月917:05hadoop-assemblies
drwxr-xr-x.367974users40966月917:27hadoop-client
drwxr-xr-x.967974users40966月917:14hadoop-common-project
drwxr-xr-x.367974users40966月917:26hadoop-dist
drwxr-xr-x.767974users40966月917:20hadoop-hdfs-project
drwxr-xr-x.1167974users40966月917:25hadoop-maprece-project
drwxr-xr-x.467974users40966月917:06hadoop-maven-plugins
drwxr-xr-x.367974users40966月917:27hadoop-minicluster
drwxr-xr-x.467974users40966月917:03hadoop-project
drwxr-xr-x.367974users40966月917:05hadoop-project-dist
drwxr-xr-x.1267974users40966月917:26hadoop-tools
drwxr-xr-x.467974users40966月917:24hadoop-yarn-project
-rw-r--r--.167974users1516410月72013LICENSE.txt
-rw-r--r--.167974users10110月72013NOTICE.txt
-rw-r--r--.167974users1656910月72013pom.xml
-rw-r--r--.167974users136610月72013README.txt
[[email protected]]#</span>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<scope>test</scope>
</dependency>
<!--新增的内容开始-->
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
<!--新增的内容结束-->
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<scope>test</scope>
</dependency>
[xml]view plain
<spanstyle="font-family:Arial;font-size:12px;"><dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<scope>test</scope>
</dependency>
<!--新增的内容开始-->
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
<!--新增的内容结束-->
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<scope>test</scope>
</dependency></span>
mvnclean
mvnpackage-Pdist,native-DskipTests-Dtar
[java]view plain
<spanstyle="font-family:Arial;font-size:12px;">mvnclean
mvnpackage-Pdist,native-DskipTests-Dtar
</span>
[INFO]
[INFO]---maven-resources-plugin:2.2:resources(default-resources)@hadoop-minicluster---
[INFO].
[INFO]
[INFO]---maven-compiler-plugin:2.5.1:compile(default-compile)@hadoop-minicluster---
[INFO]Nosourcestocompile
[INFO]
[INFO]---maven-resources-plugin:2.2:testResources(default-testResources)@hadoop-minicluster---
[INFO].
[INFO]
[INFO]---maven-compiler-plugin:2.5.1:testCompile(default-
Ⅳ 怎么使用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,则需要替换集群中的所有机器。不然会出现版本不匹配。
Ⅵ 怎么自己动手编译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,我会在下一篇博客中具体说明,谢谢支持,觉得文章还不错的话,多多点赞,多多留言哈,这将使我充满动力!