Data Discovery Platform(DDP)のすべて
(eugeneyan.com)Nemo、Amundsen、DataHub などが必要な理由と、それらが提供する機能を整理
「なぜ DDP が必要なのですか? それは何をするものですか?」
→ 組織内で必要なデータがどこにあるのかを素早く検索し、それが何なのかを理解し、使い方を学べるよう支援するプラットフォーム
[ データを探すときによく出る質問 ]
→ 「_____」データはどこで見つけられますか? : どんな単語で検索すべきかすら分からないこともある。click、page view などの単語でテーブル名やカラム名を検索
→ このデータは何ですか? : このテーブルにはどんなカラムがありますか、どのようなデータ型ですか、この値は何を意味していますか?
→ 誰にアクセス権を依頼すればよいですか? : データのオーナーシップや権限情報も、メタデータの一部であるべき
→ このデータはどのように生成されましたか? 信頼できますか? : 誰が作り、どのような経路で生成されましたか? アナリストが毎月手作業で作ったものですか? 社内でどれくらい使われていますか? このデータの系譜は?
→ このデータはどう使えばよいですか? : どのカラムが関連していますか? どのテーブルと join すべきですか? データを整えるにはどのフィルタを使うべきですか? このテーブルを主に使っている人は誰ですか?(その人に聞けばよいので)どのカラムを主に使っていますか?
→ このデータはどれくらいの頻度で更新されますか? : たびたび遅延するなら、それはどのくらいの頻度で起きますか? データ期間はどれくらいですか? 数週間分しかないなら、機械学習には向いていないかもしれません。
[ データを見つけ、理解し、使うための機能 ]
- データを検索、またはより賢い方法で見つける
→ 欲しいデータを見つける基本的な方法は、カラム名、テーブルやカラムの説明、ユーザーが入力した説明やコメントなどのメタデータを ElasticSearch で検索すること
→ 検索結果が多い場合は優先順位付けが必要。Lyft と Spotify では、テーブルがどれだけ多く使われているかで順位を決定。つまり、クエリログを解析してテーブル使用量を ElasticSearch のランキング情報として入れる。
→ Facebook の Nemo はこれをさらに拡張。検索語を spaCy で自然言語解析し、ソーシャルグラフ検索で使う Unicorn を用いた kNN ベースのスコアリングなどによってランキングを決定
→ 別の方法はレコメンド。組織やチーム内で最も多くアクセス・利用されているデータを推薦
- スキーマ、プレビュー、統計、系譜(Lineage)によってデータを理解する
→ テーブルを理解するための基本情報はデータスキーマ : カラム名、データ型、説明(Description)
→ ユーザーに読み取り権限があれば、データのプレビュー(100 行程度)を提供可能
→ 事前計算されたカラム単位の統計も提供 : カラムごとの Row 数、Null の Row 数、最大/最小/平均/中央値/標準偏差、一意な Row 数、日付カラムならデータ全体の期間範囲
→ データ系譜を提供して前後の依存関係も確認 : ETL ジョブ(Airflow でスケジューリングされる)の場合、スケジュールや遅延有無などを確認できる。
- 他のユーザーの利用形態を通じてデータの使い方を学ぶ
→ テーブルを見つけた後、どうすればそのテーブルの使い方を助けられるか? 簡単な方法は、そのテーブルに関連する人を見せること
→ データ所有者は権限を付与でき、よく使う人はデータの紹介や特徴を教えられる : Amundsen と DataHub は、テーブルに人をエンティティとして関連付けられる
→ ただし、そのデータに詳しい専門家だけに頼るとボトルネックになり得るため、追加のメタデータを結び付ける方がよりスケーラブルな方法
→ ユーザーが最も関連性の高いカラムを見つけられるよう、各列の利用統計を提供することも可能。
→ また、そのテーブルと join すべきテーブルを知るため、よく join されるテーブル一覧と join に使う列を提供すると便利。こうしたデータにはクエリログ解析が必要
→ データ利用に関するより詳しい情報を提供するには、そのテーブルに対する最近のクエリを提供でき、そこから実際にどのデータをフィルタしているかが分かる。
→ データ系譜(Lineage)も有用。現在のテーブルを使っているダウンストリームテーブルが分かり、それを生成するクエリも見せられる。これにより、テーブルが他のユースケースでどう使われているかを確認可能
→ こうして分かったダウンストリームテーブルが自分の目的と一致するなら、それを使うことで計算・保存コストを削減できるようになる。
→ Twitter の Data Access Layer、Uber の Databook、Netflix の Metacat などが Lineage をサポート
→ データを実際に使う前に、どれくらいの頻度で更新されるかも知りたい。データがどの時間単位(日/時など)でパーティションされているかを明示するのが役立つ。
→ DDP は Airflow のようなプラットフォームと連携して、スケジュールされた ETL ジョブを調査し、どれくらい時間がかかるかなどを見ることができる。
[ 各 DDP の上位比較 ]
→ すべて ElasticSearch または Solr ベースの free-text 検索をサポート。Amundsen と Lexikon はホームページでレコメンド機能を提供
→ すべて基本的なテーブル情報(スキーマ、説明)を表示。Amundsen と Databook はデータプレビューとカラム統計を提供
→ ほとんどのプラットフォームはデータ Lineage 機能を内蔵。Amundsen は現時点では未対応だが、2020 ロードマップに含まれている
→ 5 つのプラットフォームがオープンソースとして公開
[ オープンソース DDP の比較 ]
- DataHub (LinkedIn) : https://github.com/linkedin/datahub
→ 2020 年 2 月に公開
→ 検索、テーブルスキーマ、オーナーシップ、系譜機能をサポート
→ Dataset、User、Group の 3 つのエンティティをサポート。Schemas/Jobs/Metrics/Dashboards などのエンティティも追加予定
→ Hive、Kafka、RDB メタデータをサポート(社内ではさらに多くをサポートしており、今後公開される可能性もある)
→ Expedia、TypeForm などが採用しており、MS、Morgan Stanley、Orange Telecom、ThoughtWorks なども POC 中
- Amundsen (Lyft) : https://github.com/amundsen-io/amundsen
→ 2019 年 10 月に公開
→ 検索、レコメンド、プレビュー/カラム統計/所有者/主利用者が分かりやすく表現されたテーブル詳細ページをサポート。系譜機能はないが追加予定
→ Data Quality System との連携も提供予定(おそらく Great Expectations - https://greatexpectations.io/)
→ 優れたコミュニティがある : BigQuery/Redshift/Apache Atlas などとの連携を開発して貢献
→ 15 種類以上のデータソース(Redshift、Cassandra、Hive、Snowflake および各種 RDB)、Tableau、Redash、Mode Analytics ダッシュボード、Airflow などとの連携をサポート
→ ドキュメントもよく整備されており、Docker でローカルテスト可能
→ Asana、Instacart、iRobot、Square を含む 30 以上の組織が導入。
→ 2020 年 7 月に Linux AI 財団の新しいインキュベーションプロジェクトに参加。
- Metacat (Netflix) : https://github.com/Netflix/metacat
→ 2018 年 6 月に公開
→ 検索、スキーマ表示、コストと容量を分析するメトリクスを含む。
→ テーブル/パーティション変更に関する通知機能がある。コストなどの問題で削除される際に通知を受け取れる。
→ Hive、Teradata、Redshift、S3、Cassandra、RDS との連携をサポート
→ スキーマ/メタデータのバージョニング/検証機能を作業中だと明らかにしている。
→ オープンソースではあるが、ドキュメントがまったくないため導入した会社はない。
- Marquez (WeWork) : https://github.com/MarquezProject/marquez
→ 2018 年 10 月に公開
→ データ品質と系譜に注力
→ データガバナンス、Great Expectations を通じたデータ品質、データセットとジョブのカタログをサポート
→ WebUI および Airflow コンポーネント、Java/Python クライアントを提供
→ Docker でローカルテスト可能だが、ドキュメントは多くない
- Apache Atlas (Hortonworks) : https://atlas.apache.org/
→ 2015 年 7 月に Data Governance Initiative の一部として開始
→ 2018 年 6 月に 1.0 が公開され、現在は 2.1
→ 主目的はデータガバナンスであり、組織がセキュリティ/コンプライアンス要件を満たせるよう支援すること。
→ リソースへのタグ付け、ダウンストリームデータセットへのタグ伝播、メタデータアクセスに対するセキュリティなど豊富な機能を備えている
→ メタデータ変更通知機能も可能
→ free-text 検索、スキーマ詳細表示、データ系譜をサポート
→ 高度な検索機能として、SQL に似た構文で検索することもサポート
→ HBase、Hive、Kaflka などのメタデータソースとの連携をサポート
→ メタデータを REST API で作成/修正することも可能
→ ドキュメントもよく整備されている
-
ING が Atlas と Amundsen を併用導入した事例は興味深い https://medium.com/wbaa/…
-
完全な DDP ではないが、オープンソースの Whale はデータウェアハウスの内容を Markdown でインデックスする超シンプルな DDP ツールで、検索、修正、バージョニングなどをサポート
→ 開発者向け DDP ツールとして見てみる価値がある。 https://github.com/dataframehq/whale
- 機械学習ほど派手ではないが、データディスカバリーはデータサイエンスのワークフローにおける重要な最初のステップ
2件のコメント
おお、本当に良いまとめですね。Amundsen を一度使ってみようと思います。
Nemo - Facebookのデータディスカバリープラットフォーム https://ja.news.hada.io/topic?id=3024
国内ではあまり見られないDDP構築事例