EC2でOpenMetadataのDockerコンテナを起動してみた

EC2でOpenMetadataのDockerコンテナを起動してみた

Clock Icon2023.08.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

オープンソースのデータカタログツールである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のインストール

dockerdocker 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で立てる必要がありました。

以上、誰かの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.