Accelerating with Spark#
デフォルトでは、 Postgres Analytics AcceleratorPGAAは、組み込み分析エンジンであるSeafowlを使用してクエリを高速化します。ただし、単一のPostgresインスタンスのリソースを超える大規模なデータ処理の場合、Spark Connectを介してリモートのApache Sparkクラスターに実行をオフロードできます。
Spark Connectは、Sparkドライバーからアプリケーションを分離するApache Sparkのシンクライアントサーバープロトコルです。高速ブリッジとして機能し、Postgresはクエリ指示をリモートの分散Sparkクラスターに送信できます。これにより、データベースと同じマシンでSparkを実行する必要がなく、外部クラスターの膨大な計算能力を活用できます。
エグゼキューターエンジンの選択#
pgaa.executor_engine
構成パラメーターは、分析クエリの重労働が発生する場所を決定します。デフォルトのSeafowlエンジンを超えて移動する場合、分散実行には2つの主なオプションがあります。
分散実行オプション#
Sparkを活用するには、次の2つの方法のいずれかで環境を構成できます。
** Distributed Spark execution :** 標準のApache Sparkクラスターを使用して、分散CPUコアを使用して大規模なデータセットを処理します。これは、大規模なデータ処理と大規模なメンテナンスタスクの標準的なアプローチです。
** GPU-accelerated Spark with NVIDIA RAPIDS :** Apache SparkのNVIDIA RAPIDSアクセラレータを統合します。このオプションは、クエリの実行をGPUにオフロードし、コンピューティング集約的な結合と集計の処理時間とインフラストラクチャコストを大幅に削減します。
Feature |
Seafowl |
Spark Connect (CPU) |
Spark + RAPIDS (GPU) |
|---|---|---|---|
Architecture |
Process alongside Postgres. |
Remote Spark cluster. |
Remote Spark with NVIDIA GPUs. |
Best for |
Small/medium datasets. |
Petabyte-scale, complex ETL. |
Massive joins & aggregations. |
Scalability |
Single host limits. |
Horizontal (Multi-node). |
Horizontal + GPU Acceleration. |
Complexity |
Zero-config. |
Requires Spark endpoint. |
Requires GPU-enabled nodes. |
Cost efficiency |
Best for datasets < 1 TB. |
Best for datasets between 1 TB and 3 TB. |
Best for datasets 3 TB or higher. |
Seafowlはシングルノードのパフォーマンス用に高度に最適化されていますが、次の場合はSparkベースのエグゼキューターへの切り替えを検討します。
メモリ制約 クエリーが
pgaa.autostart_seafowl_max_memory_mb制限を超えています。メンテナンスが多い Icebergテーブルで大規模なコンパクションまたはZ-オーダーリングなどのリソースを大量に使用する操作を実行しています。
極端なスケール 外部クラスターの分散コンピューティングを必要とするデータセット全体の結合と集計を処理する必要があります。