大道至简,知易行难
广阔天地,大有作为

HBase 2.2.2 on Hadoop 3.2.1源码编译

在《HBase 2.2.2 on Hadoop 3.2.1完全分布式部署》中,我们提到需要在hbase-site.xml中增加如下配置:

才能解决由于文件系统不支持hsync报错而造成启动失败的问题:

但至于为何需要这个的配置大多都语焉不详,而且官网明确指出了该参数仅适用于本地文件系统:

Master fails to become active due to lack of hsync for filesystem

Master fails to become active due to lack of hsync for filesystem

结合https://stackoverflow.com/questions/48709569/hbase-error-illegalstateexception-when-starting-master-hsync中

HBase 2.2.2二进制发行版中使用的hadoop 2.x的依赖

HBase 2.2.2二进制发行版中使用的hadoop 2.x的依赖

的说法,查看hbase/lib目录中确实是使用的hadoop 2.8.5的库:

HBase 2.2.2二进制发行版中默认使用的是Hadoop 2.x的依赖(2.8.5)

HBase 2.2.2二进制发行版中默认使用的是Hadoop 2.x的依赖(2.8.5)

决定编译源码进行尝试。否则根据官网的说法,hbase.unsafe.stream.capability.enforce=false存在丢失数据的风险,根本无法用于生产环境

从官网下载HBase2.2.2源码hbase-2.2.2-src.tar.gz,使用tar zvxf hbase-2.2.2-src.tar.gz解压,然后切换到hbase-2.2.0目录下(有pom.xml)直接使用maven打包:

根据官网http://hbase.apache.org/book.html中的《Building Apache HBase》一节:

HBase supports building against Apache Hadoop versions: 2.y and 3.y (early release artifacts). By default we build against Hadoop 2.x.

因而可以使用上述的命令“Building against various hadoop versions”。如果从来没有下载过依赖的话,不使用maven的mirror大约需要一个小时以上,主要耗时都在各种下载依赖,耐心等待直到打包完成:

HBase 2.2.2 on Hadoop 3.2.1源码编译

HBase 2.2.2 on Hadoop 3.2.1源码编译

编译后的结果位于hbase-assembly/target文件夹下:

可以看到其中的hbase-2.2.2-bin.tar.gz,将其解压,观察lib中的已经改为依赖于3.2.1。此时去掉hbase.unsafe.stream.capability.enforce=false的配置后也可以正常启动了HMaster了。

Windows环境下可以使用cygwin环境解压tar包并编译,需要注意源码tar包的解压是否正常,不要使用cmd.exe。

参考文档:
1、http://hbase.apache.org/book.html
2、https://blog.csdn.net/ccren/article/details/93923414

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » HBase 2.2.2 on Hadoop 3.2.1源码编译

分享到:更多 ()

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    您好 我现在正在使用的环境和您的一样 但是我本地进行编译时出现
    Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project hbase-common: Compilation failure: Compilation failure:
    [ERROR] /C:/Users/hp/Desktop/hbase-2.2.2/hbase-common/src/main/java/org/apache/hadoop/hbase/util/VersionInfo.java:[25,31] 找不到符号
    [ERROR] 符号: 类 Version
    [ERROR] 位置: 程序包 org.apache.hadoop.hbase
    [ERROR] /C:/Users/hp/Desktop/hbase-2.2.2/hbase-common/src/main/java/org/apache/hadoop/hbase/util/VersionInfo.java:[46,12] 找不到符号

    可否协助?

    4年前 (2020-01-14)回复