toplogo
登入

AWS上でDuckDB、Polars、Delta-rsを活用したサーバーレスレイクハウスの実装と課題


核心概念
Sparkのような従来のデータ処理基盤と比較して、DuckDB、Polars、Delta-rsを用いたサーバーレスレイクハウスは、小規模・中規模データ(最大10GB)の処理において、費用対効果、速度、管理の容易さの面で優れた代替手段となる。
摘要

サーバーレスレイクハウス:Sparkに代わる費用対効果の高い高速なデータ処理基盤

本稿では、従来のSparkベースのデータ処理基盤に代わる、DuckDB、Polars、Delta-rsを活用したサーバーレスレイクハウスアーキテクチャを紹介する。著者は、従来型のデータプロジェクトにおいて、Sparkのようなツールが複雑でコストがかかり、運用が大変な場合が多いことを指摘している。特に、小規模から中規模のデータ(最大10GB)を扱う場合、Sparkの複雑なインフラストラクチャや運用コストは過剰であることが多い。

効率的なアプローチ:費用対効果が高く、高速で、管理の容易なレイクハウスの実装

著者は、俊敏性、運用負荷の軽減、データの制御性の向上を求めるユーザー向けに、DuckDB、Polars、Delta-rsを用いたサーバーレスレイクハウスアーキテクチャを提案している。このアーキテクチャは、以下の利点を提供する。

  • インフラストラクチャではなくデータに集中: クラスターを管理する必要がないため、データから価値を生み出すことに集中できる。
  • 迅速な結果へのアクセス: DuckDBやPolarsなどの最新技術を活用することで、Sparkと同等の効率性と速度を実現し、複雑な分析をより良い費用対効果で実施できる。
  • コスト削減とスケーラビリティの向上: Sparkクラスターのウォームアップが不要なため、使用した分だけのコストで済む。

アーキテクチャと実装

このアーキテクチャでは、確立されたメダリオンアーキテクチャを採用し、レイヤーをブロンズ、シルバー、ゴールドに分離している。実装は容易で、まず、artifacts/tables.yamlファイルにテーブルとそのプライマリキーを定義する。プライマリキーが指定されていない場合は、変換ステップは追加専用モードで行われる。

この構成が設定されると、アーキテクチャをクラウドにデプロイする準備が整う。インフラストラクチャのコードライブラリとしてCDKを使用する。CDKのインストール、構成、デプロイの手順については、プロジェクトのREADMEを参照。

これらのアーティファクトをすべてクラウドにデプロイすると、データ投入用とクエリ用の2つのエンドポイントが生成される。

  • データ投入: エンドポイントはIAMで保護されており、YAMLに定義されたテーブルにデータを挿入できる。最初に、テーブルがYAMLで定義されているかどうか、宣言されたプライマリキーが本文に存在するかどうかを確認する。すべて問題なければ、データが送信され、テーブルごとにFirehoseが作成され、複数のレコードを一度に処理するためのバッファとして機能する。128MBまたは15分が経過すると、データはレイクハウスのブロンズレイヤーに送信される。
  • データ変換: オブジェクトがレイクハウスに到着すると、Deltaテーブルの作成、スキーマ進化、PolarsとDelta-rsを使用したデータの追加/更新を担当するLambdaのイベントがトリガーされる。
  • ゴールドレイヤー: ゴールドレイヤーでは、サーバーを管理する必要がないため、中小企業でも導入しやすい。Airflowなどのオーケストレーターは使用せず、AWS EventBridgeを使用する。ただし、必要であれば、オーケストレーターを使用してアーキテクチャを適応させることもできる。
  • データの消費: 生成されたもう一方のエンドポイントを使用して、DuckDBを使用してすべてのレイヤーのデータをクエリできる。
  • 可視化: 可視化には、DuckDBとの統合がすでに可能なBrieferを使用する。

次のステップと欠点

今後の改善点として、著者は以下の点を挙げている。

  • ゴールドレイヤーでdbt-duckdbを使用する。
  • 本番環境向けにECSにBrieferをデプロイする。
  • 作成されたエンドポイントはパブリックでランダムであり、IAMロールによって保護されている。将来的には、API GatewayまたはCloudFrontとRoute 53を使用して、カスタムのプライベートエンドポイントを作成する。
  • 近年のAIの重要性を踏まえ、AIレイヤーを統合する。

このプロジェクトの欠点と課題として、DeltaをAthenaおよびGlue Catalogと統合できなかったことが挙げられる。Glueでは、一般的なエラーが発生し、処理を進めることができなかった。Athenaでは、メタデータに記述されているバージョンがドキュメントによるとAthenaと互換性があるにもかかわらず、Deltaバージョンに互換性がないというエラーが発生した。

結論:アーキテクチャの変革

このサーバーレスレイクハウスアーキテクチャには、効率性、高速性、費用対効果の高さなど、多くの利点がある。開発中、著者はFree Tierの制限に達することさえできなかった(開発コストの合計は0.23ドル)。

このアーキテクチャは、単なる最新のソリューションではなく、時間、予算、あるいは健全性を損なうことなく、結果を達成できるようにする、考え方を変えるものである。

edit_icon

客製化摘要

edit_icon

使用 AI 重寫

edit_icon

產生引用格式

translate_icon

翻譯原文

visual_icon

產生心智圖

visit_icon

前往原文

統計資料
処理対象のデータ量は最大10GB。 データ投入後、128MBまたは15分が経過すると、データはレイクハウスのブロンズレイヤーに送信される。 1.5GBのニューヨーク市のタクシーのJSON形式のデータセットを処理するのにかかった平均時間は18〜21秒。 開発コストの合計は0.23ドル。
引述
「私は、高速で詳細なインサイトを提供することを約束して開始されたものの、最終的には重く、コストがかかり、複雑になってしまうデータプロジェクトを数多く見てきました。」 「もはや、木の実を割るためにスレッジハンマーを使う必要はありません。」 「このアーキテクチャは、単なる最新のソリューションではなく、考え方を変えるものであり、時間、予算、あるいは健全性を損なうことなく、結果を達成できるようにするものです。」

深入探究

DuckDB、Polars、Delta-rsを用いたサーバーレスレイクハウスは、データ量が増加した場合でも、従来のSparkベースのシステムと比較して費用対効果を維持できるのか?

サーバーレスレイクハウスは、データ量が増加した場合でも、従来のSparkベースのシステムと比較して費用対効果を維持できる可能性が高いです。その理由は以下の通りです。 サーバーレスの性質: サーバーレスアーキテクチャは、実際に使用したリソースのみに課金されるため、データ量の変動に柔軟に対応できます。Sparkクラスタの場合、常に一定規模のクラスタを稼働させておく必要があるため、アイドル状態でもコストが発生します。一方、サーバーレスでは、処理が必要な時にのみリソースがプロビジョニングされ、処理が完了すると自動的にスケールダウンされるため、無駄なコストを抑えられます。 DuckDBの効率性: DuckDBは、分析クエリを高速に処理することに特化したインメモリデータベースです。小規模から中規模のデータセットに対しては、Sparkよりも高速に処理できる場合があり、処理時間の短縮はコスト削減に繋がります。 Polarsの並列処理: Polarsは、Rustで開発された高速なデータ処理ライブラリであり、並列処理に優れています。これにより、大規模なデータセットに対しても効率的に処理を実行することができ、処理時間の短縮とコスト削減に貢献します。 ただし、サーバーレスレイクハウスの費用対効果は、データの特性や処理内容、ワークロードのパターンによって変化します。例えば、非常に大規模なデータセットや複雑な処理が多い場合には、Sparkクラスタの方が費用対効果が高くなる可能性もあります。 費用対効果を最大限に引き出すためには、データ量や処理内容、ワークロードなどを分析し、最適なアーキテクチャを選択することが重要です。

セキュリティとガバナンスの観点から、このサーバーレスレイクハウスアーキテクチャは、機密性の高いデータセットを扱う企業の要件を満たすことができるのか?

サーバーレスレイクハウスアーキテクチャは、機密性の高いデータセットを扱う企業の要件を満たすために、適切なセキュリティとガバナンスの対策を講じる必要があります。 セキュリティ対策: データの暗号化: S3などのストレージサービスに保存されるデータは、デフォルトで暗号化するか、AWS KMSなどの鍵管理サービスを使用して暗号化できます。 アクセス制御: IAMポリシーを使用して、データへのアクセスを厳密に制御する必要があります。Lambda関数やその他のサービスに対して、最小限の権限を付与することが重要です。 ネットワークセキュリティ: VPCエンドポイントを使用して、S3などのサービスへのアクセスをプライベートネットワーク内に制限できます。 セキュリティログの監視: CloudTrailやCloudWatch Logsなどのサービスを使用して、セキュリティ関連のイベントを監視し、不審なアクティビティを検出する必要があります。 ガバナンス対策: データリネージの追跡: データの取得元、処理内容、保存先などを追跡できる仕組みが必要です。Delta Lakeのタイムトラベル機能やデータバージョン管理機能を活用することで、データリネージを把握することができます。 データ品質の管理: データ品質を維持するためのルールやプロセスを定義し、実装する必要があります。 コンプライアンスの遵守: GDPRやHIPAAなどの関連するデータ保護規制を遵守する必要があります。 これらの対策を適切に実装することで、サーバーレスレイクハウスアーキテクチャは、機密性の高いデータセットを扱う企業の要件を満たすことができます。

データ処理の高速化と効率化が進むにつれて、人間の意思決定における洞察力と直感の役割はどのように進化していくのか?

データ処理の高速化と効率化が進むことで、人間はより多くの情報を迅速に分析できるようになり、データに基づいた意思決定が促進されます。しかし、同時に、人間の洞察力と直感の役割は、これまで以上に重要になってくると考えられます。 データ分析の進化と人間の役割: データ分析の自動化: 機械学習などの技術により、データ分析の自動化が進み、人間は単純な分析作業から解放されます。 複雑な意思決定への集中: 人間は、より複雑な意思決定や戦略的な思考に集中できるようになります。 洞察力と直感の重要性: データ分析はあくまでもツールであり、最終的な意思決定は人間が行います。データから得られた洞察を理解し、状況に合わせて判断するためには、人間の洞察力と直感が不可欠です。 進化する洞察力と直感: データに基づいた直感: データ分析を通じて、人間の直感はより洗練され、データに基づいたものへと進化していきます。 倫理観と創造性の重要性: データ分析だけでは解決できない倫理的な問題や、新しい価値を創造するためには、人間の倫理観と創造性が求められます。 データ処理の高速化と効率化は、人間の意思決定を支援する強力なツールとなります。しかし、最終的な判断は人間が行うものであり、洞察力、直感、倫理観、創造性といった人間独自の能力は、今後も重要な役割を担い続けるでしょう。
0
star