Open30

OpenMetadata

nixgemnixgem

https://docs.open-metadata.org/v1.2.x/quick-start/local-kubernetes-deployment

でOpenMetadataを動かしたいので個人用メモ
そもそも誰も読まへんやろ。

バージョンを1.2にしてみた。

nixgemnixgem

install openmetadata dependencies helm chart
なんかchartを作る

1年半ぶりにk8sを触った。
pod立ち上がるのに時間がかかる。

~ % kubectl get pods
NAME                                                       READY   STATUS              RESTARTS   AGE
elasticsearch-0                                            0/1     Init:0/1            0          25s
mysql-0                                                    0/1     ContainerCreating   0          25s
openmetadata-dependencies-db-migrations-7d66b9997d-splzl   0/1     Init:0/1            0          25s
openmetadata-dependencies-scheduler-58669495db-bvnlg       0/1     Init:0/2            0          25s
openmetadata-dependencies-sync-users-855449cd67-szdcc      0/1     Init:0/2            0          25s
openmetadata-dependencies-triggerer-568bcd8586-lxl6p       0/1     Init:0/2            0          25s
openmetadata-dependencies-web-77c576f659-s87bl             0/1     Init:0/2            0          25s
nixgemnixgem
  • Bitnami MySQL (当時:helm chart version 9.7.1)
    • https://bitnami.com/
    • なに?Bitnamiって。vmwareに買収された?要はMySQLのBitnami版ですよってことでいい?
      • Sun Microsystemsとかいつの時代だったろうか。。。
  • ElasticSearch (当時:helm chart version 7.16.3)
  • Airflow (当時:helm chart version 8.6.1)
    • いつもの
nixgemnixgem

Pod立ち上げ

helm install openmetadata open-metadata/openmetadata

ポート解放

kubectl port-forward service/openmetadata 8585:http
nixgemnixgem

Settings > Databasesの画面の右ペインにある「Add New Service」から

Type:snowflakeを作る

snowflakeは会社のサンドボックスの接続にしておく。
(接続の仕方は割愛します。)

dbtの

dbt init project

で作成したデータベースを
Ingestionsで設定して、RUNしてみた

これ

ところがどっこい
Transientになっていて、取り込みオプションたことを知らなかった。(あほ)

nixgemnixgem

そもそも

  • dbt configulation source
  • dbt catalog file path(catalog.json)
  • dbt manifest file path(manifest.json)
  • dbt run results file path

の意味がよくわかってないぞ。。。

nixgemnixgem

なるほど、上の3つのjsonはtargetディレクトリの配下に作成されるのか。。。

catalog.json

dbt docs serve
nixgemnixgem

今日作業1時間しかないが、
category.jsonを無理やり読ませるか。。。

nixgemnixgem

localで作る

kubectl cp manifest.json openmetadata-dependencies-web-77c576f659-s87bl:/home/airflow/ingestion/examples/sample_data
nixgemnixgem

k8sで作ったものは全部のpodに入れてもファイルがないぞと言われる。。。?

nixgemnixgem

openmetadata-dependencies-web
というserviceに8080ポートを開放して入ってみる。
airflow画面になるから。

nixgemnixgem

ローカル環境のPCを立ち上げたらやること

minikube start --cpus=4 --memory=8192
kubectl port-forward service/openmetadata 8585:http
nixgemnixgem

AWS S3経由でdbtファイルの取り込みを行う。
ローカルでやろうとするもkubernetesであげてるから失敗した、、、😅

nixgemnixgem

というわけで

dbt docs generate

で更新したcatalog.jsonをS3にアップロードすればよさげ。

nixgemnixgem

ここから話は変わって、すでに入っているデータベースにmetadataをingestionするぞ!のコーナー

nixgemnixgem

https://docs.open-metadata.org/v1.1.x/connectors
だと思ってる。

OpenMetadata は、以下のコネクタのリストからメタデータを抽出できます。

UI 経由で取り込みを実行するには、
OpenMetadata Ingestion Container を使う必要がある。

つまり、、、
airflowを書き換えればいいってこと?

nixgemnixgem
  • DAGの再実行禁止
  • キャッチアップの禁止
  • DEBUGログに注意
  • DAG を構築する場合は、CLI を使用して取り込みをテストします。

いや、開発手法だよなこれ。。。

nixgemnixgem

sdkを使って、、、?みたけど
3.11だと動かん。。。3.9にダウングレードした環境でテスト

nixgemnixgem

認証情報(server_config)は前提条件として、データベースソースの一覧は以下から取得できるらしい。

metadata = OpenMetadata(server_config)
services = metadata.list_services(DatabaseService)