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,我會在下一篇博客中具體說明,謝謝支持,覺得文章還不錯的話,多多點贊,多多留言哈,這將使我充滿動力!