-
Notifications
You must be signed in to change notification settings - Fork 56
Building HBase
ATTENTION: Please note that the verified version of this package is currently using an older version of log4j which has the security vulnerabilities. Please see here for more details.
The instructions provided below specify the steps to build HBase version 2.4.8 on Linux on IBM Z for following distributions:
- RHEL (7.8, 7.9, 8.2, 8.4, 8.5)
- SLES (12 SP5, 15 SP2, 15 SP3)
- Ubuntu (18.04, 20.04, 21.04, 21.10)
General Notes:
- When following the steps below please use a standard permission user unless otherwise specified.
- A directory
/<source_root>/
will be referred to in these instructions, this is a temporary writable directory anywhere you'd like to place it.
export SOURCE_ROOT=/<source_root>/
-
RHEL (7.8, 7.9, 8.2, 8.4, 8.5)
-
With IBM SDK
sudo yum install -y git wget tar make gcc ant hostname java-1.8.0-ibm-devel
-
With OpenJDK
sudo yum install -y git wget tar make gcc ant hostname java-1.8.0-openjdk-devel
-
With IBM Semeru Runtime (previously known as AdoptOpenJDK openj9)
sudo yum install -y git wget tar make gcc ant hostname
- Download and Install IBM Semeru Runtime (Java 8) from here.
-
With Eclipse Adoptium Temurin Runtime (previously known as AdoptOpenJDK hostpot)
sudo yum install -y git wget tar make gcc ant hostname
- Download and Install Adoptium Temurin Runtime (Java 8) from here.
-
-
SLES (12 SP5, 15 SP2, 15 SP3)
-
With IBM SDK
sudo zypper install -y git wget tar make gcc ant gawk gzip hostname sudo zypper install java-1_8_0-ibm-devel
-
With OpenJDK
sudo zypper install -y git wget tar make gcc ant gawk gzip hostname java-1_8_0-openjdk-devel
-
With IBM Semeru Runtime (previously known as AdoptOpenJDK openj9)
sudo zypper install -y git wget tar make gcc ant gawk gzip hostname
- Download and Install IBM Semeru Runtime (Java 8) from here.
-
With Eclipse Adoptium Temurin Runtime (previously known as AdoptOpenJDK hostpot)
sudo zypper install -y git wget tar make gcc ant gawk gzip hostname
- Download and Install Adoptium Temurin Runtime (Java 8) from here.
-
-
Ubuntu (18.04, 20.04, 21.04, 21.10)
-
With IBM SDK
sudo apt-get update sudo apt-get install -y git wget tar make gcc libjffi-jni export LD_LIBRARY_PATH=/usr/lib/s390x-linux-gnu/jni/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- Download IBM Java 8 SDK binary from IBM Java 8 and follow the instructions as per the given link.
-
With OpenJDK
sudo apt-get update sudo apt-get install -y git wget tar make gcc libjffi-jni openjdk-8-jdk export LD_LIBRARY_PATH=/usr/lib/s390x-linux-gnu/jni/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
-
With IBM Semeru Runtime (previously known as AdoptOpenJDK openj9)
sudo apt-get update sudo apt-get install -y git wget tar make gcc libjffi-jni export LD_LIBRARY_PATH=/usr/lib/s390x-linux-gnu/jni/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- Download and Install Adoptium Temurin Runtime (Java 8) from here.
-
With Eclipse Adoptium Temurin Runtime (previously known as AdoptOpenJDK hostpot)
sudo apt-get update sudo apt-get install -y git wget tar make gcc libjffi-jni export LD_LIBRARY_PATH=/usr/lib/s390x-linux-gnu/jni/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- Download and Install IBM Semeru Runtime (Java 8) from here.
-
Note: At the time of creation of these build instructions, HBase 2.4.8 was verified with IBM Java 8 SDK (build 8.0.6.36)
, OpenJDK 8 (build 1.8.0_292)
, Adoptium Temurin Runtime (build 1.8.0_302-b08)
and IBM Semeru Runtime (build 1.8.0_292-b10)
.
cd "$SOURCE_ROOT"
wget ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
tar xvfz libffi-3.2.1.tar.gz
cd libffi-3.2.1
./configure --prefix=/usr/local
make
sudo make install
Set environment variable LD_LIBRARY_PATH
: (Only on SLES)
export LD_LIBRARY_PATH=/usr/local/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Set environment variable LD_LIBRARY_PATH
: (Only on Ubuntu (20.04, 21.04, 21.10))
export LD_LIBRARY_PATH=/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export JAVA_HOME=<path to java>
export PATH=$JAVA_HOME/bin:$PATH
Note: HBase needs a native library (libjffi-1.2.so: java foreign language interface)
cd $SOURCE_ROOT
wget https://github.com/jnr/jffi/archive/jffi-1.2.23.tar.gz
tar -xzvf jffi-1.2.23.tar.gz
cd jffi-jffi-1.2.23
ant
export LD_LIBRARY_PATH=${SOURCE_ROOT}/jffi-jffi-1.2.23/build/jni/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
cd $SOURCE_ROOT
wget https://archive.apache.org/dist/hbase/2.3.6/hbase-2.4.8-bin.tar.gz
tar xvf hbase-2.4.8-bin.tar.gz
Note: Before running HBase, environment variable LD_LIBRARY_PATH
needs to be set correctly. Please refer to Step 1.1) or 1.4) on how to set LD_LIBRARY_PATH
after installing or building libjffi
, and also Step 1.2) on how to set LD_LIBRARY_PATH
after building libffi
when using Adoptium Temurin Runtime
on some distributions.
Use the following commands to run HBase server:
cd $SOURCE_ROOT/hbase-2.4.8
bin/start-hbase.sh
The HBase Web UI could be accessed from http://<IP or domain name of the host>:16010 after HBase server is successfully started.
Then use the following command to run hbase shell
:
bin/hbase shell
The output should contain logs similar to:
Version 2.4.8, rf844d09157d9dce6c54fcd53975b7a45865ee9ac, Wed Oct 27 08:48:57 PDT 2021
In hbase shell
console, type in the following commands:
hbase:001:0> create 'test', 'cf'
Created table test
Took 2.3982 seconds
=> Hbase::Table - test
hbase:002:0> list 'test'
TABLE
test
1 row(s)
Took 0.0567 seconds
=> ["test"]
hbase:003:0> put 'test', 'row1', 'cf:a', 'value1'
Took 0.4999 seconds
hbase:004:0> put 'test', 'row2', 'cf:b', 'value2'
Took 0.0064 seconds
hbase:005:0> put 'test', 'row3', 'cf:c', 'value3'
Took 0.0067 seconds
hbase:006:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=2021-11-26T18:46:09.070, value=value1
row2 column=cf:b, timestamp=2021-11-26T18:46:19.224, value=value2
row3 column=cf:c, timestamp=2021-11-26T18:46:38.534, value=value3
3 row(s)
Took 0.2012 seconds
hbase:007:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=2021-11-26T18:46:09.070, value=value1
1 row(s)
Took 0.0801 seconds
If your session looks similar to the above, congrats, your standalone HBase server is operational!
Use the following commands to stop HBase server:
bin/stop-hbase.sh
The information provided in this article is accurate at the time of writing, but on-going development in the open-source projects involved may make the information incorrect or obsolete. Please open issue or contact us on IBM Z Community if you have any questions or feedback.