OpenMetadata
でOpenMetadataを動かしたいので個人用メモ
そもそも誰も読まへんやろ。
バージョンを1.2にしてみた。
歯車からKubernetesを
ところで、Docker Desktopは使えるからよきものの。
自分の個人所有PCはlimaなのでminikubeを使うしかない???
結局、brewでminikubeをinstallした
brew install minikube
brew install helm
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
- Bitnami MySQL (当時:helm chart version 9.7.1)
- https://bitnami.com/
- なに?Bitnamiって。vmwareに買収された?要はMySQLのBitnami版ですよってことでいい?
- Sun Microsystemsとかいつの時代だったろうか。。。
- ElasticSearch (当時:helm chart version 7.16.3)
- https://www.elastic.co/jp/elasticsearch
- 様々なユースケースを解決する分散型RESTful検索/分析エンジン
- Airflow (当時:helm chart version 8.6.1)
- いつもの
Pod立ち上げ
helm install openmetadata open-metadata/openmetadata
ポート解放
kubectl port-forward service/openmetadata 8585:http
つぎなにすればいいかわからんので、snowflakeをつないでみる。
Settings > Databasesの画面の右ペインにある「Add New Service」から
Type:snowflakeを作る
snowflakeは会社のサンドボックスの接続にしておく。
(接続の仕方は割愛します。)
dbtの
dbt init project
で作成したデータベースを
Ingestionsで設定して、RUNしてみた
ところがどっこい
Transientになっていて、取り込みオプションたことを知らなかった。(あほ)
dbtからの取り込みを行いたいが、dbt cloudではなくdbt coreでやったときどうなるか検証
こんなのがあるのか。
そもそも
- dbt configulation source
- dbt catalog file path(
catalog.json
) - dbt manifest file path(
manifest.json
) - dbt run results file path
の意味がよくわかってないぞ。。。
manifest.json
なるほど、上の3つのjsonはtargetディレクトリの配下に作成されるのか。。。
catalog.json
dbt docs serve
今日作業1時間しかないが、
category.jsonを無理やり読ませるか。。。
localで作る
kubectl cp manifest.json openmetadata-dependencies-web-77c576f659-s87bl:/home/airflow/ingestion/examples/sample_data
k8sで作ったものは全部のpodに入れてもファイルがないぞと言われる。。。?
openmetadata-dependencies-web
というserviceに8080ポートを開放して入ってみる。
airflow画面になるから。
ローカル環境のPCを立ち上げたらやること
minikube start --cpus=4 --memory=8192
kubectl port-forward service/openmetadata 8585:http
-
http://localhost:8585/signin
でログイン(ユーザーはデフォルトだとadmin/admin)
AWS S3経由でdbtファイルの取り込みを行う。
ローカルでやろうとするもkubernetesであげてるから失敗した、、、😅
というわけで
dbt docs generate
で更新したcatalog.jsonをS3にアップロードすればよさげ。
ここから話は変わって、すでに入っているデータベースにmetadataをingestionするぞ!のコーナー
だと思ってる。
OpenMetadata は、以下のコネクタのリストからメタデータを抽出できます。
UI 経由で取り込みを実行するには、
OpenMetadata Ingestion Container を使う必要がある。
つまり、、、
airflowを書き換えればいいってこと?
ベスプラ?
Airflowがわかってないとダメらしい。
それなら、Airflowを使ういい機会なので練習していこう。
- DAGの再実行禁止
- キャッチアップの禁止
- DEBUGログに注意
- DAG を構築する場合は、CLI を使用して取り込みをテストします。
いや、開発手法だよなこれ。。。
SDKを入れてみる。
こんなところにREST APIの書くなや。。。
helm使って動かしてるので
環境変数で誤魔化せばいいのかな??
Restful API
sdkを使って、、、?みたけど
3.11だと動かん。。。3.9にダウングレードした環境でテスト
認証情報(server_config)は前提条件として、データベースソースの一覧は以下から取得できるらしい。
metadata = OpenMetadata(server_config)
services = metadata.list_services(DatabaseService)