Apache-presto-architecture
Apache Presto-アーキテクチャ
Prestoのアーキテクチャは、従来のMPP(大規模並列処理)DBMSアーキテクチャとほぼ同じです。 次の図は、Prestoのアーキテクチャを示しています。
上記の図は、さまざまなコンポーネントで構成されています。 次の表に、各コンポーネントの詳細を示します。
S.No | Component & Description |
---|---|
1. |
Client クライアント(Presto CLI)は、SQLステートメントをコーディネーターに送信して結果を取得します。 |
2. |
Coordinator コーディネーターはマスターデーモンです。 コーディネーターは、最初にSQLクエリを解析してから、クエリ実行の分析と計画を行います。 スケジューラは、パイプラインの実行を実行し、最も近いノードに作業を割り当て、進行状況を監視します。 |
3. |
Connector ストレージプラグインはコネクタと呼ばれます。 Hive、HBase、MySQL、Cassandraなどがコネクタとして機能します。それ以外の場合は、カスタムも実装できます。 コネクタは、クエリのメタデータとデータを提供します。 コーディネーターはコネクタを使用して、クエリプランを作成するためのメタデータを取得します。 |
4. |
Worker コーディネーターは、タスクをワーカーノードに割り当てます。 ワーカーはコネクタから実際のデータを取得します。 最後に、ワーカーノードは結果をクライアントに配信します。 |
Presto-ワークフロー
Prestoは、ノードのクラスターで実行される分散システムです。 Prestoの分散クエリエンジンは、インタラクティブな分析用に最適化されており、複雑なクエリ、集計、結合、ウィンドウ関数などの標準ANSI SQLをサポートしています。 プレストアーキテクチャはシンプルで拡張可能です。 Prestoクライアント(CLI)は、SQLステートメントをマスターデーモンコーディネーターに送信します。
スケジューラは、実行パイプラインを介して接続します。 スケジューラは、データに最も近いノードに作業を割り当て、進行状況を監視します。 コーディネーターはタスクを複数のワーカーノードに割り当て、最後にワーカーノードが結果をクライアントに返します。 クライアントは、出力プロセスからデータをプルします。 拡張性が重要な設計です。 Hive、HBase、MySQLなどのプラグ可能なコネクタは、クエリのメタデータとデータを提供します。 Prestoは、これらの異なる種類のデータソースに対してSQLクエリ機能を簡単に提供できるようにする「シンプルなストレージ抽象化」を使用して設計されました。
実行モデル
Prestoは、SQLセマンティクスをサポートするように設計された演算子を使用して、カスタムクエリおよび実行エンジンをサポートします。 スケジューリングの改善に加えて、すべての処理はメモリ内にあり、異なるステージ間でネットワークを介してパイプライン処理されます。 これにより、不必要なI/Oレイテンシのオーバーヘッドが回避されます。