hbase
快速开始
点击这里下载Apache HBase 2.4.16。
hbase构建
版本
2.4.16
环境依赖
移植环境
NAME="Loongnix-Server Linux"
VERSION="8"
ID="loongnix-server"
ID_LIKE="rhel fedora centos"
VERSION_ID="8"
PLATFORM_ID="platform:lns8"
PRETTY_NAME="Loongnix-Server Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:loongnix-server:loongnix-server:8"
HOME_URL="http://www.loongnix.cn/"
BUG_REPORT_URL="http://bugs.loongnix.cn/"
CENTOS_MANTISBT_PROJECT="Loongnix-server-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
Linux b79f3dc579f0 4.19.190-2.1.lns8.loongarch64 #1 SMP Thu Sep 23 08:52:56 UTC 2021 loongarch64 loongarch64 loongarch64 GNU/Linux
软件依赖
除了上述直接通过yum安装的软件外,还需要安装protobuf-3.21.12
以及protobuf-2.5.0
:点击这里下载
protobuf-3.21.12
源码。点击这里下载
protobuf-2.5.0
源码。安装步骤如下:
yum install -y autoconf automake libtool curl make gcc-c++ unzip
tar -zxf protobuf-2.5.0-linux-loong64.tar.gz
tar -zxf protobuf-3.21.12-linux-loong64.tar.gz
cd protobuf-3.21.12
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
cd ../protobuf-2.5.0
./autogen.sh
./configure --libdir=/usr/local/lib64
make
make install
mv /usr/local/bin/protoc /usr/local/bin/protoc-2.5.0
环境变量
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-8.1.10.lns8.loongarch64"
export M2_HOME="/usr/share/maven"
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$JAVA_HOME/jre/bin
快速构建
maven本地仓库
在/usr/share/maven/conf/settings.xml
文件中设置maven本地仓库目录:
/data
目录下。
hbase源码
点击这里下载hbase源码。
编译
编译信息的含义参考这里。详细构建
点击这里下载hbase 2.4.16官方源码。
参考软件依赖章节完成多版本protoc
的安装。maven本地仓库路径的修改与否不会影响到后续的构建。
hbase源码修改
对hbase-2.4.16
目录下的pom.xml
以及hbase-protocol-shaded/pom.xml
文件进行修改:
diff --git a/pom.xml b/pom.xml
index 11680c4..18a26f1 100755
--- a/pom.xml
+++ b/pom.xml
@@ -1697,7 +1697,7 @@
<artifactId>protobuf-maven-plugin</artifactId>
<version>${protobuf.plugin.version}</version>
<configuration>
- <protocArtifact>${external.protobuf.groupid}:protoc:${external.protoc.version}:exe:${os.detected.classifier}</protocArtifact>
+ <protocExecutable>/usr/local/bin/protoc-2.5.0</protocExecutable>
<protoSourceRoot>${basedir}/src/main/protobuf/</protoSourceRoot>
<clearOutputDirectory>false</clearOutputDirectory>
<checkStaleness>true</checkStaleness>
diff --git a/hbase-protocol-shaded/pom.xml b/hbase-protocol-shaded/pom.xml
index be67445..30ca69c 100644
--- a/hbase-protocol-shaded/pom.xml
+++ b/hbase-protocol-shaded/pom.xml
@@ -95,8 +95,8 @@
<goal>compile</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
- <protocArtifact>com.google.protobuf:protoc:${internal.protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
+ <protocExecutable>/usr/bin/protoc</protocExecutable>
<checkStaleness>true</checkStaleness>
</configuration>
</execution>
寻找架构相关的jar包
关于架构相关jar包的寻找有两个方案:
方案一,直接下载其他架构的hbase-2.4.16-bin.tar.gz
文件,解压后在lib
目录下查找含有.so
文件的jar包,逐个适配;方案二,直接编译,遇到阻塞的jar包进行适配,编译完成后在maven本地仓库中查找含有.so
文件的jar包,逐个适配。
方案一适用于lib
目录下架构相关的jar包来源于独立的项目与本项目无关,如只包含jna.jar
。
方案二适用于lib
目录下架构相关的jar包是本项目生成的,无论其中的.so
文件来源与项目自身编译产生的或是解压第三方jar包得到的,如本项目hbase-2.4.16/lib
目录下的shaded-clients/hbase-shaded-mapreduce-2.4.16.jar
等。
采用方案二统计出需要适配的jar包有:
os-maven-plugin 1.5.0.final.jar
snappy-java-1.1.8.2.jar
jruby-complete-9.2.13.0.jar
hbase-shaded-netty-4.1.4.jar
commons-crypto-1.0.0.jar
leveldbjni-all-1.8.jar
jline-2.11.jar
jffi-1.2.16-native.jar
jna-5.2.0.jar
os-maven-plugin 1.5.0.final.jar
是hbase编译时需要的jar包,从1.7.1
版本开始支持loongarch。
适配os-maven-plugin 1.5.0.final.jar
点击这里跳转到os-maven-plugin
项目。
点击这里查看修改。
修改后执行:
适配snappy-java-1.1.8.2.jar
点击这里跳转到snappy-java
项目。
点击这里查看如何编译。
适配jruby-complete-9.2.13.0.jar
在适配jruby-complete-9.2.13.0.jar
之前需要先适配以下项目,否则hbase在调用该jar包时会出错:
jffi
点击这里跳转到jffi
项目。
点击这里查看修改。
点击这里查看如何编译。
jnr-ffi
点击这里跳转到jnr-ffi
项目。
点击这里查看修改。
修改后执行:
jnr-constants
点击这里跳转到jnr-constants
项目。
点击这里查看修改。
点击这里查看如何编译。
jnr-posix
点击这里跳转到jnr-posix
项目。
点击这里查看修改。
修改后执行:
jruby
:点击这里跳转到
jruby
项目。点击这里查看修改。
点击这里查看如何编译。
hbase-shaded-netty-4.1.4.jar
hbase-shaded-netty-4.1.4.jar
中的.so
文件来源于netty-transport-native-epoll-4.1.87.Final-linux-loongarch.jar
。而在编译netty-transport-native-epoll-4.1.87.Final-linux-loongarch.jar
前需要先编译netty-tcnative-linux-loongarch_64-2.0.56.Final.jar
。
netty-tcnative-linux-loongarch_64-2.0.56.Final.jar
netty-transport-native-epoll-4.1.87.Final-linux-loongarch.jar
参考netty移植手册。
安装上述两个jar包后开始编译hbase-shaded-netty-4.1.4.jar
。点击这里跳转到hbase-thirdparty
项目。
执行:
commons-crypto-1.0.0.jar
点击这里跳转到commons-crypto
项目。
卸载高版本的openssl-devel,安装1.0.2版本openssl-devel:
leveldbjni-all-1.8.jar
点击这里跳转到leveldbjni
项目。
点击这里查看修改。
点击这里查看如何编译。
jline-2.11.jar
点击这里跳转到jline2
项目。
架构相关的.so
文件来源于maven仓库中的jansi-1.11.jar
。而jansi-1.11.jar
中的.so
文件来源于jansi-native-1.5-linux64.jar
。
jansi-native-1.5-linux64.jar
点击这里跳转到jansi-native
项目。
执行:
configure.ac
文件所在的位置,执行:
生成Makefile.in
后重新在根目录执行命令:
jansi-1.11.jar
点击这里跳转到jansi
项目。
在jansi/jansi
目录下执行:
jffi-1.2.16-native.jar
参考上文jffi项目。
jna-5.2.0.jar
参考jna移植手册。