🕌

OpenMetadataに入門してみた

2023/07/15に公開

データカタログの製品はこれまで触れたことがありませんでしたので、今回OpenMetadataのOSS版をローカルmacにインストールして遊んでみたいと思います!!

データカタログって?

そもそもデータカタログってなんぞや?って話からですね。正直私も理解していないです。。。
いつもお世話になっているtrocco様のブログより、拝借(丸コピ)しご紹介します。
https://blog.trocco.io/glossary/data-catalog

前提(ブログから丸コピ)

技術の進歩により膨大な量のデータが取り扱われるようになり、データの利活用が進む一方で増え続けるデータをどのように管理するのかというデータマネジメントが大きな課題がある。

データカタログとは?(ブログから丸コピ)

「どのような構造のデータであるか」「いまどこにあるのか」「どのように取得されたのか」などデータを説明するデータをメタデータといいます。そしてデータカタログとは一言でいうなら“メタデータを管理するシステム”です。メタデータの管理を通じて、大元のデータに対してより高度なデータマネジメントを可能とするのがデータカタログの意義となります。

なるほどです。DWHで管理しているデータやそうでないデータなどをデータマネジメントに活かせるよう整備管理することだと理解しました。合ってるかな・・・

OpenMetadataとは

OpenMetadataは企業が持つメタデータを一箇所に集め運用管理を行うことでデータエンジニアへの負荷を下げる効果があります。
その他特徴としては、データ連携を行える、メタデータのバージョニング、データのリネージュ化、幅広いコネクタをサポートしており、データを集めやすい環境があります。
詳細は公式ドキュメントを参照ください。
https://open-metadata.org/

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が標準で組み込まれています。
http://localhost:8080/
Username: admin
Password: admin

無事ログインできたら以下のような感じです。

OpenMetadataにアクセスする

http://localhost:8585/signin
Username: admin
Password: admin

ログインすると以下の感じです。

まだ何ができるかはわかりませんが、少しづつ確認していきたいと思います。

20240704追記

カスタムコネクターについて

OpenMetadataのカスタムコネクターを使って、CSVで管理しているデータ(データベース名、スキーマ名、テーブル名など)をOpenMetadataに取り込んでみたので、備忘録として残そうと思います。

OpenMetadataでカスタムコネクターを利用するには、ちょっとした一手間が必要です。
一手間と言っても、OpenMetadataでカスタムコネクターを利用できるように設定するだけです。
基本的に公式の手順に沿って、設定していきます。
https://docs.open-metadata.org/v1.4.x/connectors/custom-connectors
個人的にはGithubの手順の方がわかりやすかったです。
https://github.com/open-metadata/openmetadata-demo/tree/main/custom-connector

デモ用の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サーバを起動するようになっています。

Dockerfile
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の成功を確認

CSVファイルが取り込まれていることを確認

Discussion