eclipse下編譯hadoop源代碼(轉)


hadoop是一個分布式存儲和分布式計算的框架。在日常使用hadoop時,我們會發現hadoop不能完全滿足我們的需要,我們可能需要修改hadoop的源代碼並重新編譯、打包。

下面將詳細描述如何從svn上導入並對hadoop進行eclipse下編譯。

因項目使用的hadoop版本是0.20.2,所以我們基於hadoop-0.20.2來進行二次開發。

(1)首先從svn上簽出源代碼,svn地址:

http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.2/  

(2)在下載的過程中,准備開發和編譯環境。windows下至少需要安裝如下軟件:

JDK 6--需要設置PATH環境變量  
ant  
  --下載解壓后,需要將ant的bin目錄添加到PATH的環境變量上  
cygwin  
   --安裝cygwin參考http://ebiquity.umbc.edu/Tutorials/Hadoop/03%20-%20Prerequistes.html 進行安裝和配置。在選擇cygwin的安裝包盡量多選,以方便日后的開發  

(3)從svn簽出后,使用命令行進入hadoop下載的HOME目錄,執行命令:

$ ant 

此時,ant開始下載依賴和編譯文件。我在編譯的時候編譯錯誤。經查,是$hadoop_home/src/saveVersion.sh生成的package-info.java有問題,導致無法編譯過去。將saveVersion.sh修改一下:

unset LANG  
unset LC_CTYPE  
version=$1  
user=`whoami` #此處修改成固定值,如jbm3072  
date=`date`  
if [ -d .git ]; then  
  revision=`git log -1 --pretty=format:"%H"`  
  hostname=`hostname`  
  branch=`git branch | sed -n -e 's/^* //p'`  
  url="git://$hostname/$cwd on branch $branch"  
else  
  revision=`svn info | sed -n -e 's/Last Changed Rev: \(.*\)/\1/p'`  
  url=`svn info | sed -n -e 's/URL: \(.*\)/\1/p'`  
fi  
mkdir -p build/src/org/apache/hadoop  
cat << EOF | \  
  sed -e "s/VERSION/$version/" -e "s/USER/$user/" -e "s/DATE/$date/" \  
      -e "s|URL|$url|" -e "s/REV/$revision/" \  
      > build/src/org/apache/hadoop/package-info.java  
/* 
 * Generated by src/saveVersion.sh 
 */  
@HadoopVersionAnnotation(version="VERSION", revision="REV",   
                         user="USER", date="DATE", url="URL")  
package org.apache.hadoop;  
EOF  

修改后,應該就可以編譯通過了。

 

(4)  將eclipse-files copy到工程目錄下

 

執行命令:

ant eclipse-files  

就可以將eclipse-files copy到工程目錄下。

(5)導入工程

    打開eclipse,在File中選擇Import,然后選擇General->Exsiting Projects into Workspace, 點擊next,然后選擇Hadoop源代碼目錄,此時就可以識別hadoop為eclipse工程了,點擊Finish,稍過片刻,一個沒有錯誤的eclipse 工程就OK了。

 

 (6)現在你就可以基於eclipse來進行修改hadoop源代碼了。

 

轉自 http://jbm3072.iteye.com/blog/1113827


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM