0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenMetadataにPostgreSQL・PGSpiderのメタデータを取り込んでみた

Posted at

OpenMetadataというデータベースなどのメタデータを管理するデータカタログツールを使ってみました。
OpenMetadataの起動から、データソース(PostgreSQL®あるいはPGSpider™)のメタデータを取り込むまでの手順を紹介します。

今回、OpenMetadataとデータソースは同一ホストマシン上にあり、ホストマシンを経由したネットワークでOpenMetadataとデータソースを接続する(host-gatewayを使いホストマシンのlocalhostに接続する)ための設定も説明します。
PostgreSQL/PGSpiderの準備手順は省略します(こちらが参考になります。PGSpiderの手順はPostgreSQLと同様です)。

architecture

なお、PGSpiderとはPostgreSQL互換のインターフェースを持つデータ仮想化エンジンです。

バージョン情報

今回使用したツールのバージョンは以下のとおりです。

  • OpenMetadata v1.3.1
  • Docker 25.0.4
  • PostgreSQL 16.2
  • PGSpider 4.0.0

OpenMetadataの起動

今回、DockerコンテナでOpenMetadataを立ち上げます。

立ち上げ方は簡単です。ymlファイルをダウンロードして、起動コマンドを実行するだけです。

ymlファイルの入手

OpenMetadataが管理するメタデータを保存するシステムとして、MySQLかPostgreSQLを選べます。
MySQLの場合はdocker-compose.ymlを、PostgreSQLの場合はdocker-compose-postgres.ymlを公式サイトからダウンロードします。

MySQLの場合:

wget https://github.com/open-metadata/OpenMetadata/releases/download/1.2.5-release/docker-compose.yml

PostgreSQLの場合:

wget https://github.com/open-metadata/OpenMetadata/releases/download/1.2.5-release/docker-compose-postgres.yml

OpenMetadataから同一ホストマシンのネットワークに接続するための設定

以下の内容を docker-compose-openmetadata-override.yml としてymlファイルを新たに作成しておきます。
OpenMetadataからホストマシンのネットワークを介してデータソースに接続するための設定です。
OpenMetadataのサービスを提供するために複数のコンテナが立ち上がりますが、データソースにアクセスするのはingestionコンテナです。この設定を行うことで、OpenMetadataのingestionコンテナはhost.docker.internalという名前でホストマシンのlocalhostを使用できるようになります。
なお、"host.docker.internal"の部分は任意の名前を指定できます。

データソースのIPアドレスを指定して接続する場合は本ファイルは不要です。

version: "3.9"
services:
  ingestion:
    extra_hosts:
      - "host.docker.internal:host-gateway"

もし、メタデータを管理するデータベース(MySQLあるいはPostgreSQL)のポートを変更したい場合、以下を本ファイルに記載します。
MySQLの場合:

services:
  mysql:
    ports:
    - "ポート番号:3306"

PostgreSQLの場合:

services:
  postgresql:
    ports:
    - "ポート番号:5432"

起動

次のコマンドを実行するだけで、OpenMetadataが立ち上がります。
-fオプションで、オリジナルのymlファイルと追加設定用のymlファイルを指定します。

MySQLの場合:

docker compose -f docker-compose.yml -f docker-compose-openmetadata-override.yml up --detach

PostgreSQLの場合

docker compose -f docker-compose-postgres.yml -f docker-compose-openmetadata-override.yml up --detach

起動の確認

以下のように、4つのコンテナ(openmetadata_ingestion、openmetadata_server、openmetadata_postgresqlおよびopenmetadata_elasticsearch)が動いていればOKです。

$ docker ps -a
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED              STATUS                             PORTS                                                                                  NAMES
b4d9afa0d0c1   docker.getcollate.io/openmetadata/ingestion:1.3.1      "/bin/bash /opt/airf…"   45 seconds ago       Up 9 seconds                       0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                              openmetadata_ingestion
3b545ded6987   docker.getcollate.io/openmetadata/server:1.3.1         "/bin/bash /openmeta…"   45 seconds ago       Up 10 seconds (health: starting)   0.0.0.0:8585-8586->8585-8586/tcp, :::8585-8586->8585-8586/tcp                          openmetadata_server
0ef6ed3d8c30   docker.getcollate.io/openmetadata/postgresql:1.3.1     "docker-entrypoint.s…"   About a minute ago   Up 45 seconds (healthy)            0.0.0.0:5432->5432/tcp, :::5432->5432/tcp                                              openmetadata_postgresql
184eb2fba67d   docker.elastic.co/elasticsearch/elasticsearch:8.10.2   "/bin/tini -- /usr/l…"   About a minute ago   Up 45 seconds (healthy)            0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   openmetadata_elasticsearch
...

OpenMetadataとデータソースの連携

ブラウザで http://<ホストマシンのIP>:8585/ にアクセスします。
すると、以下の画面が出るので、adminユーザ(初期パスワードはadmin)でログインします。

login

サービスとしてデータソースを登録

  1. サイドメニューの「設定」をクリック
    settings

  2. 「サービス」→「データベース」→「PostgreSQL」の順にクリックし、「次へ」
    add_database

  3. サービス名に任意の名前を入力して「次へ」

  4. データソースの情報を入力し、「Save」

    • Host And Portには、host.docker.internal:データソースポート番号を入力すればよいです。以下の図はPostgreSQLの場合の例です(PGSpiderの場合デフォルトのポートは4813です)。
    • OpenMetadataのメタダータ管理用にPostgreSQLが5432ポートで立ち上がっているため、今回はデータソースとしてのPostgreSQLは5433ポートを使用しました。

    service_settings2

    • さらに、PGSpiderに接続する場合、「PostgresConnection Advanced Config」をクリックし、pgspider+psycopg2を選択する。
      pgspider

    • 「テスト 接続」をクリックすると、現在の設定情報で接続できるか確認が行えます。
      test_connection

メタデータの取り込み設定(インジェスチョン)

  1. データソース登録後に出てきた画面の「インジェスチョンを追加」をクリック
    • あるいは「設定」→「サービス」→「データベース」→「先ほど登録したデータソース」→「インジェスチョン」タブ→「メタデータインジェスチョンを追加」をクリック
  2. 「Name」に任意の名前を入力して「次へ」
    • ここで、取り込むメタデータの対象を設定することが可能。今回はデフォルト設定のまま進む。
  3. 取り込みの周期を設定し、「追加&デプロイ」
    • 今回はデフォルトの毎時00分を設定しました。

メタデータの閲覧

インジェスチョン処理がバックグラウンドで動作し、完了するとメタデータが閲覧できるようになります。
サイドバーの「探索」をクリックすると、以下の図のようにメタデータが取り込まれていることが分かると思います。
metadata

PGSpiderのメタデータを見てみると、仮想テーブルや外部テーブルのメタデータが取り込まれていることがわかります。

pgspider_meta

おわりに

OpenMetadataの起動方法とメタデータを取り込むための設定手順を説明しました。
PGSpiderからメタデータを取り込むには、デフォルトの設定から1箇所変更する必要があるため注意です(「PostgresConnection Advanced Config」という項目)。

参考文献


PGSpiderは(株)東芝の登録商標です。
社名・商品名・サービス名などは、それぞれ各社が商標として使用している場合があります。​

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?