web-dev-qa-db-ja.com

Databricks、Synapse、およびADLS gen2向けのデータガバナンスソリューション

私はデータガバナンスに不慣れです。質問に情報が不足している場合はご容赦ください。

目的

Azureプラットフォームで中規模の通信会社向けに、データレイクとエンタープライズデータウェアハウスをゼロから構築しています。私たちは、ETL処理、データサイエンス、MLおよびQAアクティビティにADLS gen2、DatabricksおよびSynapseを使用しています。

すでに入力テーブルが1頭あり、年間25 TBです。今後はもっと期待しています。

ビジネスには、クラウドにとらわれないソリューションへの強い要求があります。それでもAWSとAzureで利用できるので、Databricksで問題ありません。

質問

スタックと要件に最適なデータガバナンスソリューションは何ですか?

私の回避策

データガバナンスソリューションはまだ使用していません。私は AWS Data Lake ソリューションが好きです。それは、すぐに使える基本的な機能を提供するからです。 AFAIK、 Azure Data Catalog は、それが ADLS gen2をサポートしていない であるため、古くなっています。

非常にすばやくググリングした後、3つのオプションが見つかりました。

  1. Databricks Privacera
  2. Databricks Immuta
  3. Apache RangerとApache Atlas。

現在、3番目のオプションでAzureスタックが完全にサポートされているかどうかさえわかりません。さらに、それははるかに大きな開発(インフラストラクチャ定義)の努力があります。 それで、レンジャー/アトラスの方向を調べる必要がある理由はありますか?

ImmutaよりもPrivaceraを優先する理由は何ですか?

評価する必要がある他のオプションはありますか?

すでに行われていること

データガバナンスの観点からは、次のことだけを実行しました。

  1. ADLS内のデータゾーンを定義する
  2. (GDPR要件により)機密データに暗号化/難読化を適用します。
  3. SynapseおよびPower BIレイヤーに実装された行レベルセキュリティ(RLS)
  4. 何がいつ保存されたかを記録するためのカスタム監査フレームワーク

やるべきこと

  1. データ系統と単一の真の情報源。開始から4か月になっても、データセット間の依存関係を理解するのは困難になります。系統情報はConfluence内に保存され、複数の場所で継続的に更新および更新することは困難です。今でもいくつかの場所で時代遅れです。
  2. セキュリティ。ビジネスユーザーは、今後Databricks Notebookでデータ探索を行う可能性があります。 DatabricksにはRLSが必要です。
  3. データライフサイクル管理。
  4. おそらく、データ品質など、他のデータガバナンスに関連するものです。
3
VB_

私は現在イミュタとプリバセラを調査しているので、これら2つの違いについてはまだ詳しくコメントできません。これまでのところ、Immutaは、エレガントなポリシーベースのセットアップで、より良い印象を与えてくれました。

それでも、外部コンポーネントを購入せずに、上記の問題のいくつかを解決する方法があります。

1。セキュリティ

  • RLSの場合、テーブルACLを使用し、特定のHiveビューへのアクセスのみを許可することを検討してください。

  • ADLS内のデータにアクセスするには、クラスターでのパスワードパススルーの有効化を確認してください。残念ながら、それからScalaを無効にします。

  • Azure Data Lake Gen 2にアクセス許可を設定する必要があります。これは、既存の子アイテムにアクセス許可を与えるのはひどい経験です。

  • データの複製は決して良い考えではないので、列/行のサブセットを持つデータセットのコピーを作成しないでください。

2。系統

  • 1つのオプションは、Apache Atlas&Splineを調べることです。これを設定する1つの例を示します https://medium.com/@reenugrewal/data-lineage-tracking-using-spline-on-atlas-via-event-hub-6816be0fd5c7
  • 残念ながら、Splineはまだ開発中であり、記事に記載されている設定を再現することも簡単ではありません。 Apache Atlas 3.0には、Azure Data Lake Gen 2およびその他のソースに対して利用可能な多くの定義があることを朗報
  • いくつかのプロジェクトで、私は最終的に読み取り/書き込みのカスタムログを作成することになりました(このパスも進んだようです)。これらのログに基づいて、系統を視覚化するPower BIレポートを作成しました。
  • オーケストレーションにAzure Data Factoryを使用することを検討してください。適切なADFパイプライン構造を使用すると、高レベルの系統を持ち、依存関係を確認して、失敗したアクティビティを再実行できます。ここでもう少し読むことができます: https://mrpaulandrew.com/2020/07/01/adf-procfwk-v1-8-complete-pipeline-dependency-chains-for-failure-handling/ =
  • マルケス https://marquezproject.github.io/marquez/ をご覧ください。データ系統など、いくつかの素晴らしい機能を備えた小さなオープンソースライブラリ。

3。データ品質

  • Amazon Deequの調査-Scalaこれまでのところのみですが、いくつかの素晴らしい事前定義済みデータ品質関数があります。
  • 多くのプロジェクトで、統合テストを作成し、ブロンズ(生)からシルバー(標準化)に移行する間のデータ品質をチェックすることになりました。派手で純粋なPySparkはありません。

4。データライフサイクル管理

  • 1つのオプションは、ネイティブデータレイクストレージライフサイクル管理を使用することです。これは、Delta/Parquet形式の背後にある実行可能な代替方法ではありません。

  • Delta形式を使用すると、保持または疑似匿名化を簡単に適用できます

  • 2番目のオプションとして、すべてのデータセットに関する情報(dataset_friendly_name、パス、保持時間、ゾーン、sensitive_columns、所有者など)を含むテーブルがあるとします。 Databricksユーザーは、小さなラッパーを使用して読み取り/書き込みを行います。

    DataWrapper.Read( "dataset_friendly_name")

    DataWrapper.Write( "destination_dataset_friendly_name")

ロギング、バックグラウンドでのデータのロードを実装するのはあなた次第です。さらに、sensitive_columns、保持時間に基づく動作(どちらもデータセット情報テーブルで使用可能)をスキップできます。かなりの努力が必要です

  • このテーブルはいつでもより高度なスキーマに拡張でき、パイプライン、依存関係などに関する追加情報を追加できます(2.4を参照)。

うまくいけば、あなたは私の答えに何か役に立つものを見つけます。あなたがたどった経路を知ることは興味深いでしょう。

1
Valdas M