Presto(Trino) を使用する
    • PDF

    Presto(Trino) を使用する

    • PDF

    Article Summary

    Classic環境で利用できます。

    Prestoは、テラバイトやペタバイト規模のデータを分散クエリ(Distributed queries)を用いて分析できるツールです。
    HDFSだけでなく Hive Warehouseや RDBMSなどの様々なソースからデータを読み取ります。

    クエリが MapReduce Jobとして実行される HivePigとは異なり、Prestoにはクエリの実行エンジンが別途実装されています。ステップ別の結果をディスクに書き込まずにメモリからメモリへデータを転送する仕組みになっており、HDFSに保存されたデータを Hiveより迅速かつインタラクティブに分析できます。そのため、Tableauといった BI Toolでは Hiveより Prestoの方が連携に適しています。

    参考
    • Cloud Hadoop 1.9までは Prestoを、Cloud Hadoop 2.0では Trinoという名前を使用します。
    • Prestoもまた、Hiveや Pigのように OLAPを処理するために設計されたため、トランザクション(Transaction)中心の従来の RDBMSを代替することはできません。

    Prestoの構成要素

    Prestoサービスを構成する2つの主要コンポーネントは、Coordinatorと Workerです。
    Coordinatorは Masterロールとして1つ、Workerは Slaveロールとして複数存在できます。Coordinatorと Worker、Workerノード同士で通信を行う際には REST APIを使用します。

    • Coordinator
      Coordinatorは Prestoサービスの中心であり、以下のようなロールを果たします。

    • Clientからリクエストを受ける

    • SQL構文のパース、クエリプランニング

    • クエリを実行する Workerノードの調整、Workerノードのアクティビティのトラッキング

    • Worker
      Workerは Coordinatorから受け取ったタスクを実行し、データを処理します。タスクの実行結果は Workerから Clientへと直ちに転送します。

    クエリ実行プロセス

    クエリの実行プロセスは、次の通りです(以下の画像画面を参照)。

    1. Presto Workerプロセスの開始と Coordinatorの Discoveryサーバに登録
      • Coordinatorがタスクの実行に Workerを割り当てるには、Discoveryサーバへの登録が必要
    2. Clientは、HTTPを用いてクエリを Coordinatorに転送
    3. Coordinatorはクエリプランを作成し、Connectorプラグインにスキーマデータをリクエスト
    4. Coordinatorは実行するタスクを Workerに転送
    5. Workerは、Connectorプラグインを用いてデータソース(Data Sources)からデータを読み取る
    6. Workerは、メモリでタスクを実行
    7. 実行結果を Clientに直ちに転送

    chadoop-4-7-001.png

    データソース

    • Connector
      Prestoで Connectorは、Databaseでのドライバーと同じロールを果たします。すなわち、データソースからデータを読み取るように Coordinatorまたは Workerとデータソースとの間をつなぐロールを果たします。
      Prestoは、Hive、MySQL、Kafkaなどの様々なデータソースに対する Connectorを提供します。

    • Catalog
      カタログは、Connectorに対するマウントポイントです。すべてのカタログは、特定の Connectorに関連付けられています。Prestoは、カタログにマウントされた Connectorを介してデータソースにアクセスできます。例えば、Hive Connectorで Hive warehouseにアクセスするには、/etc/presto/catalog の下位に Hiveカタログ(hive.properties)を構成します。

      Prestoクエリでは、1つ以上のカタログを使用できます。すなわち、1つのクエリで複数のデータソースを使用できます。

      カタログは、Presto configurationディレクトリ(/etc/presto/)の下位の config.propertiesに定義されています。

    • Schema
      スキーマは、テーブルを整理するための方法です。
      1つのカタログとスキーマでクエリの実行を一度で行える対象である テーブルセット を定義できます。

      Prestoで Hiveや RDBMSにアクセスする際のスキーマは、ここで対応する概念のデータベースと同じです。
      また、他のデータソースでは、スキーマを構成するためのテーブルを組むことができます。

    • Table
      RDBMSのテーブル概念と同じです。
      Prestoでテーブルを参照する際には fully-qualified すなわち、カタログ、スキーマ、テーブル名をピリオド(.)で区切って明示します。
      (例: hive.samples.t1 )

    Prestoクラスタを使用する

    クラスタ作成

    クラスタの作成時に、 クラスタ TypePresto に選択します。
    クラスタの作成に関する詳細は、クラスタ作成ガイドをご参照ください。

    参考
    • Cloud Hadoop 1.1から Presto v0.214がインストールされたクラスタを使用できます。

      chadoop-4-7-002_ja.png

    • クラスタが Prestoタイプで作成されなかった場合でも、Ambari Add Serviceを用いて Prestoを追加できます。

    Ambari UIで Prestoサービス確認

    Prestoをインストールすると、Ambari UIで以下のようにサービスを確認できます。このページで、サービスの各コンポーネントを開始または停止できます。
    chadoop-4-7-003_C_ja.png

    • Summary: コンポーネントがインストールされたホストを確認
    • Configs: Prestoサービスの configurationを変更
    • Quick Links: Presto Discovery UI

    主な Configuration

    • jvm.properties
      Coordinator、Workerサーバで使用する JVM optionを入力します。-Xmxオプションで JVM heapを調整できます。Coordinatorノードと Workerノードのスペックが異なる場合があるため、メモリ設定を分離して適用します。 jvm.properties の構成は、以下のようにロール別に分離されています。実際のサーバの /etc/presto/confパスの下位には、同じファイル名の jvm.propertiesが存在します。
      chadoop-4-8-005_C_ja.png

    • config.properties
      珍しい場合ですが、必要に応じて config.properties も Coordinator/Workerのロール別にメモリをそれぞれ設定できます。主な構成項目の定義は次の通りです。

    項目デフォルト値説明
    query.max-memory-per-node1G- 1つのクエリが Workerで使用できる Userメモリの最大値
    - あるクエリから各 Workerが割り当てられたメモリの中で、この限度を超えるものが1つでもある場合、このクエリの実行をキャンセル
    query.max-memory20G- 1つのクエリがクラスタ全体に対して使用できるメモリの最大値
    - あるクエリを通じてすべての Workerノードに割り当てた Userメモリの合計がこの限度を超えると、クエリの実行をキャンセル
    query.max-total-memory-per-node2G- 1つのクエリがクラスタ全体に対して使用できる User/Systemメモリの最大値
    - あるクエリを通じてすべての Workerノードに割り当てた User/Systemメモリの合計がこの限度を超えると、クエリの実行をキャンセル

    chadoop-4-8-006_C_ja.png

    注意

    http-server.http.portを変更する場合、Coordinatorの http-server.http.portと Workerの http-server.http.portを同じく変更します。異なるポートに指定すると、通信は行えません。

    • node.properties
      Prestoデーモンが使用するログディレクトリ、pidディレクトリなどを設定できます。このディレクトリを変更するには、各サーバでディレクトリの所有者と権限を確認する必要があります。
      node.environmentで現在使用中の environment名を指定できます。
      chadoop-4-8-007_C_ko

    Presto CLI

    Presto CLIは、クエリを実行できる反応型シェルを提供します。
    Presto Clis のロールが割り当てられたホストでは、いずれもシェルを使用できます。
    Presto CLIの使用に関する詳細は、Presto CLI Documentationをご参照ください。

    • Presto Coordinatorサーバにアクセス
    /usr/lib/presto/bin/presto-cli --server <COORDINATOR-HOST-IP>:8285
    
    • 使用可能な Catalogを確認
    presto> show catalogs;
     Catalog
    ---------
     system
    (1 row)
    
    Query 20190430_020419_00001_j79dc, FINISHED, 2 nodes
    Splits: 36 total, 36 done (100.00%)
    0:07 [0 rows, 0B] [0 rows/s, 0B/s]
    
    参考

    データソースを追加してクエリを実行する方法は、Prestoで Hive warehouseデータを分析するでより詳しく説明します。

    Presto Discovery UIにアクセス

    Cloud Hadoopコンソールで [Application別に見る] から Presto Discovery UIにアクセスできます。詳細は、Application別に見るをご参照ください。
    chadoop-4-7-004_ja.png

    Presto Discovery UIページで、Prestoサービス全体の状態を確認できます。クエリ記録も照会できます。
    chadoop-4-7-005_ja.png


    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.