はじめに
watsonx.data のエンジンの一つであるPrestoエンジンのシステム・コネクター(System Connector)について調査しました。
Prestoのシステム・コネクターは、オープンソースのPrestoで実装され、Prestoクラスターで実行されている照会の情報とメトリックを提供します。 プロシージャーとしてkill_query (system.runtime.kill_query)が含まれています。
ここではPrestoエンジンのシステム・コネクターのruntimeスキーマに含まれる表の構造と含まれるデータの例をwatsonx.data 2.1.2を使用してご紹介します。
環境
- OCP Version : 4.16
- CP4D 5.1.2
- watsonx.data 2.1.2
- 構成済みのPresto エンジンについて
- P01(Presto Java)
- タイプ : Presto (Java) v0.286
- サイズ : スターター
- コーディネーター・ノード : 1
- ワーカー・ノード : 0
- PCpp (Presto(C++))
- タイプ : Presto (C++) v0.286
- サイズ : スターター
- コーディネーター・ノード : 1
- ワーカー・ノード : 3
- P01(Presto Java)
次は今回使用したwatsonx.dataのWeb Consoleのインフラストラクチャー・マネージャーのイメージです。
Presto システム・コネクター
Prestoのシステム・コネクターは、オープンソースのPrestoで実装されていて、Prestoクラスターで実行されている情報とメトリックを提供します。 watsonx.dataでPrestoエンジンを追加すると、システム・コネクターは自動的に構成されています。
Presto システム・コネクターはカタログsystemを使用して通常の SQL クエリでアクセスすることができます。
その中のスキーマ runtime には次の4つの表が含まれています。
表 | 説明 |
---|---|
nodes | Prestoクラスターのノードのリストとそのステータス。 |
queries | Prestoクラスターで実行中、最近完了したクエリーの情報が含まれる。元のクエリー・テキスト(SQL)、クエリーを実行したユーザー情報、パフォーマンス情報(キュー待ち時間、アナライズ時間を含む)を取得することができる。 |
tasks | タスクが実行された場所や、各タスクが処理した行数とバイト数など、Presto クエリーに関連するタスク情報が含まれている。 |
transactions | 実行中のトランザクションと関連メタデータのリストが含まれる。作成時刻、アイドル時間、初期化パラメータ、アクセスされたカタログなどの情報が含まれる。 |
watsonx.data でみる Presto システム・コネクター
watsonx.data データ・マネージャーでは 次のように System monitoring data の中のsystemとして表示されます。
今回はsystemの中の runtimeについて記述します。
presto-cliで取得した各表の構造と主にPresto(Java)での出力例をご紹介します。watsonx.dataの照会ワークスペースでも同様の出力がえられます。
補足情報 : Presto(Java),Presto(C++)でruntimeスキーマの表の構造を確認したところ同じでした。
system.runtime.nodes
system.runtime.nodesはPrestoクラスターのノードのリストとそのステータスを表示します。
- 表構造は次のようなものです。describe の結果の Extra列 Comment列には値がなかったため省略しています。
例として今回観察された値を紹介しています。
presto> describe system.runtime.nodes;
Column | Type | Precision | Scale | Length | 観察された値
--------------+---------+-----------+-------+------------+-------------
node_id | varchar | NULL | NULL | 2147483647 |
http_uri | varchar | NULL | NULL | 2147483647 | https://ibm-lh-lakehouse...
node_version | varchar | NULL | NULL | 2147483647 | 0.286
coordinator | boolean | NULL | NULL | NULL | true / false
state | varchar | NULL | NULL | 2147483647 | active
node_type | varchar | NULL | NULL | 2147483647 | NORMAL
(6 rows)
- Presto(Java)での出力
今回使用している環境では Presto(Java)はコーディネーターとワーカーが一つのPodに同居した環境で動いています。 system.runtime.nodes をみると次のとおり1行出力されました。coordinator
列がture
となっています。
presto> select * from system.runtime.nodes ;
node_id | http_uri | node_version | coordinator | state | node_type
--------------------------------------+----------------------------------------------------------------+--------------+-------------+--------+-----------
536b979f-5e94-4cd2-bfab-45be1a1aee3a | https://ibm-lh-lakehouse-presto512-single-blue-0.(domain):8443 | 0.286 | true | active | NORMAL
(1 row)
- Presto(C++)での出力
Presto(C++)は 1つのCoordinatorと3つのWorkerで構成されています。 system.runtime.nodes をみると次のとおり 4行出力されました。coordinator
列がture
の行が1行false
の行が3行です。
presto> select * from system.runtime.nodes;
node_id | http_uri | node_version | coordinator | state | node_type
--------------------------------------+----------------------------------------------------------------------------+--------------+-------------+--------+-----------
4846690c-05e6-439b-9a10-0712d5e515d0 | https://ibm-lh-lakehouse-prestissimo578-prestissimo-worker-1.(domain):7443 | 0.286 | false | active | NORMAL
a4cc17ce-158c-4e39-beaa-0cc1603219d0 | https://ibm-lh-lakehouse-prestissimo578-coordinator-blue-0.(domain):8443 | 0.286 | true | active | NORMAL
aa63bd77-8a92-43ad-bd7f-9844354cf6c9 | https://ibm-lh-lakehouse-prestissimo578-prestissimo-worker-0.(domain):7443 | 0.286 | false | active | NORMAL
beac420a-0007-4259-99e9-ff7c439fabb3 | https://ibm-lh-lakehouse-prestissimo578-prestissimo-worker-2.(domain):7443 | 0.286 | false | active | NORMAL
(4 rows)
system.runtime.queries
system.runtime.queriesにはPrestoクラスターで実行中あるいは最近完了したクエリーの情報が含まれます。元のクエリー・テキスト(SQL)、クエリーを実行したユーザー情報、パフォーマンス情報(キュー待ち時間、アナライズ時間を含む)を取得することができます。
- 表構造は次のようなものです。describe の結果の Extra列 Comment列には値がなかったため省略しています。例として今回観察された値を紹介しています。
presto> describe system.runtime.queries ;
Column | Type | Precision | Scale | Length | 観察された値
-------------------+----------------+-----------+-------+------------+---------
query_id | varchar | NULL | NULL | 2147483647 +
state | varchar | NULL | NULL | 2147483647 + RUNNING / FINISHED / FAILED / PLANNING
user | varchar | NULL | NULL | 2147483647 +
source | varchar | NULL | NULL | 2147483647 + presto-cli / wxd-system / wxd-sql ...
query | varchar | NULL | NULL | 2147483647 +
resource_group_id | array(varchar) | NULL | NULL | NULL + [global]
queued_time_ms | bigint | 10 | NULL | NULL +
analysis_time_ms | bigint | 10 | NULL | NULL +
created | timestamp | NULL | NULL | NULL +
started | timestamp | NULL | NULL | NULL +
last_heartbeat | timestamp | NULL | NULL | NULL +
end | timestamp | NULL | NULL | NULL +
(12 rows)
出力例 横に長いので 3つに分けてご紹介します。
- 最初の4列 query_id, state, user , source , resource_group_id
presto> select query_id, state, user , source , resource_group_id from system.runtime.queries order by query_id desc limit 5;
query_id | state | user | source | resource_group_id
-----------------------------+----------+-----------+------------+-------------------
20250422_061937_00187_drami | RUNNING | cpadmin | presto-cli | [global]
20250422_061848_00186_drami | FINISHED | cpadmin | presto-cli | [global]
20250422_061740_00184_drami | FINISHED | cpadmin | presto-cli | [global]
20250422_061639_00183_drami | FAILED | prestoadm | NULL | [global]
20250422_061638_00182_drami | FINISHED | prestoadm | NULL | [global]
(5 rows)
- 列 query_id, user, source , query :
user02
で実行されたQuery 2行表示しています。
presto> select query_id, user, source , query from system.runtime.queries where user='user02' order by query_id desc limit 2 ;
query_id | user | source | query
-----------------------------+--------+------------+--------------------------------------------------------------------------------------
20250422_055253_00163_drami | user02 | presto-cli | SELECT table_name FROM information_schema.tables WHERE table_schema = 'hsf1_no_part'
20250422_055244_00162_drami | user02 | presto-cli | select +
| | | l_returnflag, +
| | | l_linestatus, +
| | | sum(l_quantity) as sum_qty, +
| | | sum(l_extendedprice) as sum_base_price, +
| | | sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, +
| | | sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, +
| | | avg(l_quantity) as avg_qty, +
| | | avg(l_extendedprice) as avg_price, +
| | | avg(l_discount) as avg_disc, +
| | | count(*) as count_order +
| | | from +
| | | lineitem +
| | | where +
(省略)
- 列 query_id , queued_time_ms,analysis_time_ms ,created , started , last_heartbeat, end :
user02
で実行されたQuery の開始時刻や各フェーズの所要時間(ms)を表示しています。
presto> select query_id , queued_time_ms,analysis_time_ms ,created , started , last_heartbeat, "end" from system.runtime.queries where user='user02' order by query_id desc limit 2;
query_id | queued_time_ms | analysis_time_ms | created | started | last_heartbeat | end
-----------------------------+----------------+------------------+-------------------------+-------------------------+-------------------------+-------------------------
20250422_055253_00163_drami | 0 | 703 | 2025-04-22 05:52:54.019 | 2025-04-22 05:52:54.123 | 2025-04-22 05:52:55.517 | 2025-04-22 05:52:55.617
20250422_055244_00162_drami | 0 | 686 | 2025-04-22 05:52:44.631 | 2025-04-22 05:52:44.947 | 2025-04-22 05:53:02.644 | 2025-04-22 05:53:02.716
(2 rows)
system.runtime.tasks
タスクが実行された場所や、各タスクが処理した行数とバイト数など、Presto クエリーに関連するタスク情報が含まれています。
- 表構造は次のようなものです。
presto> describe system.runtime.tasks ;
Column | Type | Extra | Comment | Precision | Scale | Length
-------------------------+-----------+-------+---------+-----------+-------+------------
node_id | varchar | | | NULL | NULL | 2147483647
task_id | varchar | | | NULL | NULL | 2147483647
stage_execution_id | varchar | | | NULL | NULL | 2147483647
stage_id | varchar | | | NULL | NULL | 2147483647
query_id | varchar | | | NULL | NULL | 2147483647
state | varchar | | | NULL | NULL | 2147483647
splits | bigint | | | 10 | NULL | NULL
queued_splits | bigint | | | 10 | NULL | NULL
running_splits | bigint | | | 10 | NULL | NULL
completed_splits | bigint | | | 10 | NULL | NULL
split_scheduled_time_ms | bigint | | | 10 | NULL | NULL
split_cpu_time_ms | bigint | | | 10 | NULL | NULL
split_blocked_time_ms | bigint | | | 10 | NULL | NULL
raw_input_bytes | bigint | | | 10 | NULL | NULL
raw_input_rows | bigint | | | 10 | NULL | NULL
processed_input_bytes | bigint | | | 10 | NULL | NULL
processed_input_rows | bigint | | | 10 | NULL | NULL
output_bytes | bigint | | | 10 | NULL | NULL
output_rows | bigint | | | 10 | NULL | NULL
physical_written_bytes | bigint | | | 10 | NULL | NULL
created | timestamp | | | NULL | NULL | NULL
start | timestamp | | | NULL | NULL | NULL
last_heartbeat | timestamp | | | NULL | NULL | NULL
end | timestamp | | | NULL | NULL | NULL
(24 rows)
出力例 あるQuery(query_id='20250422_065234_00233_drami')に関する情報を取得した例です。
横に長いので 4つに分けてご紹介します。
- 最初の6列 node_id , task_id , stage_execution_id ,stage_id,query_id, state : このQueryが5つのタスクで実行されたことがわかります。
presto> select node_id , task_id , stage_execution_id ,stage_id,query_id, state from system.runtime.tasks where query_id='20250422_065234_00233_drami';
node_id | task_id | stage_execution_id | stage_id | query_id | state
--------------------------------------+-------------------------------------+---------------------------------+-------------------------------+-----------------------------+----------
536b979f-5e94-4cd2-bfab-45be1a1aee3a | 20250422_065234_00233_drami.2.0.0.0 | 20250422_065234_00233_drami.2.0 | 20250422_065234_00233_drami.2 | 20250422_065234_00233_drami | FINISHED
536b979f-5e94-4cd2-bfab-45be1a1aee3a | 20250422_065234_00233_drami.3.0.0.0 | 20250422_065234_00233_drami.3.0 | 20250422_065234_00233_drami.3 | 20250422_065234_00233_drami | FINISHED
536b979f-5e94-4cd2-bfab-45be1a1aee3a | 20250422_065234_00233_drami.4.0.0.0 | 20250422_065234_00233_drami.4.0 | 20250422_065234_00233_drami.4 | 20250422_065234_00233_drami | FINISHED
536b979f-5e94-4cd2-bfab-45be1a1aee3a | 20250422_065234_00233_drami.1.0.0.0 | 20250422_065234_00233_drami.1.0 | 20250422_065234_00233_drami.1 | 20250422_065234_00233_drami | FINISHED
536b979f-5e94-4cd2-bfab-45be1a1aee3a | 20250422_065234_00233_drami.0.0.0.0 | 20250422_065234_00233_drami.0.0 | 20250422_065234_00233_drami.0 | 20250422_065234_00233_drami | FINISHED
(5 rows)
- 列 task_id ,splits, queued_splits , running_splits , completed_splits , split_cpu_time_ms , split_blocked_time_ms : 各タスクのsplitsに関する情報
presto> select task_id ,splits, queued_splits , running_splits , completed_splits , split_cpu_time_ms , split_blocked_time_ms from system.runtime.tasks where query_id='20250422_065234_00233_drami';
task_id | splits | queued_splits | running_splits | completed_splits | split_cpu_time_ms | split_blocked_time_ms
-------------------------------------+--------+---------------+----------------+------------------+-------------------+-----------------------
20250422_065234_00233_drami.2.0.0.0 | 37 | 0 | 0 | 37 | 2258 | 148500
20250422_065234_00233_drami.3.0.0.0 | 34 | 0 | 0 | 34 | 824 | 59482
20250422_065234_00233_drami.4.0.0.0 | 1 | 0 | 0 | 1 | 166 | 0
20250422_065234_00233_drami.1.0.0.0 | 32 | 0 | 0 | 32 | 47 | 205241
20250422_065234_00233_drami.0.0.0.0 | 17 | 0 | 0 | 17 | 10 | 109855
(5 rows)
- 列 task_id ,raw_input_bytes , raw_input_rows , processed_input_bytes, processed_input_rows , output_bytes , output_rows : 各タスクの処理量
presto> select task_id ,raw_input_bytes , raw_input_rows , processed_input_bytes, processed_input_rows , output_bytes , output_rows from system.runtime.tasks where query_id='20250422_065234_00233_drami’;
task_id | raw_input_bytes | raw_input_rows | processed_input_bytes | processed_input_rows | output_bytes | output_rows
-------------------------------------+-----------------+----------------+-----------------------+----------------------+--------------+-------------
20250422_065234_00233_drami.2.0.0.0 | 52865068 | 6148341 | 53453026 | 6148341 | 372026 | 11620
20250422_065234_00233_drami.3.0.0.0 | 11426397 | 1530142 | 11486639 | 1530142 | 4119528 | 147126
20250422_065234_00233_drami.4.0.0.0 | 330572 | 150000 | 330572 | 150000 | 542556 | 30142
20250422_065234_00233_drami.1.0.0.0 | 372034 | 11620 | 429940 | 11620 | 4480 | 160
20250422_065234_00233_drami.0.0.0.0 | 5088 | 160 | 4480 | 160 | 280 | 10
(5 rows)
- 列 task_id , physical_written_bytes, created, start , last_heartbeat , "end" : 各タスクの物理書き出しと 開始終了などの時刻
presto> select task_id , physical_written_bytes, created, start , last_heartbeat , "end" from system.runtime.tasks where query_id='20250422_065234_00233_drami';
task_id | physical_written_bytes | created | start | last_heartbeat | end
-------------------------------------+------------------------+-------------------------+-------------------------+-------------------------+-------------------------
20250422_065234_00233_drami.2.0.0.0 | 0 | 2025-04-22 06:52:35.521 | 2025-04-22 06:52:35.728 | 2025-04-22 06:52:41.719 | 2025-04-22 06:52:41.813
20250422_065234_00233_drami.3.0.0.0 | 0 | 2025-04-22 06:52:35.515 | 2025-04-22 06:52:35.630 | 2025-04-22 06:52:38.619 | 2025-04-22 06:52:38.741
20250422_065234_00233_drami.4.0.0.0 | 0 | 2025-04-22 06:52:35.435 | 2025-04-22 06:52:35.625 | 2025-04-22 06:52:36.313 | 2025-04-22 06:52:36.333
20250422_065234_00233_drami.1.0.0.0 | 0 | 2025-04-22 06:52:35.258 | 2025-04-22 06:52:35.325 | 2025-04-22 06:52:41.713 | 2025-04-22 06:52:41.923
20250422_065234_00233_drami.0.0.0.0 | 0 | 2025-04-22 06:52:35.314 | 2025-04-22 06:52:35.323 | 2025-04-22 06:52:42.018 | 2025-04-22 06:52:42.017
(5 rows)
system.runtime.transactions
実行中のトランザクションと関連メタデータのリストが含まれます。作成時刻、アイドル時間、初期化パラメータ、アクセスされたカタログなどの情報が含まれます。
transactions表と他の表を関連付ける方法は見つけられていません。
- 表構造は次のようなものです。
presto> describe system.runtime.transactions;
Column | Type | Extra | Comment | Precision | Scale | Length
---------------------+----------------+-------+---------+-----------+-------+------------
transaction_id | varchar | | | NULL | NULL | 2147483647
isolation_level | varchar | | | NULL | NULL | 2147483647
read_only | boolean | | | NULL | NULL | NULL
auto_commit_context | boolean | | | NULL | NULL | NULL
create_time | timestamp | | | NULL | NULL | NULL
idle_time_secs | bigint | | | 10 | NULL | NULL
written_catalog | varchar | | | NULL | NULL | 2147483647
catalogs | array(varchar) | | | NULL | NULL | NULL
(8 rows)
出力例 横に長いので2つに分けて紹介しています
- 列 transaction_id , isolation_level, read_only , auto_commit_context, create_time
presto> select transaction_id , isolation_level, read_only , auto_commit_context, create_time from system.runtime.transactions order by create_time desc;
transaction_id | isolation_level | read_only | auto_commit_context | create_time
--------------------------------------+------------------+-----------+---------------------+-------------------------
f8e84c00-21a3-40f4-8c32-81f0291356d7 | READ UNCOMMITTED | false | true | 2025-04-28 06:49:59.837
b3d277b5-b99b-4323-af2d-8a91dd10b2f5 | READ UNCOMMITTED | false | true | 2025-04-28 06:49:55.063
(2 rows)
- 列 transaction_id , create_time , idle_time_secs , written_catalog , catalogs
presto> select transaction_id , create_time , idle_time_secs , written_catalog , catalogs from system.runtime.transactions order by create_time desc;
transaction_id | create_time | idle_time_secs | written_catalog | catalogs
--------------------------------------+-------------------------+----------------+-----------------+--------------------------------------------------------
229a66ea-4359-409f-bfcb-2460d4d41ab3 | 2025-04-28 06:50:05.169 | 0 | NULL | [system, $info_schema@system, $system@system]
b3d277b5-b99b-4323-af2d-8a91dd10b2f5 | 2025-04-28 06:49:55.063 | 0 | NULL | [hive_data, $system@hive_data, $info_schema@hive_data]
(2 rows)
まとめ
Prestoエンジンのシステム・コネクターのruntimeスキーマに含まれる表の構造と含まれるデータの例をwatsonx.data 2.1.2を使用してご紹介しました。