- 論壇徽章:
- 0
|
<span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial; line-height: 26px; "><font class="Apple-style-span" size="2"><p>本文就討論如何使用編譯hadoop的append分支,并整合進(jìn)入Hadoop主干版本。</p><p>首先安裝git工具。(是個(gè)類似于svn一樣的版本控制工具)</p><p><span style="background-color: rgb(255, 204, 204); ">$ apt-get install git</span></p><p>使用git獲取源代碼,并建立本地版本庫,需要下載較長時(shí)間<br></p><p></p>$ git clone git://git.apache.org/hadoop-common.git 進(jìn)入庫內(nèi) $ cd hadoop-common<p></p><p>我們發(fā)現(xiàn)git到本地的庫只可以看到hadoop的最新主干代碼,實(shí)際上,git已經(jīng)獲取了所有版本,需要手動(dòng)切換版本到append分支;</p><p></p>$ git checkout -t origin/branch-0.20-append Branch branch-0.20-append set up to track remote branch branch-0.20-append from origin. Switched to a new branch 'branch-0.20-append'<p></p><p>這樣就切換到了append分支</p><p>我們?cè)诜种Ь涂梢詼?zhǔn)備進(jìn)行編譯:</p><p>首先在hadoop-common目錄下創(chuàng)建 build.properties ,內(nèi)容如下:<br></p>resolvers=internal version=0.20-taotaosou-dfs<span style="color: rgb(255, 0, 0); ">(你需要指定的版本號(hào),例子代表淘淘搜-分布式文件系統(tǒng))</span>project.version=${version} hadoop.version=${version} hadoop-core.version=${version} hadoop-hdfs.version=${version} hadoop-mapred.version=${version}在hadoop-common目錄下,最后確認(rèn)一下是否已經(jīng)切換版本 git checkout branch-0.20-append <br><p>現(xiàn)在看,目錄中內(nèi)容全變了,切換到了append分支</p><p>下面開始編譯,先安裝ant哦</p><p><br></p><p>啟動(dòng)構(gòu)建,需要較長時(shí)間完成(4分鐘左右)<br></p><p></p>$ ant mvn-install 注意,如果需要重新運(yùn)行該指令,你應(yīng)該先清除生成的文件 rm -rf $HOME/.m2/repository在hadoop-common目錄下執(zhí)行 ant clean-cache<p></p><p>編譯完成之后,會(huì)進(jìn)入測(cè)試階段</p><p></p># Optional: run the full test suite or just the core test suite $ ant test $ ant test-core <br><p></p><p>第一個(gè) 測(cè)試全部?jī)?nèi)容,第二個(gè)只測(cè)試核心功能<br></p><p></p><p>ant test 時(shí)間非常久,非服務(wù)器約10小時(shí)。</p><p><br></p><p>在哪里可以找到目標(biāo)jar包呢?</p><p></p>$ find $HOME/.m2/repository -name "hadoop-*.jar" .../repository/org/apache/hadoop/hadoop-examples/0.20-append-for-hbase/hadoop-examples-0.20-append-for-hbase.jar .../repository/org/apache/hadoop/hadoop-test/0.20-append-for-hbase/hadoop-test-0.20-append-for-hbase.jar .../repository/org/apache/hadoop/hadoop-tools/0.20-append-for-hbase/hadoop-tools-0.20-append-for-hbase.jar .../repository/org/apache/hadoop/hadoop-streaming/0.20-append-for-hbase/hadoop-streaming-0.20-append-for-hbase.jar .../repository/org/apache/hadoop/hadoop-core/0.20-append-for-hbase/hadoop-core-0.20-append-for-hbase.jar<p></p><p>接下來就是將新的jar替換舊的jar包(此處假設(shè)你已經(jīng)架設(shè)好hadoop-0.20.2release版本)</p><p>1,替換舊的hadoop包;</p><p>2,替換hbase中l(wèi)ib文件夾中的包</p><p><span style="color: rgb(255, 0, 0); ">請(qǐng)注意,替換jar包需要重新命名</span></p><p>Hadoop 0.20.2 release 版本的命名規(guī)則為 hadoop-VERSION-PACKAGE.jar,如:hadoop-0.20.2-examples.jar. <br></p><p>而新編譯的版本命名規(guī)則為 hadoop-PACKAGE-VERSION.jar,如: hadoop-examples-0.20-append-for-hbase.jar. </p><p>所以你會(huì)以如下方式重命名:</p><p></p>hadoop-examples-0.20-append-for-hbase.jar --> hadoop-0.20-append-for-hbase-examples.jar hadoop-test-0.20-append-for-hbase.jar --> hadoop-0.20-append-for-hbase-test.jar hadoop-tools-0.20-append-for-hbase.jar --> hadoop-0.20-append-for-hbase-tools.jar hadoop-streaming-0.20-append-for-hbase.jar --> hadoop-0.20-append-for-hbase-streaming.jar hadoop-core-0.20-append-for-hbase.jar --> hadoop-0.20-append-for-hbase-core.jar<p></p><p>而與之相反,Hbase使用的命名規(guī)則為hadoop-PACKAGE-VERSION.jar ,所以提交到$HBASE_HOME/lib的jar包則不需要重命名,只需要保持原來的名稱。</p><p><br></p><p>完成以上工作之后,新編譯的包就可以使用了。</p><p><br></p><p>但是在測(cè)試過程中,你可能遇到一些test fail</p><p>比如:<span style="color: rgb(255, 102, 102); ">TestFileAppend4</span> 總是會(huì)出錯(cuò)</p><p>但是幸運(yùn)的是,這并不意味著不能使用,或許你還會(huì)遇到其他錯(cuò)誤,但是,經(jīng)過與hbase maillist聯(lián)系,發(fā)現(xiàn)其實(shí)他們也是正常的。</p><p>所以有錯(cuò)誤,也請(qǐng)放心,雖然你也或跟我一樣感到不爽。</p><p>好吧先寫到這里。</p></font></span> |
|