ant編譯hadoop
『壹』 如何在CentOS6.5下編譯64位的Hadoop2.x
1,安裝gcc,執行如下的幾個yum命令即可
java代碼
yum -y install gcc
yum -y install gcc-c++
yum install make
yum install autoconf automake libtool cmake ncurses-devel openssl-devel gcc*
2,安裝JDK,並設置環境變數,完成後測試安裝成功否
Java代碼
[root@ganglia ~]# java -version
java version "1.5.0"
gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-4)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for ing conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@ganglia ~]#
3, 安裝Maven,安裝完成後測試安裝與否
Java代碼
[root@ganglia ~]# mvn -v
Apache Maven 3.2.1 (; 2014-02-15T01:37:52+08:00)
Maven home: /usr/local/maven
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_25/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-431.el6.x86_64", arch: "amd64", family: "unix"
[root@ganglia ~]#
4, 安裝Ant, 安裝完成後,依舊測試成功與否
Java代碼
[root@ganglia ~]# ant -version
Apache Ant(TM) version 1.9.4 compiled on April 29 2014
[root@ganglia ~]#
5,安裝protobuf,安裝方式,從官網下載tar.gz的包,並上傳到linux上解壓,然後進入根目錄下,執行如下的幾個命令:
Java代碼
./configure
make
make check
make install
然後,執行如下命令,進行測試安裝成功與否
Java代碼
[root@ganglia protobuf-2.5.0]# protoc
Missing input file.
[root@ganglia protobuf-2.5.0]#
6,從hadoop官網下載hadoop2.2.0的版本的源碼的src的包,並查看目錄
Java代碼
[root@ganglia ~]# cd hadoop-2.2.0-src
[root@ganglia hadoop-2.2.0-src]# ll
總用量 108
-rw-r--r--. 1 67974 users 9968 10月 7 2013 BUILDING.txt
drwxr-xr-x. 2 67974 users 4096 10月 7 2013 dev-support
drwxr-xr-x. 4 67974 users 4096 6月 9 17:05 hadoop-assemblies
drwxr-xr-x. 3 67974 users 4096 6月 9 17:27 hadoop-client
drwxr-xr-x. 9 67974 users 4096 6月 9 17:14 hadoop-common-project
drwxr-xr-x. 3 67974 users 4096 6月 9 17:26 hadoop-dist
drwxr-xr-x. 7 67974 users 4096 6月 9 17:20 hadoop-hdfs-project
drwxr-xr-x. 11 67974 users 4096 6月 9 17:25 hadoop-maprece-project
drwxr-xr-x. 4 67974 users 4096 6月 9 17:06 hadoop-maven-plugins
drwxr-xr-x. 3 67974 users 4096 6月 9 17:27 hadoop-minicluster
drwxr-xr-x. 4 67974 users 4096 6月 9 17:03 hadoop-project
drwxr-xr-x. 3 67974 users 4096 6月 9 17:05 hadoop-project-dist
drwxr-xr-x. 12 67974 users 4096 6月 9 17:26 hadoop-tools
drwxr-xr-x. 4 67974 users 4096 6月 9 17:24 hadoop-yarn-project
-rw-r--r--. 1 67974 users 15164 10月 7 2013 LICENSE.txt
-rw-r--r--. 1 67974 users 101 10月 7 2013 NOTICE.txt
-rw-r--r--. 1 67974 users 16569 10月 7 2013 pom.xml
-rw-r--r--. 1 67974 users 1366 10月 7 2013 README.txt
[root@ganglia hadoop-2.2.0-src]#
7,修改/root/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml文件,增加,補丁內容,這部分是hadoop2.2.0的bug,如果是其他的2.x的版本,可以視情況而定,內容如下:
Xml代碼
<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>
8,修改完畢後,回到hadoop-2.2.0-src的跟目錄下執行編譯打包命令:
Java代碼
mvn clean
mvn package -Pdist,native -DskipTests -Dtar
然後等待半個小時左右的編譯時間,網速快的話,時間可能會更短,編譯完成 編譯好的hadoop包,
Java代碼
[root@ganglia target]# pwd
/root/hadoop-2.2.0-src/hadoop-dist/target
[root@ganglia target]# ll
總用量 282348
編譯完成後的本地庫,位於如下位置,並查看本地庫支持位數:
至此,我們的編譯已經,成功完成,然後,我們就可以使用在target目錄下,編譯生成的hadoop新的tar.gz包,來部署我們的hadoop集群。
『貳』 如何使用ANT在命令行進行編譯和測試
一、環境變數
在網上找到ANT的壓縮包,解壓縮以後放到C盤根目錄如下圖
對,就是這個鬼樣子,放在這里就可以用了,不用安裝之類的
環境變數如下圖:
你要定義ANT_HOME,然後讓系統path找到這個ANT_HOME就行了
二、寫build.xml
你的目錄結構如下圖:
源文件 放在src
引用的jar包放在lib
編譯結果安排在classes
接下來就是build.xml了
如下,自己看吧
[html] view plain
<?xml version="1.0"?>
<project name="pojo_0428" default="prepare" basedir=".">
<property name="source.root" value="src"/>
<property name="class.root" value="classes"/>
<property name="lib.dir" value="lib"/>
<!-- class path for compilation and execution -->
<path id="basepath">
<!-- 運行時 class文件的位置 -->
<pathelement location="${class.root}" />
<!-- jar包 -->
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>
<!--默認的target -->
<target name="prepare">
<delete dir="${class.root}"/>
<mkdir dir="${class.root}"/>
</target>
<!--編譯 -->
<target name="compile" depends="prepare">
<javac srcdir="${source.root}"
destdir="${class.root}"
debug="on"
optimize="off"
deprecation="on">
<classpath refid="basepath"/>
</javac>
</target>
<!--執行。 案常式序的入口 依賴 compile -->
<target name="run" depends="compile">
<java classname="com.javathink.Student" fork="true">
<classpath refid="basepath"/>
</java>
</target>
</project>
『叄』 如何重新編譯hadoop jar包
重新編譯hadoop jar包:
編譯打包
由於hadoop打包時需要依賴於操作系統的底層。
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install autotool
sudo apt-get install libtool
4.安裝jdk1.5 和apache-forrest-0.8
打包命令:ant package -Djava5.home=/home/rongneng/env/jdk1.5.0_22 -Dforrest.home=/home/rongneng/env/apache-forrest-0.8
『肆』 用ant將程序編譯和運行,都要做什麼工作
ant是apache項目組的一個子項目,是一個基於java的構建工具。ant本身用java實現,要構建的工程的配置文件用xml格式描述,可以很方便的實現跨平台構建工作。
ant 可以從http://ant.apache.org下載,目前最新版本為1.5.4。下載完畢後直接解壓縮到一個目錄,例如D:\ant。
下一步我們需要設置如下的環境變數:
ANT_HOME:ant的安裝目錄,如果按上面方法解壓縮了ant,那麼這個值應該設為D:\ant
JAVA_HOME:jdk的安裝目錄
PATH:把%ANT_HOME%\bin目錄加到path變數,以便於從命令行直接運行ant。
(1)建立build.xml
用ant編譯規模較大的工程非常方便,每個工程都對應一個build.xml文件,這個文件包含與這個工程有關的路徑信息和構建任務。
下面是一個最簡單的build.xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="projectTemplate" default="init" basedir=".">
<target name="init" >
<property name="lib.dir" value="lib"/>
<echo message="Hello ,lib.dir is set to ${lib.dir}" >
</echo>
</target>
</project>
每個build.xml有且僅有一個project,每個project下面可以包含多個target,每個target表示一個小的任務,每個任務負責執行一段腳本。ant有內置任務集可供使用,例如上面的echo就是在console上顯示消息。
更詳細的內置任務請參考http://ant.apache.org/manual/coretasklist.html
${lib.dir}表示引用一個名字叫做lib.dir的屬性值,這個屬性的值就是lib。
(2)運行ant
使用ant.bat可以直接運行ant,如果不帶任何參數,ant會在當前路徑下搜索build.xml文件,如果找到了這個文件,就運行project的default屬性指定的target.我們也可以帶參數來運行ant,以便選擇build.xml文件和要運行的target:
ant -buildfile c:\demo\build.xml init
表示運行c:\demo\build.xml 中名字為init的target
(3)ant的目標依賴
target有一個屬性depends,在其中可以指定一系列的target名字,表示在執行該target前,必須首先執行的一系列其它target。depends具有傳遞性,例如:targetA depends targetB,而targetB depends targetC和targetD,這樣在執行targetA之前,首先執行C和D,然後執行B,最後才會執行A。
下面是個簡單的例子,在執行編譯的動作前,首先需要建立一個目標代碼存放的目錄,然後再執行編譯。
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="project" default="init" basedir=".">
<target name="init" >
<property name="dist" value="dist"/>
<mkdir dir="${dist}" />
</target>
<target name="build" depends="init">
<javac srcdir="SourceCode" destdir="${dist}">
</javac>
</target>
</project>
『伍』 hadoop1.2.1+eclipse: 執行ant編譯錯誤提示:
.在Eclipse中執行Ant的腳本編譯出現問題
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-19
11:40
信息如下:
compile:
[javac]
Compiling 15 source files to
E:\work_home\OakingSecurity\build\classes
[javac] BUILD FAILED:
file:E:/work_home/OakingSecurity/build.xml:48: Unable to find a javac
compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps
JAVA_HOME does not point to the
JDK
我的系統變數設置了JAVA_HOME的,在命令行直接運行ant都沒有問題。
請問這是怎麼回事?是不是還要在Eclipse中設置什麼?
2.Re:在Eclipse中執行Ant的腳本編譯出現問題 [Re: njord]
Copy
to clipboard
Posted by: fengyifan
Posted on: 2003-08-19
21:49
put tools.jar in ant classpath
3.Re:在Eclipse中執行Ant的腳本編譯出現問題 [Re: njord]
Copy
to clipboard
Posted by: babyoracle
Posted on: 2003-08-20
07:42
用這個方法就可以了
http://www.cjsdn.com/post/view?bid=7&id=45620&sty=3&tpg=1&age=0
4.Re:在Eclipse中執行Ant的腳本編譯出現問題 [Re: njord]
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-22
13:03
在Eclipse的首選項中可以配置ANT_HOME,但又出現如下錯誤:
BUILD FAILED:
java.lang.VerifyError: (class:
org/apache/xerces/parsers/IntegratedParserConfiguration, method:
configurePipeline signature: ()V) Incompatible type for getting or setting
field
Total time: 94 milliseconds
為什麼?
5.Re:在Eclipse中執行Ant的腳本編譯出現問題 [Re: feng]
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-22
13:12
feng wrote:
put tools.jar in ant
classpath
用Eclipse默認的ANT選項,然後加上tools.jar是可以了,不過它又提示不支持junit任務,暈倒~
[junit]
BUILD FAILED: file:E:/work_home/OakingSecurity/build.xml:76: Could not create
task or type of type: junit.
Ant could not find the task or a class this
task relies upon.
而我用自己下載的Ant1.5.3又出現前面帖子的錯誤提示,為什麼?
6.Re:在Eclipse中執行Ant的腳本編譯出現問題 [Re: njord]
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-22
13:19
