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

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

最終更新日:Jul 18, 2026

Kyuubi は、セッション、ユーザー、グループ間で Spark エンジンの割り当てを制御する複数のエンジン共有レベルをサポートしています。

サポートされるエンジン

E-MapReduce クラスターに Kyuubi をインストールすると、依存関係として YARN および Spark 3 もインストールされます。E-MapReduce 上の Kyuubi は、YARN 上の Spark 3 のみをサポートします。Flink、Trino、および Spark 2 はサポートされていません。各 Spark エンジンは、YARN 上の 1 つの Spark アプリケーションに対応します。詳細については、「例」をご参照ください。

共有レベル

エンジンの共有レベルを設定するには、Kyuubi サービス構成ページの kyuubi-defaults.conf タブで、kyuubi.engine.share.level パラメーターを構成します。

共有レベル

説明

ユースケース

分離度

共有性

CONNECTION

セッションごとに 1 つのエンジンが起動されます。

  • 大規模な抽出・変換・書き出し (ETL)

  • アドホッククエリ

高

低

USER

ユーザーごとに 1 つのエンジンが起動されます。

中

中

GROUP

リソースグループごとに 1 つのエンジンが起動されます。

低

高

SERVER

クラスターごとに 1 つのエンジンが起動されます。

管理者

高セキュリティクラスターでは最も高く、標準クラスターでは最も低くなります。

高セキュリティクラスターは管理者のみが利用できます。

例

以下の例では、USER 共有レベル(kyuubi.engine.share.level を USER に設定)を使用し、すべてのユーザーが Lightweight Directory Access Protocol (LDAP) または Kerberos を通じて認証されていることを前提としています。

  1. オンデマンドでエンジンを起動する

    新規ユーザー user1 が kyuubi-beeline ツールを使用してジョブを送信すると、Kyuubi サーバーはその処理のために新しい Spark エンジンを起動します。

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

    別のユーザー user2 が Spark エンジンのリソースを指定する必要がある場合は、次のいずれかの方法を使用できます。

    • 方法 1:JDBC 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 設定ファイルで Spark エンジンのリソースを設定します。

      # 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
  2. 特定のエンジンにジョブを送信する

    ジョブ完了後、Kyuubi が起動した Spark エンジンは、設定可能な期間アクティブな状態を維持します。新しいジョブはこのアイドル状態のエンジンを再利用でき、新しい YARN アプリケーションを起動する必要がなくなるため、パフォーマンスが向上します。この期間内に新しいジョブが送信されない場合、エンジンは自動的に終了します。kyuubi.session.engine.idle.timeout パラメーターはアイドルタイムアウト期間を指定し、デフォルト値は PT30M(30 分)です。このパラメーターは kyuubi-defaults.conf タブで構成できます。

    Kyuubi では、同じ共有レベル内でサブドメインを作成できます。たとえば、ユーザー user4 が異なるビジネスシナリオに対して異なるエンジンリソースを必要とする場合、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
  3. 単一のエンジンが複数の Spark セッションをサポートする

    複数の Spark セッションが、単一の Spark エンジンを同時に使用できます。たとえば、ユーザー user1 が 2 つの異なる端末から同時に 2 つのジョブを送信した場合、両方のジョブは同じ Spark エンジン上で実行されます。Spark は、内部のデフォルトスケジューリングメカニズムに基づいて、ジョブにエグゼキュータリソースを割り当てます。

    # コンソール 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

参考資料