Apache Trinoの使用
Apache Trinoでは、複数のビッグ・データ・ファイル・システムに対してアドホック問合せおよびETL問合せを実行できます。Trinoは、クラスタの最初のマスター・ノードにインストールされ、system
、tpch
および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で次の構成を設定します。
- Apache Ambariにアクセスします。
- サイド・ツールバーの「サービス」で、「Trino」を選択します。
- 「構成」を選択し、構成プロパティを更新/追加します。
パラメータ | 説明 | 設定先 | 推奨値 |
---|---|---|---|
Heap (-Xmx)
|
このパラメータは、Trinoワーカーが使用できるヒープ・メモリーの最大量を指定します。このパラメータは、マシンで使用可能な物理メモリーの80%に設定することをお薦めします。 |
jvm.config
|
このパラメータは、マシンで使用可能な物理メモリーの75-80%に設定することをお薦めします。 ノート: Trinoワーカーが実行されている同じノードで他のプロセスが実行されている場合は、それらのプロセスに物理メモリーをある程度残します。このような場合は、 たとえば、同じノード上の他のプロセスに4 GBのメモリーが必要で、ノードで使用可能な物理メモリーの合計が16 GBの場合、 |
query.max-memory-per-node
|
単一のワーカー・ノードのメモリー。 |
config.properties
|
このパラメータを、JVMメモリーと 有効メモリー= 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% |