すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:FAQ

最終更新日:Jan 11, 2025

このトピックでは、Trino についてよく寄せられる質問への回答を提供します。

Trino と Presto の違いと関係は何ですか?

Trino(旧称 PrestoSQL)は、Starburst のオープンソースサービスです。 Starburst は、Presto プロジェクトの元の創設者が Facebook を去った後に設立されました。 2021 年に、PrestoSQL は Trino にブランド変更されました。 Presto は引き続き Facebook によって維持されており、一般に PrestoDB と呼ばれています。 PrestoDB と PrestoSQL の分割により、開発方向が異なります。 ただし、これら 2 つのサービスの基本的な構文と使い方は似ています。

E-MapReduce(EMR)V3.44.0 および V5.10.0 では、PrestoSQL は Trino に名前が変更されています。 以前の EMR バージョンでは、コンソールには PrestoSQL が引き続き表示されますが、実際には Trino が使用されています。

Trino のバージョン間にはどのような違いがありますか?

Trino の各バージョンの変更点の詳細については、Trino のリリースノートをご参照ください。 Trino のパフォーマンスは、バージョンの更新に伴い最適化されています。 したがって、新しいバージョンを選択することをお勧めします。

EMR での Trino のデプロイモードは何ですか? Trino は HA モードをサポートしていますか?

Trino には標準のマスタースレーブアーキテクチャがあります。 コーディネーターノードは master-1-1 ノードにデプロイされ、ワーカーノードはコアノードまたはタスクノードにデプロイされます。

Trino は高可用性をサポートしていません。 高可用性クラスタでは、Trino はコーディネーターノードを master-1-1 ノードにのみデプロイします。 Hadoop とのハイブリッドデプロイメントが不要な場合は、クラスタを作成するときに Trino のみを選択してください。

重要

Hadoop とのハイブリッドデプロイメントが不要な場合は、高サービス可用性を有効にしないでください。 これにより、リソースの浪費を防ぐことができます。

Trino は DLF にどのように接続しますか? クラスタで DLF が有効になっている後、コネクタは Hive メタストアにアクセスできますか? EMR が提供するコネクタが不十分な場合はどうすればよいですか?

EMR V3.45.0 または V5.11.0 より前のマイナーバージョンの DataLake クラスタを作成するときに、Hive サービスを選択し、メタデータに DLF 統合メタデータを選択した場合、Hive、Iceberg、Hudi、または Delta Lake コネクタなどのコネクタを使用して Data Lake Formation(DLF)に接続できます。 クラスタの Hive サービスを選択しない場合は、ビジネス要件に基づいて設定を完了できます。 詳細については、「データレイクのデータのメタデータストレージセンターを設定する」をご参照ください。 V3.45.0 以後のマイナーバージョンおよび V5.11.0 以後のマイナーバージョンの DataLake クラスタの場合、Trino クラスタを作成するときに、メタデータに DLF 統合メタデータを選択できます。

クラスタで DLF を有効にすると、Hive コネクタなどのデフォルトのコネクタは Hive メタストアにアクセスできません。 複数の Hive メタストアと MySQL インスタンスを設定する場合、または提供されているコネクタに使用するコネクタが含まれていない場合は、EMR が提供するプレースホルダーコネクタを使用できます。 EMR は、コネクタ 1 ~コネクタ 5 の 5 つのプレースホルダーコネクタを提供します。 connector.name パラメータを設定することにより、コネクタを選択し、ビジネス要件に基づいて Hive コネクタまたは別のタイプのコネクタとして設定できます。 その後、指定されたコネクタタイプのトピックを参照して、他の設定項目を追加します。 この方法で、コネクタを使用して Hive メタストアにアクセスできます。

Trino は OSS にどのようにアクセスしますか? OSS-HDFS サービスは Trino でサポートされていますか?

デフォルトでは、JindoSDK は EMR クラスタにインストールされており、パスワードなしのアクセスをサポートしています。 標準モードを使用して Object Storage Service(OSS)にアクセスしたり、OSS に格納されている Hive テーブルをクエリしたりできます。

Trino クラスタは OSS-HDFS サービスをサポートしています。

Trino の Web UI にアクセスするにはどうすればよいですか? Trino の Web UI とは何ですか?

クラスタに Knox がインストールされている場合は、Knox プロキシアドレスを使用して Trino の Web UI にアクセスできます。 詳細については、「Knox」をご参照ください。

クラスタに Knox がインストールされていない場合は、{パブリック IP アドレス:HTTP ポート番号} 形式のパブリックアドレスを使用して Trino の Web UI にアクセスできます。 HTTP ポート番号は、http-server.http.port パラメータの値から取得できます。 デフォルトの HTTP ポート番号は 9090 です。 Trino の Web UI にアクセスできない場合は、クラスタが属するセキュリティグループでポート 9090 が有効になっているかどうかを確認してください。

クラスタが高セキュリティクラスタの場合、デフォルトの HTTP ポートは無効です。 Trino の Web UI にアクセスするには、必要なネットワーク権限を持っていることを確認してください。 その後、マスターノードグループの [config.properties] ファイルに次の設定を追加し、前述の方法を使用して Trino の Web UI にアクセスします。

web-ui.authentication.type=fixed
web-ui.user=trino

Trino の Web UI では、SQL ステートメントや実行プランなど、Trino によって最近実行されたクエリの情報を取得できます。 Trino は最大 200 件の最新のクエリのみを保存します。 実行結果が成功したクエリは、新しいクエリによって上書きされます。 異常なクエリの情報は、より長い期間保持されます。 query.max-history パラメータを変更して、Trino に格納される SQL ステートメントの数を増やすことができます。 query.max-history パラメータのデフォルト値は 100 です。

クラスタを作成するときに Trino サービスを選択しません。 クラスタに Trino を追加する場合、何に注意する必要がありますか?

  • DataLake クラスタの場合、クラスタの残りのリソースが Trino を使用するのに十分であれば、Trino サービスをクラスタに直接追加できます。

  • Hadoop クラスタの場合、クラスタの特定のサービスをアップグレードしたかどうかを確認します。 クラスタの特定のサービスをアップグレードした場合、Trino サービスをクラスタに追加した後にエラーが発生する可能性があります。 この場合、次の方法を使用して問題を解決できます。

    • JindoSDK、特にメジャーバージョンのアップグレードを個別に実行した場合、Presto または Trino のアップグレードスクリプトを再実行し、アップグレードされた JindoSDK を Trino のインストールパスにある対応するコネクタにコピーする必要があります。

    • EMR V3.39.1 のクラスタの場合、特定のサービスのログを確認します。 ほとんどの場合、ログは Delta Lake に関連するクラスが見つからないことを示しています。 この場合、/opt/apps/ecm/service/deltalake/0.6.1-3.3/package/deltalake-0.6.1-3.3/presto-delta/delta-standalone-assembly-0.2.0.jar ファイルを各ノードの /usr/lib/presto-current/plugin/delta パスにコピーする必要があります。

変更された設定が有効にならないのはなぜですか?

Trino の設定ファイルは /etc/emr/trino-conf にあります。 EMR コンソールでの変更が ECS インスタンスの設定ファイルに正しく表示されているかどうか、および設定ファイルに追加または変更された設定項目が含まれているかどうかを確認する必要があります。 次の方法を使用して問題のトラブルシューティングを行うことができます。

  • 設定ファイルに追加または変更された設定項目が含まれていません: この場合、変更された設定が保存されているかどうか、設定がデプロイされているかどうか、および変更された設定が要件を満たしているかどうかを確認する必要があります。

    重要

    設定項目を使用してノードグループまたは単一ノードの設定を変更した場合、クラスタのデフォルト設定は有効になりません。

  • 設定ファイルには、以前に追加または変更された設定項目が含まれています: 変更された設定ファイルがノードに存在する場合は、Trino のすべてのノードが再起動されているかどうかを確認します。 Trino は、再起動が完了した後にのみ設定を読み込みます。

クエリが停止するのはなぜですか? ワーカーノードに障害が発生するのはなぜですか?

次のエラーメッセージが返された場合、ワーカーノードが過負荷でサービスを提供できないか、ワーカーノードが再起動されます: Could not communicate with the remote task. The node may have crashed or be under too much load. This is probably a transient issue, so please retry your query in a few minutes. または No handle resolver for connector: hive ... Unrecognized token 'io': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')。 ワーカーノードのプロセスがシステムによって終了される場合があります。 必要に応じて、特にメモリ関連の設定を変更するか、同時リクエスト数を制限する必要があります。

Trino のログを表示するにはどうすればよいですか?

デフォルトでは、Trino のログファイルは /mnt/disk1/log/trino/var/log/ パスに格納されます。 出力と異常なスタックに関する情報は、server.log ファイルに格納されます。

クエリのエラーの詳細のみを表示する場合は、Trino クライアントにアクセスするときに --debug コマンドを実行して異常なスタックを表示できます。

Trino のコーディネーターノードは、HTTP 経由でワーカーノードと通信します。 コーディネーターノードで HTTP 例外が報告された場合、ワーカーノードでエラーが発生する可能性があります。 この場合、他の例外が見つからない場合は、ワーカーノードを 1 つずつトラブルシューティングする必要があります。

データをクエリできないのはなぜですか? クエリが失敗するのはなぜですか?

次の手順に基づいて問題のトラブルシューティングを行うことができます。

  1. Hive や Spark などの他のエンジンを使用して、データにアクセスまたはクエリします。 期待どおりにデータにアクセスできない場合は、データソースが接続されているかどうか、およびデータが完全かどうかを確認します。

  2. Trino のみを使用してデータにアクセスまたはクエリできない場合は、メタデータ情報が有効かどうかを確認します。

  3. メタデータ情報が有効であるが、データを含むテーブルをクエリしても結果が返されない場合は、最初にデータアクセス権限があるかどうかを確認します。

    • データが存在する Hadoop Distributed File System(HDFS)で proxyuser メカニズムが有効になっている場合は、Trino の hive.hdfs.impersonation.enabled パラメータを true に設定する必要があります。

    • Ranger で Trino を有効にする場合は、Ranger で関連する権限が正しく設定されているかどうかを確認します。

    • クラスタをスケールアウトする場合は、ノードグループまたはノードに必要なファイルにアクセスするための権限または機能があるかどうかを確認します。

Hudi テーブルまたは Delta テーブルのデータをクエリすると、列の順序が正しくないのはなぜですか?

Presto の hive.properties ファイルで、hive.parquet.use-columns-names パラメータが true に設定されているかどうかを確認する必要があります。

設定項目を追加した後、Trino を再起動できないのはなぜですか?

Server.log ファイルに Error: Configuration property 'xxxxx' was not used エラーメッセージが含まれている場合、設定項目が間違った場所に追加されているか、特定の設定要件が満たされていません。 Trino 設定項目の検証は厳格です。 たとえば、追加された設定項目が存在しない場合、設定項目が正しく設定されていない場合、または設定項目が間違ったファイルに設定されている場合、設定を識別できず、Trino は起動に失敗します。 新しい設定が正しいかどうかを確認するか、ロールバック操作を実行します。

Hive コネクタを使用して Iceberg、Hudi、または Delta Lake テーブルのデータをクエリすると、エラー "xxx テーブルをクエリできません" が報告されるのはなぜですか?

Trino は、Iceberg、Hudi、および Delta Lake 用の個別のコネクタを提供します。 Iceberg、Hudi、または Delta Lake コネクタを使用して、Iceberg、Hudi、または Delta Lake テーブルのデータをクエリすることをお勧めします。 ジョブに Hive コネクタが必要な場合は、テーブルリダイレクト機能を使用してクエリを Iceberg、Hudi、または Delta Lake コネクタに転送します。

たとえば、次のパラメータを設定して、Trino で Hive コネクタを指定できます。 この方法で、適切なコネクタを使用して Iceberg、Delta Lake、および Hudi テーブルのデータをクエリできます。

hive.iceberg-catalog-name=iceberg
hive.delta-lake-catalog-name=delta-lake
hive.hudi-catalog-name=hudi