0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Presto: システム・コネクターの system.runtimeにアクセスしてみた。

Last updated at Posted at 2025-04-28

はじめに

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

次は今回使用したwatsonx.dataのWeb Consoleのインフラストラクチャー・マネージャーのイメージです。
image.png

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を使用してご紹介しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?