概要
プレスト・アーキテクチャ
Prestoは分散型クエリーエンジンで、それ自体はデータを保存しませんが、様々なデータソースにアクセスすることができ、データソース間のカスケードクエリーをサポートしています。
プレストのアーキテクチャは次のように分かれています:
SQLステートメントを解析し、実行計画を生成し、実行のためにWorkerノードに実行タスクを配布します。
実際のクエリータスクの実行と、基礎となるストレージシステムへのアクセスを担当します。
Presto のデータは HDFS/OBS に保存できますが、ホットデータを HDFS に、コールドデータを OBS に保存することをお勧めします。
メモリチューニング
メモリ管理の原則
RESERVED_POOL:ほとんどの場合、計算に関与しませんが、以下の状況が満たされた場合のみ使用され、すべてのクエリから最もメモリを占有するクエリを取得し、そのクエリをRESERVED_POOLに入れて実行します。サイズはconfig.propertiesのquery.max-memory-per-nodeで指定され、デフォルト値はJVM max memory * 0.1です。
1、GENERAL_POOL有节点出现阻节点情况,即该内存不。
2.RESERVED_POOLは使用されていません。
- query.max-memory:関連するすべてのノードに分散された1つのクエリで使用できるメモリの合計の最大値を示します。
- query.max-memory-per-node:1つのノードで1つのクエリが使用できるユーザ・メモリの最大値を示します。
- query.max-total-memory-per-node:1つのノードで1つのクエリが使用できるユーザ・メモリの最大量とシステム・メモリの量を示します。システム・メモリとは、実行中にリーダ、ライタ、ネットワーク・バッファなどによって使用されるメモリのことです。
- memory.heap-headroom-per-node: このメモリは主にサードパーティライブラリによって割り当てられ、統計的に追跡することはできません。
注目のポイント
プレストメモリの構成
メモリ調整パラメータ
運営シナリオ
プレストは完全にメモリベースの計算であるため、OOMになることが多く、メモリチューニングが必要です。
パラメータの変更
よくあるOOMエラー
query.max-total-memory-per-nodeを適切に増やします。
query.max-memoryを適切に増やしてください。
ノードのクラッシュを引き起こすのに十分なメモリがありません。
並列処理
運営シナリオ
スレッド数を調整してタスクの同時実行性を高め、効率を向上させます。
パラメータの変更
メタデータキャッシュ
運営シナリオ
PrestoはHiveコネクタをサポートしており、メタデータはHiveメタストアに保存されます。 メタデータのキャッシュに関するパラメータを調整することで、メタデータへのアクセス効率を向上させることができます。
パラメータの変更
Hash
運営シナリオ
ハッシュシナリオの最適化。
パラメータの変更
OBS関連パラメータの最適化
運営シナリオ
OBSのPrestoサポート、読み取りと書き込みOBSプロセスは、読み取りと書き込み効率を提出するOBSクライアントパラメータを調整することができます。
パラメータの変更