編譯HBase1.0.0-cdh5.4.2版本


1. 編譯環境准備

Jdk:1.7.0_x
Maven : 3.3.9
hbase: cdh5.4.2-release

2. 用idea打開項目

使用git clone得到HBase源碼。打開git:

將HBase項目拉取到本地:

拉取完畢之后,在idea的命令窗口,使用命令 git checkout cdh5.4.2-release,切換到和生產環境對應的HBase版本。

切換完成后項目結構如下:

3. 編譯前准備

3.1 為maven-resources-plugin指定版本

打開 hbase項目根目錄下的pom.xml文件,找到maven-resources-plugin,為其指定好version。

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4</version>
<plugin>

3.2 跳過版本檢查

打開conf文件夾在hbase-site.xml添加如下設置

<property>
    <name>hbase.defaults.for.version.skip</name>
    <value>true</value>
</property>

3.3 生成模板代碼

在hbase-server的jamon包下,有以jamon為后綴名的文件,jamon是一種模板語言,可以把該文件生成java文件。
在http://www.jamon.org網站下載jamon程序jamon-dist-2013.12.28.zip。
解壓后拷貝jamon-api-2.3.1.jar jamon-processor-2.4.2.jar jamon-runtime-2.4.1.jar到源碼的\hbase-server\src\main\jamon目錄:

然后在該文件夾打開命令行執行以下命令處理jamon文件:

java -cp .;jamon-api-2.3.1.jar;jamon-processor-2.4.2.jar;jamon-runtime-2.4.1.jar org.jamon.compiler.TemplateProcessor --srcDir=. --destDir=. org\apache\hadoop\hbase\tmpl\regionserver\*

java -cp .;jamon-api-2.3.1.jar;jamon-processor-2.4.2.jar;jamon-runtime-2.4.1.jar org.jamon.compiler.TemplateProcessor --srcDir=. --destDir=. org\apache\hadoop\hbase\tmpl\common\*

java -cp .;jamon-api-2.3.1.jar;jamon-processor-2.4.2.jar;jamon-runtime-2.4.1.jar org.jamon.compiler.TemplateProcessor --srcDir=. --destDir=. org\apache\hadoop\hbase\tmpl\master\*

jamon文件會生成相應的java文件,然后將hbase-server的src/main/jmon加入src路徑,就可以引用到新生成的java文件了。

4. 編譯HBase代碼

在idea的命令窗口執行命令:mvn package -Dmaven.test.skip=true assembly:single,輸出如下圖則打包成功。

在各模塊的target目錄可得到相應jar包,當我們打了補丁后編譯出的jar包就可以放到集群的/usr/lib/hbase/lib目錄中替換了。

5. 本地調試HBase

5.1本地啟動HMaster

添加hbase/conf 作為 hbase-server模塊的 resources文件夾:

然后運行hbase-server模塊中的HMaster類,配置參數如下圖:

輸出下面的信息說明啟動成功。

可在本地進行訪問HBase:localhost:60010

5.2 本地啟動hbase-shell

啟動配置如下:

VMoption為:

-Dhbase.ruby.sources=E:\IdeaProjects\source\cdh5.4.2\hbase\hbase-shell\src\main\ruby
-Dlog4j.configuration=file:E:\IdeaProjects\source\cdh5.4.2\hbase\conf\log4j.properties

啟動完成后可以在console窗口執行shell命令。

另外,Debug也可以針對HBase提供的測試用例,大部分用例都是基於一個本地模擬的Mini Cluster運行的。
這個Mini Cluster運行在一個進程中,使用線程模擬HBase的關鍵進程。
有些測試用例在window端啟動可能會報無法找到文件的錯誤,需要在linux系統中執行用例才能正常。
這個過程中,我們可以動手小改一下源碼,驗證自己的想法,或者觀察因為改動所帶來的行為變化,對熟悉HBase源碼大有裨益


免責聲明!

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



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