Version 4 (modified by waue, 15 years ago) (diff) |
---|
編譯 hadoop
0. environment
編譯hadoop 需要額外安裝 ant, forrest ,而forrest 需要安裝 java-1.5 來編譯
hadoop 安裝於 | /opt | hadoop_home = /opt/hadoop |
forrest 目錄 | /opt/forrest-0.8 | 下載 |
java 5 目錄 | /usr/lib/jvm/java-1.5.0-sun | |
java 6 目錄 | /usr/lib/jvm/java-6-sun |
1. svn checkout
$ cd /opt $ sudo svn co http://svn.apache.org/repos/asf/hadoop/common/trunk $ sudo mv trunk hadoop $ sudo chown `$USER:$USER` hadoop
2. ant
- 程式碼在 /opt/hadoop/src 內
- 改完程式碼之後,執行ant 來產生相對應檔案
- ant 的編譯規則在 build.xml 可以讀此檔以了解到動作與其相依的訊息
- 設定屬性值
<property name="Name" value="Hadoop-core"/>
- ant 的動作,如執行 ant docs 會參考此動作敘述
<target name="docs" depends="forrest.check" description="檢查說明" if="forrest.home"> <exec dir="${docs.src}" executable="${forrest.home}/bin/forrest" failonerror="true"> <env key="JAVA_HOME" value="${java5.home}"/> </exec> <copy todir="${build.docs}"> <fileset dir="${docs.src}/build/site/" /> </copy> </target>
- 設定屬性值
- 產生 Hadoop-Core-${version}.tar.gz
$ ant tar
- 產生的檔案會放在 /opt/hadoop/build 內
問題
- 執行 ant tar 時,depends 了七個動作: compile, jar, javadoc, docs, api-report, jar-test 。然而docs這個動作一直編譯不過。
$ ant -Djava5.home=/usr/lib/jvm/java-1.5.0-sun -Dforrest.home=/opt/forrest-0.8 tar
出現錯誤訊息
[exec] Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file