ローカル練習用 HBase Docker インストール

ローカルで練習するための Docker インストールについて紹介する。

HBase を Docker にインストール

以下の Docker イメージを利用して、Docker 環境に HBase をインストールしてみる。

HBase Docker 実行コマンドのダウンロード

以下の GitHub から HBase Docker 実行コマンドをダウンロード、つまり clone する。

git clone git@github.com:dajobe/hbase-docker.git

HBase Docker の実行

Docker が起動した状態で、以下のコマンドをそのまま実行する。

./start-hbase.sh

コンテナを起動し、すべてのローカル API ポートと Web UI を調べ、まだ存在しない場合はコンテナ IP への alias を追加するために /etc/hosts の編集を提案する start-hbase.sh スクリプトを使用することが推奨される。

コンテナを起動して、すべてのローカル API ポートと Web UI を決定し、まだ存在しない場合はコンテナ IP への alias を追加するために /etc/hosts の編集を提案する start-hbase.sh スクリプトを使用することが推奨される。

% ./start-hbase.sh
start-hbase.sh: Starting HBase container
Error: No such container: hbase-docker
Unable to find image 'dajobe/hbase:latest' locally
latest: Pulling from dajobe/hbase
6cf436f81810: Pulling fs layer

... 中間省略 ...

159beed970fa: Pull complete
Digest: sha256:daa36a6d90b118ced866b6c76fcd918e7da73302b0e4971f506f0f61f645a9fe
Status: Downloaded newer image for dajobe/hbase:latest
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
start-hbase.sh: Container has ID 3804d552250334cc850189e076b77cb0d3066850cef332bec7a125dc29228361
./start-hbase.sh: line 32: python: command not found

ここでコンテナ ID は 3804d552250334cc850189e076b77cb0d3066850cef332bec7a125dc29228361 である。Shell 実行時に必要なので記録しておこう。

上記コマンドを実行すると、実行した現在のパスに data が作成され、port が開かれて HBase が実行される。

手動で実行する方法

docker run --name=hbase-docker \
  -h hbase-docker \
  -p 9095:9095 \
  -p 8085:8085 \
  -p 16010:16010  \
  -v $PWD/data:/data \
  -d dajobe/hbase

HBase Shell の実行

次に、Docker イメージを利用して HBase に接続できる Shell コマンドを実行してみる。

上で記録したコンテナ ID を $id に入れて実行する。

docker run --rm -it --link $id:hbase-docker dajobe/hbase hbase shell

macOS Apple Chip(M1, M2) の場合は、以下のようなエラーが出ることがある。

% docker run --rm -it --link 3804d552250334cc850189e076b77cb0d3066850cef332bec7a125dc29228361:hbase-docker dajobe/hbase hbase shell
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

その場合、すでに実行された Docker を削除し、--platform linux/amd64 オプションを入れて再実行すると動作するはずである。

% docker run --rm -it --platform linux/amd64 --link 3804d552250334cc850189e076b77cb0d3066850cef332bec7a125dc29228361:hbase-docker dajobe/hbase hbase shell

2023-06-16 09:38:17,680 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.1.2, r1dfc418f77801fbfb59a125756891b9100c1fc6d, Sun Dec 30 21:45:09 PST 2018
Took 0.0480 seconds
hbase(main):001:0>

Shell から抜けるコマンドは quit である。

hbase(main):005:0> quit

Command の使用方法は次のページで説明する。