15
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Apache Atlas単独でdata-lineageを表示する

Last updated at Posted at 2020-09-03

#はじめに
今回、所属しているチームでメタデータ管理1のOSSについて調査する機会があり、lineageの描写と管理が良さそうなApache Atlasを見つけたので試してみました。(Apache Atlasとは何かについてはこちら
調査を行っているとApache Atlasを単独で使用しているような記事はあまり見当たらなかったため、本記事ではApache Atlasの機能の内、起動からdata-lineageの簡単な作成・表示を行うまでを記載していこうと思います。
※本記事で実行するApache Atlasのバージョンは 2.0.0 です。

#実行環境

  • os:windows10 Home(64bit)

Apache Atlasを動かすために、以下のインストールが必要です。

  • java:1.8.0_265
  • python:2.7.7
  • maven:3.6.3

※なお、プロキシを使用しない環境での動作確認になっています。

#Apache Atlasのビルドと実行
公式の手順に沿ってApache Atlasを実行していきます。
gitでもzipでもどちらでも良いのでローカルにソースをダウンロードし、そのディレクトリ直下で以下のコマンドを実行します。

   $ export MAVEN_OPTS="-Xms2g -Xmx2g"
   $ mvn clean package -Pdist -DskipTests=true

ビルドが開始されるので3~40分程度待ち、以下の表示がされれば成功です。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  27:17 min
[INFO] Finished at: 2020-08-31T01:19:29+09:00
[INFO] ------------------------------------------------------------------------

distroディレクトリ配下にtargetディレクトリが新たに作成され、その中にある「apache-atlas-2.2.0-SNAPSHOT-bin.tar.gz」(なぜ2.0.0ブランチで2.2.0なのかはわかりませんが)を任意の場所に解凍します。

解凍完了後binディレクトリ配下の「atlas_start.py」を実行することで、Apache Atlasが起動します。
http://localhost:21000 にアクセスすると以下のようなログイン画面が表示されます。
初期ユーザとパスワードはどちらも「admin」です。

login.PNG

ログインに成功すると以下のような画面が表示され、晴れてApache Atlasを使用することができます。

index.PNG

#data-lineageの作成

ようやくApache Atlasを起動することができたので、ここからは以下のようなdata-lineageを表示することを目標にします。

lineagemoto.PNG

今回は仮想シナリオとして

INPUT_TEST_DATAという名前の入力データを

TEST_JOBという加工するスクリプトを通し

OUTPUT_TEST_DATAという名前のデータとして出力する

といった形を想定しています。

##Typeの登録
Apache Atlasは、どういったデータなのかを表す箱を用意する必要があるため、今回は加工する部分のTypeを登録していきます。(上の画像では中央の歯車マークに相当します)
※Typeの説明はこちらのページのTypesを参照してください。
以下のJsonが必要最低限入力した状態のデータで、これをRest APIを使用してApache Atlasに登録していきます。

{
  "entityDefs" : [ {
    "category" : "ENTITY",
    "name" : "JOB",
    "superTypes" : [ "Process" ],
    "attributeDefs" : []
  } ]
}

Typeの登録で使用するRest APIは以下です。
※参考:Typeの登録

POST
http://localhost:21000/api/atlas/v2/types/typedefs/

##Entityの登録
Typeの登録が完了した後は実データであるEntityを登録していきます。
画像では緑色で囲っている部分です。
※Entityの説明はこちらのページのEntitiesを参照してください。

lineage-entity.png

Entityは接続できる組み合わせが決まっているため、「Dataset」と作成した「JOB」を使用します。

INPUT_TEST_DATA
{
    "entity": {
        "typeName": "DataSet",
        "attributes": {
        "name": "INPUT_TEST_DATA",
            "qualifiedName": "INPUT_TEST_DATA"
        }
    }
}
OUTPUT_TEST_DAT
{
    "entity": {
        "typeName": "DataSet",
        "attributes": {
        "name": "OUTPUT_TEST_DATA",
            "qualifiedName": "OUTPUT_TEST_DATA"
        }
    }
}
TEST_JOB
{
    "entity": {
        "typeName": "JOB",
        "attributes": {
        "name": "TEST_JOB",
            "qualifiedName": "TEST_JOB"
        }
    }
}

Entityの登録で使用するRest APIは以下です。
※参考:Entityの登録

POST
http://localhost:21000/api/atlas/v2/entity/

##Relationshipの登録
Entityの登録が完了した後は、Entity同士を紐づける矢印の部分のデータを登録していきます。
画像では水色で囲っている部分です。

lineage-relationship.png
黄色の矢印(INPUT_TEST_DATA→TEST_JOB)
{
   "typeName": "dataset_process_inputs",
   "end1": {
     "typeName": "JOB",
     "uniqueAttributes": {
       "qualifiedName": "TEST_JOB"
     }
   },
  "end2": {
    "typeName": "DataSet",
    "uniqueAttributes": {
       "qualifiedName": "INPUT_TEST_DATA"
     }
   }
}
赤色の矢印(TEST_JOB→OUTPUT_TEST_DATA)
{
   "typeName": "process_dataset_outputs",
   "end1": {
     "typeName": "JOB",
     "uniqueAttributes": {
       "qualifiedName": "TEST_JOB"
     }
   },
  "end2": {
    "typeName": "DataSet",
    "uniqueAttributes": {
       "qualifiedName": "OUTPUT_TEST_DATA"
     }
   }
}

Relationshipの登録で使用するRest APIは以下です。
※参考:Relationshipの登録

POST
http://localhost:21000/api/atlas/v2/relationship/

##結果
全てのデータの登録が完了すると目標であった画像のdata-lineageが完成します。

lineagetab.png

#おわりに
Apache Atlasの起動からdata-lineageの表示まででしたが、いかがだったでしょうか?
実際に動かそうとすると、公式ページにも記載されていないことが多々あり調査には大分苦戦しました。
ただ、個人としてはApache Atlasはメタデータ管理の分野で有用なツールになりうる存在だと思います。
今回はApache Atlasの起動とdata-lineageの表示が目標だったため説明を省略した部分がありますが、各データの意味やその他にも機能があるので、次回以降そういった箇所にフォーカスした記事を記載していこうと思います。

  1. メタデータ管理について知りたい方は こちらの記事 が分かりやすいです。

15
3
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
15
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?