Apache Trinoの使用

Apache Trinoでは、複数のビッグ・データ・ファイル・システムに対してアドホック問合せおよびETL問合せを実行できます。Trinoは、クラスタの最初のマスター・ノードにインストールされ、systemtpchおよびhiveコネクタがインストールされています。

HiveメタストアでCRUD操作を実行するには、リソース・パスが/tmp,/warehouseで、Trinoユーザーの権限がR/W/EであるHDFSポリシーを追加する必要があります。

パフォーマンス・チューニング

Trinoは、クラウド環境のオブジェクト・ストレージを含む多くのデータ・ソースにわたって大量のデータを処理するように設計された分散SQL問合せエンジンです。ただし、Trinoのパフォーマンスは、データのサイズと複雑さ、使用可能なネットワーク帯域幅、クラスタ構成、問合せパターンなど、様々な要因の影響を受ける可能性があります。そのため、パフォーマンス・チューニングを実行して、お客様固有のユース・ケースに対してTrinoのパフォーマンスとスケーラビリティを最適化することが重要です。

オブジェクト・ストレージからデータセットを読み取る際の推奨事項
  • fs.oci.io.read.ahead.blocksize = 6291456: このパラメータは、オブジェクト・ストレージ読取りでの先読みバッファリングに使用されるブロック・サイズ(バイト単位)を設定します。デフォルトでは、ブロック・サイズは262144 (256 KB)に設定されていますが、6291456 (6 MB)などの大きい値に設定すると、大きいファイル(特に順次読取り)の読取りパフォーマンスを向上できます。
  • fs.oci.io.read.ahead = true: このパラメータは、Trinoでのオブジェクト・ストレージ読取りの先読みバッファリング・メカニズムを制御します。先読みバッファリングが有効な場合、Trinoは将来の読み取り要求を想定して、現在の読み取り要求を超えて追加データを事前に読み取ります。これにより、ネットワーク・レイテンシの影響を軽減し、大量の読取りワークロードのパフォーマンスを向上させることができます。
  • fs.oci.caching.object.parquet = true: このパラメータは、ローカル・ファイル・システムでのParquetオブジェクトのキャッシュを有効にして、Parquetファイルを操作する際の問合せパフォーマンスを向上させます。trueに設定すると、OCIストレージ・クライアントは、後続の読取りのためにローカル・ファイル・システム内のParquetオブジェクトをキャッシュします。
  • fs.oci.caching.filesystem.enabled=true: このパラメータは、HDFSキャッシュ内のOCIオブジェクト・ストレージからのデータのキャッシュを有効にします。これにより、オブジェクト・ストレージから取得する必要があるデータの量が削減され、頻繁にアクセスされるデータがキャッシュされるため、パフォーマンスが向上します。
一般的な推奨事項
ノート

Ambari UIで次の構成を設定します。
  1. Apache Ambariにアクセスします。
  2. サイド・ツールバーの「サービス」で、「Trino」を選択します。
  3. 「構成」を選択し、構成プロパティを更新/追加します。
パラメータ 説明 設定先 推奨値
Heap (-Xmx) このパラメータは、Trinoワーカーが使用できるヒープ・メモリーの最大量を指定します。このパラメータは、マシンで使用可能な物理メモリーの80%に設定することをお薦めします。 jvm.config

このパラメータは、マシンで使用可能な物理メモリーの75-80%に設定することをお薦めします。

ノート:

Trinoワーカーが実行されている同じノードで他のプロセスが実行されている場合は、それらのプロセスに物理メモリーをある程度残します。このような場合は、-Xmxパラメータの値を、使用可能な物理メモリーの80%より小さい値に設定します。必要なメモリー量に応じて、物理メモリーの少なくとも10%から20%を他のプロセスに残しておくことをお薦めします。

たとえば、同じノード上の他のプロセスに4 GBのメモリーが必要で、ノードで使用可能な物理メモリーの合計が16 GBの場合、-Xmxパラメータを12 GBの75から80%に設定します(たとえば、7.2 ti 8.4 GB)。

query.max-memory-per-node 単一のワーカー・ノードのメモリー。 config.properties

このパラメータを、JVMメモリーとmemory.heap-headroom-per-nodeの値の差以下の値に設定します。

有効メモリー= JVMヒープ合計- ヒープ・ヘッドルーム

たとえば、同時ユーザー・シナリオがある場合、パラメータを「有効なメモリー/同時問合せ」に設定します。

query.max-memory クラスタ内のすべてのノードのメモリー。 config.properties このパラメータを、次の式に基づいて計算される値に設定します: query.max-memory-per-nodeの値×ワーカー・ノードの数。
query.max-total-memory クラスタによって消費されたメモリーの合計量。query.max-memoryの値より小さくすることはできません。 config.properties 同時実行性が高くない場合は、このパラメータをquery.max-memoryパラメータと同じ値に設定します。同時実行性が高い場合、query.max-total-memoryパラメータの値はクラスタの最大メモリー容量を超えないようにしてください。これは、JVMメモリーの70%にワーカー・ノード数を乗算した値です。要件に基づいて、query.max-memoryおよびquery.max-memory-per-nodeの値を比例して減らします。query.max-memoryの値をquery.max-total-memoryの半分に減らすことができます。この場合、query.max-memory-per-nodeパラメータをワーカー・ノード数で除算したquery.max-memoryの値に設定する必要があります。
memory.heap-headroom-per-node 予約済JVMヒープ・メモリー。 config.properties 有効メモリーはJVMメモリーの15%である必要があります
task.concurrency 結合や集計など、パラレル演算子のデフォルトのローカル同時実行性。問合せの同時実行性および就業者リソース使用率に基づいて、この値を上下に調整します。クラスタは実行中のすべての問合せですでに使用されているため、多数の問合せを同時に実行するクラスタでは低い値が適しています。そのため、同時実行性を高めると、コンテキストの切替えやその他のオーバーヘッドが原因で低速になります。値が大きいほど、一度に1つまたはいくつかの問合せのみを実行するクラスタに適しています。 config.properties ノード/VMの使用可能なCPUの80%