OpenMetadataに入門してみた
データカタログの製品はこれまで触れたことがありませんでしたので、今回OpenMetadataのOSS版をローカルmacにインストールして遊んでみたいと思います!!
データカタログって?
そもそもデータカタログってなんぞや?って話からですね。正直私も理解していないです。。。
いつもお世話になっているtrocco様のブログより、拝借(丸コピ)しご紹介します。
前提(ブログから丸コピ)
技術の進歩により膨大な量のデータが取り扱われるようになり、データの利活用が進む一方で増え続けるデータをどのように管理するのかというデータマネジメントが大きな課題がある。
データカタログとは?(ブログから丸コピ)
「どのような構造のデータであるか」「いまどこにあるのか」「どのように取得されたのか」などデータを説明するデータをメタデータといいます。そしてデータカタログとは一言でいうなら“メタデータを管理するシステム”です。メタデータの管理を通じて、大元のデータに対してより高度なデータマネジメントを可能とするのがデータカタログの意義となります。
なるほどです。DWHで管理しているデータやそうでないデータなどをデータマネジメントに活かせるよう整備管理することだと理解しました。合ってるかな・・・
OpenMetadataとは
OpenMetadataは企業が持つメタデータを一箇所に集め運用管理を行うことでデータエンジニアへの負荷を下げる効果があります。
その他特徴としては、データ連携を行える、メタデータのバージョニング、データのリネージュ化、幅広いコネクタをサポートしており、データを集めやすい環境があります。
詳細は公式ドキュメントを参照ください。
OpenMetadataインストール
動作環境
- mac book pro 2018 15inch RAM16 SSD512
- Python 3.9.6
- Docker Compose version v2.15.1
pipとsetuptoolsのアップグレード
pip3 install --upgrade pip setuptools
OpenMetadataのモジュールをインストール
pip3 install --upgrade "openmetadata-ingestion[docker]"
OpenMetadataのDocker起動
上記openmetadata-ingestion
をインストールするとmetadaコマンドが使えるようになるんですが、PATHが通っていない以下パスに入っちゃってPATH通すのめんどくさいので、フルパス指定で実行してます。ごめんなさい
/Users/*****/Library/Python/3.9/bin/metadata docker --start
インストールが終わるのをひたすら待つ
体感20分〜30分くらい待ちました。
起動ログを確認する
metadata docker --start
コマンド実行ログが以下のように出力されればOKです。
~略~
[+] Running 9/9
⠿ Network openmetadata_app_net Created 0.1s
⠿ Volume "openmetadata_ingestion-volume-dag-airflow" Created 0.0s
⠿ Volume "openmetadata_ingestion-volume-dags" Created 0.0s
⠿ Volume "openmetadata_ingestion-volume-tmp" Created 0.0s
⠿ Volume "openmetadata_es-data" Created 0.0s
⠿ Container openmetadata_elasticsearch Started 1.8s
⠿ Container openmetadata_mysql Healthy 49.0s
⠿ Container openmetadata_server Started 48.0s
⠿ Container openmetadata_ingestion Started 49.4s
[2023-07-15 16:16:04] INFO {metadata.Metadata:docker:96} - Ran docker compose for OpenMetadata successfully.
[2023-07-15 16:16:04] INFO {metadata.Utils:logger:183} - Waiting for server to be up at http://localhost:8585
[2023-07-15 16:18:38] INFO {metadata.Metadata:docker:138} - Time taken to get OpenMetadata running: 0:23:35.243638
[2023-07-15 16:18:38] INFO {metadata.Utils:logger:183} -
✅ OpenMetadata is up and running
[2023-07-15 16:18:38] INFO {metadata.Utils:logger:183} -
Open http://localhost:8585 in your browser to access OpenMetadata.
To checkout Ingestion via Airflow, go to http://localhost:8080
(username: admin, password: admin)
[2023-07-15 16:18:38] INFO {metadata.Utils:logger:183} - We are available on Slack, https://slack.open-metadata.org/.Reach out to us if you have any questions.
If you like what we are doing, please consider giving us a star on github at https://github.com/open-metadata/OpenMetadata. It helps OpenMetadata reach wider audience and helps our community.
Airflowにアクセスする
色々なデータをOpenMetadataに集めるためにAirflowが標準で組み込まれています。
Password: admin
無事ログインできたら以下のような感じです。
OpenMetadataにアクセスする
Password: admin
ログインすると以下の感じです。
まだ何ができるかはわかりませんが、少しづつ確認していきたいと思います。
20240704追記
カスタムコネクターについて
OpenMetadataのカスタムコネクターを使って、CSVで管理しているデータ(データベース名、スキーマ名、テーブル名など)をOpenMetadataに取り込んでみたので、備忘録として残そうと思います。
OpenMetadataでカスタムコネクターを利用するには、ちょっとした一手間が必要です。
一手間と言っても、OpenMetadataでカスタムコネクターを利用できるように設定するだけです。
基本的に公式の手順に沿って、設定していきます。
個人的にはGithubの手順の方がわかりやすかったです。
デモ用のGitリポジトリをクローンします
git clone https://github.com/open-metadata/openmetadata-demo.git
ディレクトリ移動します
cd openmetadata-demo/custom-connector/docker/
Dockerファイルの下2行をコメントアウト
dockerを起動すると、addressbook.proto
が存在しませんと怒られますので、コメントアウトします。
リポジトリ内を検索しても、存在しなかったので、仕方なしです・・・
dockerディレクトリには、Dockerfileとdocker-compose.ymlの2種類が存在しています。
この2つのファイルの関係性は、docker-compose.yml内のOpenMetadata-Ingestionサーバを起動する元がDockerfileとなっています。
そして、Dockerfileはカスタムコネクタを利用できるように設定されたOpenMetadata-Ingestionサーバを起動するようになっています。
FROM openmetadata/ingestion:1.3.2
# Let's use the same workdir as the ingestion image
WORKDIR ingestion
USER airflow
# Install our custom connector
COPY connector connector
COPY setup.py .
COPY sample.csv .
#COPY addressbook.proto . #ここをコメントアウト
RUN pip install --no-deps .
以下がサンプルの取り込み用CSVファイルす。
Gitのリンク
name,column_names,column_types
table1,c1;c2,INT;DATE
table2,c1;c2;c3,STRING;STRING;STRING
dockerを起動させます
openmetadata-demo/custom-connector/docker/
上で以下コマンドを実行し、dockerを起動させます。
docker compose up -d
Database Servicesにてカスタムコネクターを作成します
docker起動後、ログインし、カスタムコネクターを作成します。
こちらの設定もチュートリアル通りに設定しました。
カスタムコネクターのIngestionを起動します
Ingestionの成功を確認
Discussion