はじめに
watsonx.data のエンジンの一つであるPrestoエンジンのシステム・コネクター(System Connector)について調査しました。
Prestoのシステム・コネクターは、オープンソースのPrestoで実装され、Prestoクラスターで実行されている照会の情報とメトリックを提供します。 プロシージャーとしてkill_query (system.runtime.kill_query)が含まれています。
ここではPrestoエンジンのシステム・コネクターのプロシージャーkill_query実行例をwatsonx.data 2.1.2を使用してご紹介します。
Presto システム・コネクター
Prestoのシステム・コネクターは、オープンソースのPrestoで実装されていて、Prestoクラスターで実行されている情報とメトリックを提供します。 watsonx.dataでPrestoエンジンを追加すると、システム・コネクターはカタログ'system'として自動的に構成されています。
kill_query の実行例
Presto システム・コネクターには QueryをKill するkill_queryが含まれています。
使用方法と実行例を紹介します。
Syntax
第1引数のquery_idで特定される queryをkill します。 エラーメッセージには 第2引数で指定したmessageが含まれます。
runtime.kill_query(query_id, message)
実行例1 presto-cliを使用した例
(1) 端末1で時間がかかるQueryを実行します。
presto:hsf100_no_part> select xxxxxxxxxx;
Query 20250428_084814_00195_3pgtu [RUNNING] i[15M 32.9M 11.4M] o[15M 32.9M 11.4M] splits[444/26/25]
(2) 端末2 system.runtime.queriesなどを使用して killしたいqueryのquery_idを特定します。
- presto-cliを使用している場合は、query_idが表示されています。 ↑の
(1) 端末1
の場合 query_idはQuery 20250428_084814_00195_3pgtu
です。
(3) 端末2 kill_queryを実行します。
presto> CALL system.runtime.kill_query('20250428_084814_00195_3pgtu','kill by cpadmin');
CALL
presto>
(4) 端末1では時間がかかっていたQueryがFailしています。
Query 20250428_084814_00195_3pgtu, FAILED, 3 nodes
Splits: 516 total, 326 done (63.18%)
[Latency: client-side: 0:10, server-side: 0:09] [165M rows, 1.13GB] [18.2M rows/s, 127MB/s]
Query 20250428_084814_00195_3pgtu failed: Query killed. Message: kill by cpadmin
presto:hsf100_no_part>
エラーメッセージに kill by cpadmin
が含まれています。
実行例2 Presto Consoleを使用した例
(1) Presto Consoleを開きます。 CLUSTER OVERVIEW画面が表示されます。
- (watsonx.dataでのヒント) Presto Console へのURLは、インフラストラクチャー・マネージャー のエンジンの詳細画面で入手できます。Prestoエンジンをクリックして詳細の中のホスト名(外部ホストが表示される場合は外部ホスト)がPresto ConsoleへのURLです。
(2) CLUSTER OVERVIEW で Kill したいQueryを特定してクリックします。
(3) QUERY DETAILS画面が開きます。その中に"Kill" ボタンがあります。
(4) Kill ボタンを押すと USER ERRORでQuery は終了します。
下のほうにあるError Information には 次のような情報が表示されています。
エラーメッセージには Killed via web UI が含まれています。
Error Information
Error Type USER_ERROR
Error Code ADMINISTRATIVELY_KILLED (38)
Stack Trace
com.facebook.presto.spi.PrestoException: Query killed. Message: Killed via web UI
at com.facebook.presto.connector.system.KillQueryProcedure.createKillQueryException(KillQueryProcedure.java:92)
(5) Presto CLIで実行していたQuery がkill された場合は 次のようにエラーが表示されました。
presto> select xxxx ;
Query 20250428_091258_00199_3pgtu, FAILED, 4 nodes
Splits: 8 total, 4 done (50.00%)
[Latency: client-side: 0:24, server-side: 0:22] [7 rows, 433KB] [0 rows/s, 19.5KB/s]
Query 20250428_091258_00199_3pgtu failed: Query killed. Message: Killed via web UI
presto>
環境
- 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エンジンのシステム・コネクターのプロシージャーkill_queryの実行例をwatsonx.data 2.1.2を使用してご紹介しました。