EC2でOpenMetadataのDockerコンテナを起動してみた
オープンソースのデータカタログツールであるOpenMetadataに触る機会がありました。 OpenMetadataはDockerイメージが提供されており、簡単に起動ができるようになっています。
とりあえず手元のMacでRancher Desktopからの起動をしてみようとしたのですが、 うまくいかなかったためEC2インスタンス上でDockerを使って起動をしてみました。 案外苦戦してしまったので、手順を記録として共有したいと思います。
なお今回はとりあえずOpenMetadataでどんなことができるのかの調査を目的としていましたので、 アクセス権限などについては特に何も考慮していません。 実際に試す場合は適切に対応して頂く必要があるかと思います。
またEC2を起動する所までは割愛させて頂きますので、他の記事を参考にしていただければと思います。
検証環境
リージョン: ap-northeast-1 OS: Amazon Linux 2 インスタンスタイプ: t3.large EBS: gp3 8GB
やってみた
繰り返しになりますが、Dockerを使って立ち上げるだけなので、そこまで大変ではないと思っていました。 OpenMetadataの公式サイトに書かれている
pip3 install --upgrade 'openmetadata-ingestion[ docker]' metadata docker --start
この2行がきちんと実行するための記録です。
(docker
の前にスペースが入っているのは、シンタックス解釈の関係でそうしないとこのブログにきちんと表示されないためです。スペースがあってもない場合と同様にインストールができることを確認していますのでそのままコピペも可能です。)
Dockerの準備
Dockerのインストール
docker
とdocker compose
が必要となりますので、その準備をします。
今回利用するAmazon Linux 2では、amazon-linux-extras
というコマンドがあり、
これでDockerを入れることができます。
$ sudo amazon-linux-extras install -y docker
これでDockerのインストールはOKです。
余談ですが、amazon-linux-extras
はpython2系に依存しているようです。
$ python -V Python 2.7.18
Amazon Linux 2のデフォルトでのpython
コマンドは2系になっていますので、問題なく使えますが、
python3を使いたいからとpython->python3
みたいなシンボリックリンクを作っていたりすると、
コマンドが正常に実行できないので注意が必要です。
Docker Composeを入れる
Docker Composeのインストール方法は調べると色々と出てくるのですが、今回は次のコマンドで導入します。
$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/libexec/docker/cli-plugins/docker-compose $ sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose
参照: できるだけ公式ドキュメントに沿って Amazon Linux 2 に Docker / Docker Compose をインストールする
バージョンがv2.5.0
で決め打ちになっていますので、実際は最新のバージョンに書き換えて利用して頂くと良いと思います。
今回はあまり深く考えずにそのままのバージョンを使いました。
これでDocker Composeがインストールされました。
$ docker compose version Docker Compose version v2.5.0
結果的にはこれだけで楽勝なのですが、ここに辿り着くまではちょっと苦労しました。 というのも、どうやらOpenMetadataは
$ docker compose
というサブコマンドという形で使えないといけないようです。 なので
$ docker-compose
というdocker
とは別コマンドとしてインストールされた場合は起動ができません。
他に試した方法では、docker-compose
になってしまい苦労しました。
コンテナを起動
openmetadata
コマンドのインストール
公式サイトに掲示されているコマンドの一つ目、
openmetadata
コマンドのインストールをやっていきます。
なおこの工程はDockerを使いますので、ここ以降はrootユーザで操作しました。
(掲示してあるコード例はec2-user
でのものだったりしますがご了承ください)
インストールにはpip3
を使う必要があります。
Amazon Linux 2ではpip3
が初めからインストールされていますので、これを使っていきます。
Pythonのバージョンとしては3.7と若干古めですが、特に問題はありませんでした。
[ec2-user@ip-10-0-0-99 ~]$ python3 -V Python 3.7.16 [ec2-user@ip-10-0-0-99 ~]$ pip3 -V pip 20.2.2 from /usr/lib/python3.7/site-packages/pip (python 3.7)
そのままコピペして実行します。
$ pip3 install --upgrade 'openmetadata-ingestion[ docker]'
こちらは特に問題なく終わるかと思います。
コンテナの起動
はじめにDockerサービスを立ち上げます。
$ systemctl start docker
必要に応じてOS起動時に自動で起動する設定も入れておきましょう。
ではいよいよコンテナを起動していきます。
$ metadata docker --start
結構大きいダウンロードが走るので、それなりに時間がかかります。10分くらいは待ったかなと思います。 最後にこんな感じの出力が出れば起動完了です。
これでEC2上でOpenMetadataが起動しました!
ポートフォワードして8585ポートに接続するとログイン画面が表示されるはずです。
上の画像のところにも書かれていますが、Username、Passwordともに admin
でログインが可能です。
以上で何とかOpenMetadataを立ち上げる所まで行けました!
注意点
メモリサイズ
小さいインスタンスでコンテナを立ち上げようとすると、6GB以上をDockerに割り当てるように言われました。 なので今回はメモリが8GBのt3.largeを使用しました。 ギリギリですが、とりあえずは問題なく動いているようです。
EBSボリューム
上記を行うだけで、約8GBのボリュームを使用するようです。 8GBのEBSで作るとこんな感じでディスクの空きはほとんどなくなります。
[ec2-user@ip-10-0-0-99 ~]$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 700K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/nvme0n1p1 8.0G 7.8G 293M 97% / tmpfs 787M 0 787M 0% /run/user/1000
ちょっと触りたいな、というくらいでも16GBくらいにはしておいたほうが良さそうです。
次回の起動時
インスタンスを止めてからもう一度立ち上げる場合などは、 コンテナ起動を前と同じディレクトリで行う必要があります。 コンテナ起動を行ったディレクトリにデータが保存されるため、 別ディレクトリで起動させるとデータがカラの状態で起動されてしまいます。
まとめ
Amazon Linux 2でOpenMetadataのコンテナを起動してみました。
実際はEBSボリュームが足りず(途中試行錯誤したことが原因だと思います)に起動しなかったり、 Pythonのバージョンを行ったり来たりしてなど手間取りました。。
DBに接続してデータを取得する方法などはまた次の機会にご紹介できればと思います。 なお最初は手元のマシンで試そうとしていたのですが、 結局AWS上のDBに接続してデータをとってくる必要があるので、結局EC2で立てる必要がありました。
以上、誰かの参考になれば幸いです。