blog

5つのスキルのPrestoパフォーマンスチューニング

Prestoは、分散型クエリエンジンであり、それ自体はデータを格納しませんが、様々なデータソースにアクセスすることができ、データソース間でカスケードクエリをサポートしています。 ディスカバリーサーバー...

Aug 27, 2020 · 3 min. read
シェア

概要

プレスト・アーキテクチャ

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クライアントパラメータを調整することができます。

パラメータの変更





Read next

iOSがapplication:DidFinishLaunchWithOptions:でNOを返した場合はどうなるか?

この戻り値は、...の戻り値と組み合わされます。

Aug 27, 2020 · 1 min read