1日遅れになってしまいましたが、、、
この記事は MicroAd (マイクロアド) Advent Calendar 2020 - Qiita の20日目の記事です。
昨日は dai08srhg - Qiita のEmbulkの話でした。
(´-`).。oO(EmbulkはHiveやHDFS系のプラグインがアップデートあると嬉しいなぁと思う今日この頃)
qiita.com
さて、本題ですが、今回はHueとDockerを使った話です。 Cloudera Hueは、 CDHに含まれているコンポーネントの一つ ですが、Hueは他のコンポーネントに比べて他のコンポーネントと協調して動作するものではなく基本的にクラスタのクライアントな立ち位置となります。
また、Hueはこのところ積極的なアップデートがあるので常に最新を使いたい!が、CDHはその都度追従してくれるわけでも無い状態です。そこで今回は、CDHから切り離して、Hue On Dockerで代わりが出来ないか考えてみます。
Hue自身については、12/23の以下のアドカレでアップデート情報があるので気になる方はご覧になって下さい。
- 前提
- Docker でHueを動かしてみる
- 起動時の注意
- 利用するコンテナイメージについて
- Hueの設定ファイルの運用について
- /etc/hosts について
- Hueから参照する外部DBについて
- その他の考慮ポイント
- Hueの負荷分散について
- Hueの監視について
- Loggingについて
- Metricsについて
- Tracingについて
- さいごに
前提
- CDHを使っている(v6.3.2 を今回の題材にしているが、v5系でも良いはず)
- Hueを動かすDockerホストには管理者しかリモートログイン出来ず、利用者はWebUIのみとする
- Cloudera Navigator、Navigator Optimizerの利用は対象外(私が利用できないので検証出来ない為)
- HTTPS対応は今回対象外とする(検証環境を用意するには時間が足りないので…)
- LDAP、SAML認証については、対象外(検証環境を用意するには時間が足りないので…)
- この辺を参考にしたらよさそう→ Hue Security | 6.3.x | Cloudera Documentation
- HueでつかうSparkについては、Livyが用意出来なかったので見送り
Kubernetesでの稼働は見送り(時間足らんかった…)
- Helmは hue/tools/kubernetes at master · cloudera/hue にあるのでそちらを参考にしたら良さそう
CDHにHueを入れてるけど、最新のHueに上げたくてウズウズしている
Docker でHueを動かしてみる
hue/tools/docker/hue at master · cloudera/hue に docker-compose.yml
があるのでそちらを参考にします。
また、Dockerfileもあります1 が、 Makefile を読むと分かるように単純にdocker buildするだけではダメそうなので、今回はbuild済みのDockerHubにある コンテナイメージ を使う方向で進めます。
早速、Docker Composeは以下の様にしてます。
version: '3.8' services: hue: image: gethue/hue:20201215-135001 # ・・・★1 hostname: hue container_name: hue ports: - "8888:8888" volumes: - ./conf/hue/z-hue.ini:/usr/share/hue/desktop/conf/z-hue.ini # ・・・★2 - ./conf/hue/log.conf:/usr/share/hue/desktop/conf/log.conf - ./conf/hive-conf/:/etc/hive/conf/ # ・・・★3 depends_on: - database networks: - backend extra_hosts: # ・・・★4 - "my-cdh-namenode-vip.example.com:192.0.2.1" - "my-cdh-hiveserver2.example.com:192.0.2.2" - "my-cdh-m01.example.com:192.0.2.3" - "my-cdh-m02.example.com:192.0.2.4" - "my-cdh-m03.example.com:192.0.2.5" - "my-cdh-w01.example.com:192.0.2.6" # 外部RDBでもOK database: # ・・・★5 image: mysql:8.0 hostname: database container_name: database env_file: - ./env/database.env command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --init-connect='SET NAMES UTF8;' --innodb-flush-log-at-trx-commit=0 volumes: - ./db/data:/var/lib/mysql # ・・・★6 - ./db/sql:/docker-entrypoint-initdb.d # ・・・★7 # - ./db/my.cnf:/etc/mysql/conf.d/my.cnf # 必要ならここでチューニングしてください networks: - backend networks: backend:
起動時の注意
実行する手順は、 初回だけ以下の様にdatabaseだけ先に起動して、初回起動時にHueのデータベースを作成してからHueを起動します。
$ docker-compose up --no-start $ docker-compose start database $ docker-compose up -d
2回目以降は、 docker-compose up -d
のみでOKです。
では、Docker Composeを見ていきます。
-
Dockerfile やPython3版の Dockerfile.py3 が用意されています。↩