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 する

0
Last updated at Posted at 2025-04-30

To English Readers : Thank you to reach here! English Translation is available.
See Presto: kill Query.

はじめに

Prestoはwatsonx.dataに組み込まれているオープンソースのクエリーエンジンで、高速で信頼性が高く効率よくデータを処理します。
Prestoエンジンのシステム・コネクター(System Connector)は、オープンソースの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

kill_queryは2つの引数を指定します。

  • query_id : killする照会のquery_id(必須)
  • message : 照会が強制的終了させられる理由を説明するメッセージを提供することができる。(オプション)
runtime.kill_query(query_id, message)

実行例1 presto-cliを使用した例

この例では、2つのpresto-cliターミナル(端末1と端末2)を使用します。
(1) 端末1で時間がかかる照会を実行します。

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) killしたい照会の特定:system.runtime.queriesなどを使用して killしたい照会のquery_idを特定します。

  • presto-cliを使用している場合は、query_idが表示されています。 (1) 端末1の場合 "Query 20250428_084814_00195_3pgtu"というメッセージからquery_idは20250428_084814_00195_3pgtuであることがわかります。

(3) 端末2 kill_queryを実行します。第1引数にquery_id:'20250428_084814_00195_3pgtu'、第2引数にメッセージ'kill by cpadmin'を指定してsystem.runtime.kill_queryを実行します。

presto> CALL system.runtime.kill_query('20250428_084814_00195_3pgtu','kill by cpadmin');
CALL
presto>

(4) 端末1では時間がかかっていた照会が次のように強制終了されます。 

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?