Presto(PrestoDB)は、柔軟でスケーラブルな分散 SQL クエリエンジンです。このトピックでは、Presto の基本機能、アーキテクチャ、および利点について説明します。
注意事項
Presto は、E-MapReduce(EMR)V3.45.0、V5.11.0、およびそれ以降のマイナーバージョンでサポートされています。 Presto のバージョン番号は 0.2XX です。 V3.45.0 または V5.11.0 より前のマイナーバージョンの EMR クラスタでは、Presto 3XX のカーネルは PrestoSQL または Trino です。詳細については、「Trino の概要」をご参照ください。
基本機能
Presto は Java で実装されています。使いやすく、高性能で強力なスケーラビリティを提供します。 Presto は次の機能を提供します。
American National Standards Institute(ANSI)SQL をサポートします。
Hive、Hudi、Iceberg、Delta Lake、MySQL、PostgreSQL など、幅広いデータソースをサポートします。
高度なデータ構造をサポートします。
配列データとマップデータ
JSON データ
地理情報システム(GIS)データ
カラーデータ
強力なスケーラビリティを提供します。
さまざまなデータコネクタ
カスタムデータ型
カスタム SQL 関数
パイプラインモデルを使用してデータを処理し、リアルタイムでデータを返します。
監視インターフェイスを提供します。
クエリの 実行プロセス を表示できる Web UI を提供します。
Java Management Extensions(JMX)プロトコルをサポートします。
アーキテクチャ
次の図は、Presto のアーキテクチャを示しています。
Presto は、コーディネーターと複数のワーカーで構成される典型的なマスター/スレーブアーキテクチャを備えています。 コーディネーターは、次の機能を提供します。
クエリ要求を受信して解析し、実行計画を生成し、実行のために実行計画をワーカーに配信します。
ワーカーの状態を監視します。 各ワーカーは、コーディネーターとのハートビート接続を維持します。
メタストアデータを維持します。
ワーカーは、コーディネーターによって割り当てられたタスクを実行し、コネクタを使用して外部ストレージシステムからデータを読み取り、データを処理し、処理結果をコーディネーターに送信します。
Presto は、高可用性アーキテクチャをサポートしていません。 EMR クラスタでは、コーディネーターは master-1-1 ノードにのみデプロイされ、ワーカーはすべてのコアノードとタスクノードにデプロイされます。
シナリオ
Presto は、データウェアハウスおよびデータ分析サービス向けの分散 SQL クエリエンジンです。 Presto は、次のシナリオに適しています。
抽出、変換、ロード(ETL)
アドホッククエリ
大量の構造化データまたは半構造化データの分析
大量の多次元データの集計、およびレポート分析
Presto はデータウェアハウス製品です。 トランザクションのサポートは限定的であり、オンラインビジネスシナリオには適していません。
利点
EMR Presto には、オープンソースの Presto と比較して次の利点があります。
数百ノードの Presto クラスタを迅速にデプロイできます。
EMR Presto は自動スケーリングをサポートしています。 Presto クラスタを簡単にスケーリングできます。
EMR Presto は、Data Lake Formation(DLF)、Object Storage Service(OSS)、または OSS-HDFS に保存されているデータを処理できます。
EMR Presto はワンストップサービスを提供します。 O&M は不要です。
用語
データモデル
データモデルは、データ編成形式です。 Presto は、カタログ、スキーマ、テーブルの 3 つのレベルのコンポーネントを使用してデータを管理します。
カタログ: カタログには複数のスキーマが含まれており、コネクタを使用してアクセスできる外部データソースを参照します。 Presto で SQL ステートメントを実行して、1 つ以上のカタログにアクセスできます。
スキーマ: スキーマは、複数のデータテーブルを含むデータベースインスタンスです。
テーブル: データテーブルは、一般的なデータベーステーブルと同じです。
コネクタ
Presto は、組み込みのコネクタを使用してさまざまな外部データソースに接続します。 Presto は標準の サービスプロバイダーインターフェイス(SPI) を提供しており、これにより、カスタムデータソースにアクセスするための独自のコネクタを開発できます。
カタログは通常、カタログのプロパティファイルで構成されている特定の種類のコネクタに関連付けられています。
参照資料
Web ブラウザで https://prestodb.io/docs/XXX/ にアクセスして、オープンソースの Presto のドキュメントを表示できます。 XXX は、使用する Presto サービスのバージョン番号に置き換えます。
たとえば、https://prestodb.io/docs/0.279/ にアクセスして、Presto 0.279 のドキュメントを表示できます。