編譯Apache Hadoop2.2.0原始碼

來源:互聯網
上載者:User

標籤:http   ar   io   os   使用   sp   for   java   strong   

  Hadoop2的學習資料很少,只有官網的少數文檔。如果想更深入的研究hadoop2,除了僅看官網的文檔外,還要學習如何看源碼,通過不斷的調試跟蹤源碼,學習hadoop的運行機制。

  1.安裝CentOS

  我使用的是CentOS6.5,是,選擇CentOS-6.5-i386.iso 下載,大小是4GB,需要下載一段時間的。其實6.x的版本都可以,不一定是6.5。

  我使用的是VMWare虛擬機器,分配了2GB記憶體,20GB磁碟空間。記憶體太小,會比較慢;磁碟太小,編譯時間可能會出現空間不足的情況。上述不是最低配置,根據自己的機器配置修改吧。還有,一定要保持linux連網狀態。

  以下是按照各種軟體,我把軟體下載後全部複製到/usr/local目錄下,以下命令執行的路徑是在/usr/local目錄下。請讀者在閱讀時,一定要注意路徑。

  2.安裝JDK

  hadoop是java寫的,編譯hadoop必須安裝jdk。

  從Oracle官網下載jdk,是http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,選擇 jdk-7u45-linux-i586.tar.gz下載。

  執行以下命令解壓縮jdk

  tar -zxvf  jdk-7u45-linux-i586.tar.gz

  會產生一個檔案夾jdk1.7.0_45,然後設定環境變數中。

  執行命令 vi /etc/profile,增加以下內容到設定檔中,結果顯示如下

  

  儲存退出檔案後,執行以下命令

  source  /etc/profile

  java -version

  如果看到下面的顯示資訊,證明配置正確了。

  

  3.安裝maven

  hadoop源碼是使用maven組織管理的,必須下載maven。從maven官網下載,是http://maven.apache.org/download.cgi,選擇 apache-maven-3.0.5-bin.tar.gz 下載,不要選擇3.1下載。

  執行以下命令解壓縮jdk

  tar -zxvf  apache-maven-3.0.5-bin.tar.gz

  會產生一個檔案夾apache-maven-3.0.5,然後設定環境變數中。

  執行命令vi /etc/profile,編輯結果如所示

  

  儲存退出檔案後,執行以下命令

  source  /etc/profile

  mvn -version

  如果看到下面的顯示資訊,證明配置正確了。

  

  4.安裝findbugs(可選步驟)

  findbugs是用於產生文檔的。如果不需要編譯產生文檔,可以不執行該步驟。從findbugs官網下載findbugs,是http://sourceforge.jp/projects/sfnet_findbugs/releases/,選擇findbugs-3.0.0-dev-20131204-e3cbbd5.tar.gz下載。

  執行以下命令解壓縮jdk

  tar -zxvf  findbugs-3.0.0-dev-20131204-e3cbbd5.tar.gz

  會產生一個檔案夾findbugs-3.0.0-dev-20131204-e3cbbd5,然後設定環境變數中。

  執行命令vi /etc/profile,編輯結果如所示

  

  儲存退出檔案後,執行以下命令

  source  /etc/profile

  findbugs -version

  如果看到下面的顯示資訊,證明配置正確了。

  

  5.安裝protoc

  hadoop使用protocol buffer通訊,從protoc官網下載protoc,是https://code.google.com/p/protobuf/downloads/list,選擇protobuf-2.5.0.tar.gz 下載。

  為了編譯安裝protoc,需要下載幾個工具,順序執行以下命令

  yum install gcc

  yum intall gcc-c++

  yum install make

  如果作業系統是CentOS6.5那麼gcc和make已經安裝了。其他版本不一定。在命令運行時,需要使用者經常輸入“y”。

  然後執行以下命令解壓縮protobuf

  tar -zxvf  protobuf-2.5.0.tar.gz

  會產生一個檔案夾protobuf-2.5.0,執行以下命令編譯protobuf。

  cd protobuf-2.5.0

  ./configure --prefix=/usr/local/protoc/

  make && make install

  只要不出錯就可以了。

  執行完畢後,編譯後的檔案位於/usr/local/protoc/目錄下,我們設定一下環境變數

  執行命令vi /etc/profile,編輯結果如所示

  

  儲存退出檔案後,執行以下命令

  source  /etc/profile

  protoc --version

  如果看到下面的顯示資訊,證明配置正確了。

  

  6.安裝其他依賴

  順序執行以下命令

  yum install cmake

  yum install openssl-devel

  yum install ncurses-devel

  安裝完畢即可。

  7.編譯Hadoop2.2源碼

  從hadoop官網下載2.2穩定版,是http://apache.fayea.com/hadoop/common/stable2/,下載hadoop-2.2.0-src.tar.gz 下載。

  執行以下命令解壓縮jdk

  tar -zxvf hadoop-2.2.0-src.tar.gz

  會產生一個檔案夾 hadoop-2.2.0-src。原始碼中有個bug,這裡需要修改一下,編輯目錄/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth中的檔案pom.xml,執行以下命令

  gedit pom.xml

  在第55行下增加以下內容

  org.mortbay.jetty

  jetty-util

  test

  儲存退出即可。

  上述bug詳見https://issues.apache.org/jira/browse/HADOOP-10110,在hadoop3中修複了,離我們太遙遠了。

  好了,現在進入到目錄/usr/local/hadoop-2.2.0-src中,執行命令

  mvn package -DskipTests -Pdist,native,docs

  如果沒有執行第4步,把上面命令中的docs去掉即可,就不必產生文檔了。

  該命令會從外網下載依賴的jar,編譯hadoop源碼,需要花費很長時間,你可以吃飯了。

  在等待n久之後,可以看到如下的結果:

  [INFO] Apache Hadoop Main ................................ SUCCESS [6.936s]
[INFO] Apache Hadoop Project POM ......................... SUCCESS [4.928s]
[INFO] Apache Hadoop Annotations ......................... SUCCESS [9.399s]
[INFO] Apache Hadoop Assemblies .......................... SUCCESS [0.871s]
[INFO] Apache Hadoop Project Dist POM .................... SUCCESS [7.981s]
[INFO] Apache Hadoop Maven Plugins ....................... SUCCESS [8.965s]
[INFO] Apache Hadoop Auth ................................ SUCCESS [39.748s]
[INFO] Apache Hadoop Auth Examples ....................... SUCCESS [11.081s]
[INFO] Apache Hadoop Common .............................. SUCCESS [10:41.466s]
[INFO] Apache Hadoop NFS ................................. SUCCESS [26.346s]
[INFO] Apache Hadoop Common Project ...................... SUCCESS [0.061s]
[INFO] Apache Hadoop HDFS ................................ SUCCESS [12:49.368s]
[INFO] Apache Hadoop HttpFS .............................. SUCCESS [41.896s]
[INFO] Apache Hadoop HDFS BookKeeper Journal ............. SUCCESS [41.043s]
[INFO] Apache Hadoop HDFS-NFS ............................ SUCCESS [9.650s]
[INFO] Apache Hadoop HDFS Project ........................ SUCCESS [0.051s]
[INFO] hadoop-yarn ....................................... SUCCESS [1:22.693s]
[INFO] hadoop-yarn-api ................................... SUCCESS [1:20.262s]
[INFO] hadoop-yarn-common ................................ SUCCESS [1:30.530s]
[INFO] hadoop-yarn-server ................................ SUCCESS [0.177s]
[INFO] hadoop-yarn-server-common ......................... SUCCESS [15.781s]
[INFO] hadoop-yarn-server-nodemanager .................... SUCCESS [40.800s]
[INFO] hadoop-yarn-server-web-proxy ...................... SUCCESS [6.099s]
[INFO] hadoop-yarn-server-resourcemanager ................ SUCCESS [37.639s]
[INFO] hadoop-yarn-server-tests .......................... SUCCESS [4.516s]
[INFO] hadoop-yarn-client ................................ SUCCESS [25.594s]
[INFO] hadoop-yarn-applications .......................... SUCCESS [0.286s]
[INFO] hadoop-yarn-applications-distributedshell ......... SUCCESS [10.143s]
[INFO] hadoop-mapreduce-client ........................... SUCCESS [0.119s]
[INFO] hadoop-mapreduce-client-core ...................... SUCCESS [55.812s]
[INFO] hadoop-yarn-applications-unmanaged-am-launcher .... SUCCESS [8.749s]
[INFO] hadoop-yarn-site .................................. SUCCESS [0.524s]
[INFO] hadoop-yarn-project ............................... SUCCESS [16.641s]
[INFO] hadoop-mapreduce-client-common .................... SUCCESS [40.796s]
[INFO] hadoop-mapreduce-client-shuffle ................... SUCCESS [7.628s]
[INFO] hadoop-mapreduce-client-app ....................... SUCCESS [24.066s]
[INFO] hadoop-mapreduce-client-hs ........................ SUCCESS [13.243s]
[INFO] hadoop-mapreduce-client-jobclient ................. SUCCESS [16.670s]
[INFO] hadoop-mapreduce-client-hs-plugins ................ SUCCESS [3.787s]
[INFO] Apache Hadoop MapReduce Examples .................. SUCCESS [17.012s]
[INFO] hadoop-mapreduce .................................. SUCCESS [6.459s]
[INFO] Apache Hadoop MapReduce Streaming ................. SUCCESS [12.149s]
[INFO] Apache Hadoop Distributed Copy .................... SUCCESS [15.968s]
[INFO] Apache Hadoop Archives ............................ SUCCESS [5.851s]
[INFO] Apache Hadoop Rumen ............................... SUCCESS [18.364s]
[INFO] Apache Hadoop Gridmix ............................. SUCCESS [14.943s]
[INFO] Apache Hadoop Data Join ........................... SUCCESS [9.648s]
[INFO] Apache Hadoop Extras .............................. SUCCESS [5.763s]
[INFO] Apache Hadoop Pipes ............................... SUCCESS [16.289s]
[INFO] Apache Hadoop Tools Dist .......................... SUCCESS [3.261s]
[INFO] Apache Hadoop Tools ............................... SUCCESS [0.043s]
[INFO] Apache Hadoop Distribution ........................ SUCCESS [56.188s]
[INFO] Apache Hadoop Client .............................. SUCCESS [10.910s]
[INFO] Apache Hadoop Mini-Cluster ........................ SUCCESS [0.321s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 40:00.444s
[INFO] Finished at: Thu Dec 26 12:42:24 CST 2013
[INFO] Final Memory: 109M/362M
[INFO] ------------------------------------------------------------------------

  好了,編譯完成了。

編譯後的代碼在/usr/local/hadoop-2.2.0-src/hadoop-dist/target下面,如。

  

編譯Apache Hadoop2.2.0原始碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.