Presto (PrestoDB とも呼ばれます) は、大規模なインタラクティブな分析向けに構築された分散 SQL クエリエンジンです。このトピックでは、主な機能、アーキテクチャ、データモデル、および E-MapReduce (EMR) で実行するメリットについて説明します。
重要な注意事項
E-MapReduce (EMR) 3.45.0 および 5.11.0 以降のバージョンでは、通常 0.2XX のバージョン番号を持つ Presto をサポートしています。以前の EMR バージョンでは、3XX のバージョン番号を持つ Presto コンポーネントは PrestoSQL または Trino のカーネルを使用していました。詳細については、「Trino」をご参照ください。
主な機能
Presto は Java で記述されており、高性能と水平方向のスケーラビリティを目的に設計されています。次の機能を提供します:
ANSI SQL の完全サポート。
Hive、Hudi、Iceberg、Delta Lake、MySQL、PostgreSQL など、幅広いデータソースへの接続。
-
高度なデータ型のサポート:
配列とマップ
JSON データ
地理情報システム (GIS) データ
カラーデータ
-
複数の仕組みによる拡張性:
プラガブルデータコネクター
カスタムデータ型
カスタム SQL 関数
パイプライン処理:データの処理に合わせてクエリ結果をクライアントに段階的に返し、最初の結果が返るまでの時間を短縮します。
-
組み込みのオブザーバビリティ:
クエリ実行をリアルタイムに可視化する Web UI。
メトリクス収集のための JMX プロトコルのサポート。
アーキテクチャ
次の図は、Presto のシステムアーキテクチャを示しています。
Presto はコーディネーター/ワーカーアーキテクチャーを採用しています。1 つのコーディネーターノードがクエリ計画とクラスターの状態を管理し、複数のワーカーノードが分散クエリ実行を処理します。
コーディネーターは、次を担当します:
クエリを受け付けて解析し、実行計画を生成し、計画フラグメントをワーカーノードに配布します。
ワーカーノードのヘルスを監視します。各ワーカーは、コーディネーターとのハートビート接続を維持して状態を報告します。
メタストアのメタデータを維持します。
ワーカーノードは分散クエリタスクを実行します。コネクターを使用して外部ストレージシステムからデータを読み取り、処理した後、結果をコーディネーターに返します。
Presto は現在、高可用性 (HA) アーキテクチャをサポートしていません。EMR クラスターでは、コーディネーターは master-1-1 ノードで実行されます。ワーカーはすべての Core ノードと Task ノードで実行されます。
ユースケース
Presto は、大規模なデータセットに対する分析ワークロード向けに最適化されています。次の用途に適しています:
抽出、変換、ロード (ETL)
アドホッククエリ
構造化データまたは半構造化データの大規模分析
多次元データの集計とレポート生成
Presto は分散 SQL クエリエンジンです。トランザクションのサポートは限定的であるため、オンライン トランザクション処理 (OLTP) ワークロードには適していません。
EMR 上の Presto のメリット
セルフマネージドのオープンソース Presto と比べて、EMR 上の Presto は次を提供します:
迅速なセットアップ:数分で数百ノード規模の Presto クラスターを起動できます。
最小限の設定での弾力的なスケーリング。
Data Lake Formation (DLF)、Object Storage Service (OSS)、OSS-HDFS などを含む EMR ソフトウェアスタックとのネイティブ統合。
フルマネージドの運用保守:EMR がクラスターのプロビジョニングと運用保守を処理するため、クエリに集中できます。
概念
データモデル
Presto は、カタログ、スキーマ、テーブルの 3 階層でデータを整理します。
カタログ:1 つ以上のスキーマを含み、コネクターがアクセスできる外部データソースにマッピングされます。単一のクエリで複数のカタログにまたがることができます。
スキーマ:データベースインスタンスに相当し、1 つ以上のテーブルを含みます。
テーブル:スキーマ内の標準的なリレーショナルテーブルです。
コネクター
コネクターは、Presto と外部データソースを統合するレイヤーです。Presto は、一般的なシステム向けの組み込みコネクターを用意しているほか、カスタムデータソースへの接続用に実装できる標準 SPI も公開しています。
通常、各カタログは特定のコネクタータイプにバインドされ、カタログのプロパティファイルで定義されます。
詳細情報
使用しているバージョンに対応するオープンソース Presto のドキュメントを表示するには、URL https://prestodb.io/docs/XXX/ の XXX を Presto コンポーネントのバージョン番号に置き換え、ブラウザーで URL を開いてください。
たとえば、Presto のバージョンが 0.279 の場合、ドキュメントは https://prestodb.io/docs/0.279/ にあります。