最近准备开始研究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 查看是否成功。

 

 

版权声明:本文为wanchen-chen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wanchen-chen/p/12934097.html