Kudu-ImpalaのDockerイメージを使うと、KuduやImpalaのインストールは不要で、ImpalaからSQLを用いてKuduにクエリを行うことができます。
ImpalaもKuduも、本来は数十〜数百ノードに分散してスケールアウトし、大規模なデータセットにクエリを行うためのものですが、Dockerを利用することにより、インストール不要で簡単に検証できるのは便利ですね。なお、Kudu-Impalaに関しては先日公開した記事にも書いてあるので、興味がある方はご覧ください。
Kudu + Impala に Hue の Docker からアクセスする
さて、このKudu-ImpalaのDockerコンテナに、Hueから接続すると言う記事があります。(先ほど日本語版が公開されました)
https://jp.gethue.com/blog/quickstart-sql-editor-for-apache-impala/
この記事ではローカルにインストール済みのHue を使っていますが、Hueもインストールしたくない、と言う方もいると思うので、Hue の Docker イメージを使って実現しました。以下手順です。
Kudu-Impala Dockerコンテナを実行する
docker run -d --name kudu-impala -p 21000:21000 -p 21050:21050 -p 25000:25000 -p 25010:25010 -p 25020:25020 --memory=4096m apache/kudu:impala-latest impala
ImpalaのIPアドレスを取得する
まずdocker ps で取得したコンテナIDを取得します。
macmini:hue kawasaki$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04eb0636631f apache/kudu:impala-latest "/impala-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:21000->21000/tcp, 0.0.0.0:21050->21050/tcp, 0.0.0.0:25000->25000/tcp, 0.0.0.0:25010->25010/tcp, 0.0.0.0:25020->25020/tcp kudu-impala
この環境では04eb0636631fでした。IPアドレスを取得します。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 04eb0636631f
172.17.0.2
172.17.0.2ですね。このあと取得したIPアドレスをHueに設定します。
HueのDockerコンテナを実行する
sudo docker pull gethue/hue:latest
docker run -it -p 8888:8888 gethue/hue:latest bash
Hueの設定ファイルを変更する必要があるので、vimをインストールします。
root@bc2cfd951dba:/usr/share/hue# apt-get update;apt-get install vim
エディタ(vim)を使って hue.ini の impala セクションに IP アドレスを設定します
#vi desktop/conf/hue.ini
(略)
[impala]
# Host of the Impala Server (one of the Impalad)
server_host=172.17.0.2
(略)
Hueを実行
root@bc2cfd951dba:/usr/share/hue# ./build/env/bin/hue runserver 0.0.0.0:8888
Hue の WebUI からアクセスする
HueもKudu-Impalaも起動したので、任意のブラウザで http://localhost:8888 にアクセスします。なお、Hueは最初に入力したユーザー名とパスワードが管理者アカウントになるので忘れないよう注意してください。(とは言ってもコンテナを破棄したら消えるので、今回の環境では気にしなくても良い)
いくつかエラーが表示されますが、今回は検証目的なので全て無視します。
左側のメニューからImpalaを選択します。
クエリエディタでクエリを実行します(が、その前に左側の回転している矢印のアイコンをクリックしてリフレッシュ、もしくはInvalidate metadataでキャッシュを更新しないとエラーになるかもしれません)。
まずはSHOW TABLESでテーブル一覧します。
非常にわかりにくいですが、下の方に「a」と言うテーブルが一覧されていますね。このテーブルは、Hueのブログにある手順で作成したテーブルです。
左側のペインにデータベースは表示されませんが、これはKudu-Dockerで使用しているデータベースがApache Derbyになっているからかもしれませんね。
以下、クエリを実行したスクリーンショットです。
Database is locked と表示されてクエリの結果が返ってこないことがありましたが、リロードすると改善されるようです。
(当たり前ですが)INSERTしてSELECTも普通に動作します。
まとめ
Hueを試すだけなら https://demo.gethue.com を使う方が楽ですが、ImpalaとKuduを検証したい場合、かつシェルからクエリを実行するのではなく Hue を使ってみたい方にはDocker環境を使ってみるのも便利ですよ。
コメント
複数の docker コンテナを繋ぐ必要があるなら,docker エンジンだけでなく docker-compose を使ったほうが,IP アドレスを把握するなどの手間が省け,接続設定も docker-compose.yml に記述して残せるので便利だと思います.
ありがとうございます。確かにそうですね。アップデートします。