最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
VPC環境で利用できます。
Prestoは、テラバイトやペタバイト単位のデータを分散クエリ(Distributed queries)を用いて分析できるツールです。
HDFSだけでなく Hive Warehouseや RDBMSなどの様々なソースからデータを読み取ります。
クエリが MapReduce Jobとして実行される Hiveや Pigとは異なり、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へと直ちに転送します。
クエリ実行プロセス
クエリの実行プロセスは、次の通りです。(以下の画像画面を参照)
- Presto Workerプロセスの開始と Coordinatorの Discoveryサーバに登録
- Coordinatorがタスクの実行に Workerを割り当てるには、Discoveryサーバへの登録が必要
- Clientは、HTTPを用いてクエリを Coordinatorに転送
- Coordinatorはクエリプランを作成し、Connectorプラグインにスキーマデータをリクエスト
- Coordinatorは実行するタスクを Workerに転送
- Workerは、Connectorプラグインを用いてデータソース(Data Sources)からデータを読み取る
- Workerは、メモリでタスクを実行
- 実行結果を Clientに直ちに転送

データソース
-
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)
Rangerを用いて Catalog、Schema、Tableレベルに対するアクセス権限を制御できます。詳細は、Trinoアクセス権限管理をご参照ください。
Prestoクラスタを使用する
クラスタ作成
NAVERクラウドプラットフォームコンソールで Cloud Hadoopクラスタを作成します。
クラスタ作成に関する詳細は、クラスタ作成をご参照ください。
-
Cloud Hadoop 1.3から Presto v0.240がインストールされたクラスタを使用できます。

-
Cloud Hadoop 1.3ではクラスタが Prestoタイプで作成されなかった場合でも、Ambari Add Serviceを用いて Prestoを追加できます。
Ambari UIで Prestoサービス確認
Prestoをインストールすると、Ambari UIで以下のようにサービスを確認できます。このページで、サービスの各コンポーネントを開始または停止できます。

- Summary: コンポーネントがインストールされたホストを確認
- Configs: Prestoサービスの configurationを変更
- Quick Links: Presto Discovery UI
- このリンクを介してアクセスするには、トンネリングが必要です。コンソールで提供する Web UIリンクを用いたアクセスをお勧めします。詳細は、Presto Discovery UIにアクセスをご参照ください。
主な Configuration
-
jvm.properties
Coordinator、Workerサーバで使用する JVMオプションを入力します。-Xmxオプションで JVM heapを調整できます。Coordinatorノードと Workerノードのスペックが異なる場合があるため、メモリ設定を分離して適用します。jvm.propertiesの構成は、以下のようにロール別に分離されています。実際のサーバの/etc/presto/confパスの下位には、同じファイル名のjvm.propertiesが存在します。

-
config.properties
珍しい場合ですが、必要に応じて config.propertiesも Coordinatorと Workerのロール別にメモリをそれぞれ設定できます。主な構成項目の定義は次の通りです。
| 項目 | デフォルト値 | 説明 |
|---|---|---|
| query.max-memory-per-node | 1G |
|
| query.max-memory | 20G |
|
| query.max-total-memory-per-node | 2G |
|

http-server.http.portを変更する場合、Coordinatorの http-server.http.portと Workerの http-server.http.portを同じく変更します。異なるポートに指定すると、通信は行えません。
- node.properties
Prestoデーモンが使用するログディレクトリ、pidディレクトリなどを設定できます。このディレクトリを変更するには、各サーバでディレクトリの所有者と権限を確認する必要があります。
node.environmentで現在使用中の environment名を指定できます。

Presto CLI
Presto CLIはクエリを実行できる反応型シェル(shell)を提供します。
Presto Clisのロールが割り当てられたホストでは、いずれもシェルを使用できます。
Presto CLIの使用に関する詳細は、Presto CLI Documentationをご参照ください。
- Presto Coordinatorサーバにアクセス
/home1/cdp/usr/nch/3.1.0.0-78/trino/bin/trino-cli --server <COORDINATOR-HOST-IP>:8285
Presto Coordinatorサーバアクセス時の <COORDINATOR-HOST-IP>は、エッジノード(e-001)の Private IPアドレスです。Ambari UI > Hostsメニューで確認できます。
- 使用可能なカタログを確認
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別に見るをご参照ください。

Presto Discovery UIページで、Prestoサービス全体のステータスを確認できます。クエリ履歴も照会できます。
