-
Notifications
You must be signed in to change notification settings - Fork 56
Building HBase
The instructions provided below specify the steps to build HBase version 2.3.5 on Linux on IBM Z for following distributions:
- RHEL (7.8, 7.9, 8.1, 8.2, 8.3)
- SLES (12 SP5, 15 SP2)
- Ubuntu (18.04, 20.04, 21.04)
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.1, 8.2, 8.3)
-
With IBM SDK
sudo yum install -y git wget tar make gcc ant java-1.8.0-ibm-devel
-
With OpenJDK
sudo yum install -y git wget tar make gcc ant java-1.8.0-openjdk-devel
-
With AdoptOpenJDK
sudo yum install -y git wget tar make gcc ant
- Download and install AdoptOpenJDK 8 (Eclipse OpenJ9 or HotSpot) from here.
-
-
SLES (12 SP5, 15 SP2)
-
With IBM SDK
sudo zypper install -y git wget tar make gcc ant gawk java-1_8_0-ibm-devel
-
With OpenJDK
sudo zypper install -y git wget tar make gcc ant gawk java-1_8_0-openjdk-devel
-
With AdoptOpenJDK
sudo zypper install -y git wget tar make gcc ant gawk
- Download and install AdoptOpenJDK 8 (Eclipse OpenJ9 or HotSpot) from here.
-
-
Ubuntu (18.04, 20.04, 21.04)
-
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 AdoptOpenJDK
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 AdoptOpenJDK 8 (Eclipse OpenJ9 or HotSpot) from here.
-
Note: At the time of creation of these build instructions, HBase 2.3.5 was verified with IBM Java 8 SDK (build 8.0.6.26), OpenJDK 8 (build 1.8.0_282-b08), AdoptOpenJDK 8 with HotSpot (build 1.8.0_282-b08) and AdoptOpenJDK 8 with OpenJ9 (build 1.8.0_282-b08).
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 installSet 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))
export LD_LIBRARY_PATH=/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}export JAVA_HOME=<path to java>
export PATH=$JAVA_HOME/bin:$PATHNote: 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.5/hbase-2.3.5-bin.tar.gz
tar xvf hbase-2.3.5-bin.tar.gzNote: 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 AdoptOpenJDK 8 (HotSpot) on some distributions.
Use the following commands to run HBase server:
cd $SOURCE_ROOT/hbase-2.3.5
bin/start-hbase.shThe 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 shellThe output should contain logs similar to:
Version 2.3.5, rfd3fdc08d1cd43eb3432a1a70d31c3aece6ecabe, Fri Apr 9 22:10:01 PDT 2021In hbase shell console, type in the following commands:
hbase(main):001:0> create 'test', 'cf'
Created table test
Took 1.3476 seconds
=> Hbase::Table - test
hbase(main):002:0> list 'test'
TABLE
test
1 row(s)
Took 0.0186 seconds
=> ["test"]
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
Took 0.1770 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
Took 0.0048 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
Took 0.0053 seconds
hbase(main):006:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=2021-04-15T18:30:35.569, value=value1
row2 column=cf:b, timestamp=2021-04-15T18:30:48.524, value=value2
row3 column=cf:c, timestamp=2021-04-15T18:31:02.213, value=value3
3 row(s)
Took 0.0307 seconds
hbase(main):007:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=2021-04-15T18:30:35.569, value=value1
1 row(s)
Took 0.0203 secondsIf your session looks similar to the above, congrats, your standalone HBase server is operational!
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.