[論文レビュー] Building a serverless Data Lakehouse from spare parts
この論文では、新規に書き直すのではなく、レガシービッグデータツールに依存せず、オープンソースコンポーネントを再利用することで構築されたサーバessなデータレイクハウス、Bauplanを提示する。Apache Iceberg、DuckDB、カスタムコンテナ化ランタイムといった既存のシステムを組み合わせることで、低遅延関数実行と効率的なキャッシュを実現し、インタラクティブクエリとスケーラブルなパイプライン実行の両方をカバーする統合的かつ開発者指向のエクスペリエンスを提供する。
The recently proposed Data Lakehouse architecture is built on open file formats, performance, and first-class support for data transformation, BI and data science: while the vision stresses the importance of lowering the barrier for data work, existing implementations often struggle to live up to user expectations. At Bauplan, we decided to build a new serverless platform to fulfill the Lakehouse vision. Since building from scratch is a challenge unfit for a startup, we started by re-using (sometimes unconventionally) existing projects, and then investing in improving the areas that would give us the highest marginal gains for the developer experience. In this work, we review user experience, high-level architecture and tooling decisions, and conclude by sharing plans for future development.
研究の動機と目的
- データレイクハウスの理想像と、既存の実装における劣悪な開発者体験のギャップを埋めること。
- インタラクティブクエリとプロダクショングレードのデータパイプラインの両方をサポートする、柔軟でスケーラブルかつ低摩擦なデータプラットフォームを実現すること。
- 新規に構築するのではなく、レガシービッグデータフレームワークを改造するのではなく、既存のオープンソースツールを再利用することで開発のオーバーヘッドを削減すること。
- CLIファーストの設計により、開発とプロダクションの両方で同期的および非同期的ワークフローをサポートする、開発者に優れたエゴノミクスを実現すること。
- スタートアップにとって技術的実現可能性を考慮した現実的で、イノベーションとバランスの取れたデータレイクハウスビジョンの実装パスを検討すること。
提案手法
- Apache Icebergによるテーブルフォーマット、DuckDBによるSQLエンジン、Nessieによるバージョン制御といった、既に確立されたオープンソースプロジェクトを再利用し、それらを基盤となる「レゴブロック」として扱う。
- Python実行のため、起動時間を最適化し、依存関係のダウンロードオーバーヘッドを低減するために、ローカルでディスクベースのキャッシュを備えたカスタムコンテナ化ランタイムを構築する。この際、パッケージ利用のパワー則分布の特徴を活用する。
- 軽量なコンテナマネージャーを導入し、DAG実行内での関数レベルの隔離とカスタマイズ可能な共有ポリシーを実現し、同期的および非同期的モードの両方をサポートする。
- オブジェクトストレージをキャッシュに活用し、特にシングルテナント、「自分自身のクラウドを導入する(Bring Your Own Cloud)」環境において、高速起動(300ms)と最小限のオーバーヘッドを実現するサーバーレス実行をサポートする。
- CLIファーストのインターフェースにより、2つのコアコマンドを提供する:'bauplan query' は同期的で一時的(ポイントインタイム)なデータ探索に、'bauplan run' は再実行可能でデバッグ可能なDAGベースのパイプライン実行に使用する。
- ブランチ対応のクエリにより、バージョン履歴の異なる時点でのデータを検査できるタイムトラベルセマンティクスをネイティブにサポートする。
実験結果
リサーチクエスチョン
- RQ1新規に書き直すのではなく、既存のオープンソースコンポーネントを再利用することで、サーバーレスなデータレイクハウスを効果的に構築できるか?
- RQ2コンポジショナルでサーバーレスなアーキテクチャにおいて、インタラクティブクエリとプロダクションパイプライン実行の両方で一貫した開発者体験を実現する方法は何か?
- RQ3サーバーレスデータプラットフォームにおけるPython関数の実行に、コンテナ化ランタイムを使用する際のパフォーマンスとエゴノミクスのトレードオフは何か?
- RQ4パッケージ利用パターンに基づくキャッシュ戦略が、サーバーレスデータ関数におけるコールドスタートのオーバーヘッドをどの程度低減できるか?
- RQ5バージョニングされたデータ、タイムトラベル、再現可能なパイプラインを、コンポジショナルなデータ管理システム内でネイティブにサポートする方法は何か?
主な発見
- 一般的に使用されるパッケージのローカルでディスクベースのキャッシュを効率的に活用することで、サーバーレスPython関数の起動時間が300msまで短縮された。
- パッケージ利用のパワー則分布を活用することで、キャッシュ戦略が全体のダウンロード時間の大幅な短縮と、関数初期化パフォーマンスの向上を実現した。
- CLIファーストの設計により、既存の開発者ワークフローとのシームレスな統合が可能となり、インタラクティブな探索と複雑で再現可能なパイプライン実行の両方をサポートした。
- 開発とプロダクションの両方で同期的および非同期的実行モードを一貫したセマンティクスでサポートし、Nessieによる完全なバージョニングを実現した。
- 細粒度の隔離とカスタマイズ可能な共有ポリシーを備えたコンテナ化ランタイムの使用により、1つのDAG内での安全でスケーラブルなデータパイプライン実行が可能になった。
- オープンソースコンポーネントの再利用というアプローチにより、チームは迅速に動作するエンドツーエンドのシステムに到達し、早期の採用者によるコア仮説の検証が可能になった。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。