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: Query を kill する

Last updated at Posted at 2025-04-30

はじめに

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画面が表示されます。
image.png

  • (watsonx.dataでのヒント) Presto Console へのURLは、インフラストラクチャー・マネージャー のエンジンの詳細画面で入手できます。Prestoエンジンをクリックして詳細の中のホスト名(外部ホストが表示される場合は外部ホスト)がPresto ConsoleへのURLです。

(2) CLUSTER OVERVIEW で Kill したいQueryを特定してクリックします。
image.png

(3) QUERY DETAILS画面が開きます。その中に"Kill" ボタンがあります。
image.png

(4) Kill ボタンを押すと USER ERRORでQuery は終了します。
image.png

下のほうにあるError Information には 次のような情報が表示されています。
image.png
エラーメッセージには 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

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

まとめ

Prestoエンジンのシステム・コネクターのプロシージャーkill_queryの実行例を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?