すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Kyuubi エンジンの管理

最終更新日:Mar 26, 2026

E-MapReduce (EMR) クラスター内の Kyuubi は、YARN 上で Spark 3.x を実行します。各 Spark 3.x エンジンは、YARN 上の 1 つの Spark アプリケーションに対応します。Flink、Trino、および Spark 2.x はサポートされていません。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • EMR クラスターに YARN および Spark 3.x がインストールされていること

  • すべてのユーザーが Lightweight Directory Access Protocol (LDAP) または Kerberos により認証済みであること

共有レベル

共有レベルは、単一の Kyuubi エンジンを何人のユーザーが共有するかを決定します。kyuubi.engine.share.level パラメーターは、EMR コンソールの Kyuubi サービスページにある kyuubi-defaults.conf タブで設定します。

共有レベルエンジンの範囲隔離度共有性利用シーン
CONNECTIONセッションごとに 1 つのエンジン大規模 ETL、アドホッククエリ
USERユーザーごとに 1 つのエンジン
GROUPリソースグループごとに 1 つのエンジン
SERVERクラスターごとに 1 つのエンジン高セキュリティクラスター:最高/標準クラスター:最低高セキュリティクラスター:管理者のみ管理者

Kyuubi エンジンへのジョブの送信

Kyuubi サーバーは、エンジンを自動的に起動および停止します。新しいユーザーが初めて kyuubi-beeline を使用して接続すると、サーバーは新しい Spark 3.x エンジンを起動します。手動での起動は不要です。

以下の例では、共有レベルとして USER を使用します。すべてのユーザーは LDAP または Kerberos 認証を通過済みです。

新規ユーザーとしてジョブを送信する

user1 が初回接続すると、Kyuubi サーバーは自動的に新しい Spark 3.x エンジンを起動します。

kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
  -f query1.sql

Spark エグゼキュータのリソースを設定する

Spark 3.x エンジンが使用するリソースを設定する方法は、以下の 2 つがあります。

方法 1:JDBC URL 内でリソースを設定する

接続 URL に直接 Spark パラメーターを指定します。

# JDBC 接続 URL を使用したユーザー設定の指定
kyuubi-beeline -n user2 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000?spark.dynamicAllocation.enabled=false;spark.executor.cores=2;spark.executor.memory=4g;spark.executor.instances=4" \
  -f query1.sql

方法 2:kyuubi-defaults.conf でユーザーごとのデフォルトを設定する

kyuubi-defaults.conf タブに、___username___.spark.param=value の形式でユーザー固有のエントリを追加します。

# kyuubi-defaults.conf におけるユーザー別デフォルト設定
# ___user2___.spark.dynamicAllocation.enabled=false
# ___user2___.spark.executor.memory=5g
# ___user2___.spark.executor.cores=2
# ___user2___.spark.executor.instances=10

kyuubi-beeline -n user2 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
  -f query1.sql

実行中のエンジンを再利用する

ジョブが完了後、Spark 3.x エンジンは一定期間(アイドル状態)存続し、その後シャットダウンされます。この期間内に別のジョブを送信すると、既存のエンジンが再利用され、新しい YARN アプリケーションの起動が回避されるため、ジョブの起動時間が短縮されます。

アイドルタイムアウトは kyuubi.session.engine.idle.timeout パラメーターで制御されます(デフォルト値:PT30M、30 分)。タイムアウトを変更するには、このパラメーターを kyuubi-defaults.conf タブで更新します。

同一ユーザーから複数のエンジンへジョブを送信する

異なる事業部門向けにワークロードを分離して実行する場合、JDBC URL で kyuubi.engine.share.level.subdomain を使用します。

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz1?kyuubi.engine.share.level.subdomain=biz1" \
  -f query1.sql

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz2?kyuubi.engine.share.level.subdomain=biz2" \
  -f query2.sql

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz3?kyuubi.engine.share.level.subdomain=biz3" \
  -f query3.sql

各サブドメインは個別の Spark エンジンに対応するため、biz1、biz2、biz3 は相互に隔離された状態で実行されます。

複数のセッション間で 1 つのエンジンを共有する

同一ユーザーからの複数のセッションは、単一の Spark 3.x エンジンを共有します。たとえば、user1 が別々のターミナルから同時に 2 つのジョブを送信した場合、両方のジョブは同じエンジン上で実行されます。

# ターミナル 1
kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/biz1" \
  -f query1.sql

# ターミナル 2
kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/biz2" \
  -f query2.sql

エグゼキュータのリソースは、Spark のデフォルトスケジューリングルールに従って割り当てられます。

次のステップ