最近準備開始研究Hbase源碼,因爲第一次研究源碼,所以做片筆記,踩坑踩的很耗時。
1.我用的IDE是IDEA,本地window需要配置JDK,MAVEN,HADOOP環境
2.上GitHub下載Hbase源碼(可以使用git或直接下載):https://github.com/apache/hbase ,並解壓到電腦
3.在解壓後的目錄中執行命令:
mvn clean package -DskipTests=true
4.解壓完成後:
編譯成功後仍然在當前目錄執行mvn idea:idea,這樣是爲了生成idea所需要的.project文件
5.兩次編譯全部成功後,使用IDEA引入項目,並且設置conf/hbase-site.xml:
<configuration>
#hbase.rootdir的value是用來存放HBase數據的目錄,你不需要事先創建hbase目錄, 只需要事先保證/Users/tu/Public目錄存在就行
<property>
<name>hbase.rootdir</name>
<value>file:///Users/tu/Public/hbase</value>
</property>
#取消版本驗證,Hbase有時候會編譯找不到版本導致報錯
<property>
<name>hbase.defaults.for.version.skip</name>
<value>true</value>
</property>
</configuration>
6.開啓應用:
#執行類
org.apache.hadoop.hbase.master.HMaster
#配置log4j輸出
-Dlog4j.configuration=file:/Users/tu/IdeaProjects/hbase-1.2.6/conf/log4j.properties
#工作空間就用解壓的目錄
#並且需要調用Hbase server類
7.運行應用:
你可能會得到的錯誤:
1.版本檢測報錯:
hbase-default.xml file seems to be for and old version of HBase
解答:
重新編譯一下就好了:mvn clean package -DskipTests=true
2.hadoop本地環境報錯:
org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(...
解答:
需要配置本地windows中HADOOP_HOME的系統環境變量,hbase啓動會去找本地環境變量。
3.缺少winutils.exe文件:
Could not locate Hadoop executable: D:\sorftware\hadoop\hadoop-2.8.0\bin\winutils.exe
解答:新下載的hadoop沒有winutils.exe文件,下載一個就ok了
https://github.com/selfgrowth/apache-hadoop-3.1.1-winutils/blob/master/bin/winutils.exe
4.可以忽視的錯誤
java.lang.NoSuchMethodException: org.apache.hadoop.fs.LocalFileSystem.setStoragePolicy(org.apache.hadoop.fs.Path, java.lang.String)
文件系統不支持setStoragePolicy,正常錯誤,不管它。
現在應該可以正常跑了,訪問:http://localhost:16010/master-status 查看是否成功。