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

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

最終更新日:Jan 11, 2025

このトピックでは、Kyuubiエンジンとその共有レベルについて説明し、Kyuubiエンジンを起動してジョブをKyuubiエンジンに送信する方法の例を示します。

Kyuubiエンジン

E-MapReduce(EMR)クラスターにKyuubiをインストールする場合は、事前にYARNエンジンとSpark 3.xエンジンがインストールされていることを確認してください。 EMRクラスターのKyuubiは、YARN上のSpark 3.xをサポートしていますが、Flink、Trino、またはSpark 2.xエンジンはサポートしていません。次の例では、Spark 3.xエンジンを使用して、Kyuubiエンジンの管理方法を説明します。各Spark 3.xエンジンは、YARN上のSparkアプリケーションに対応します。詳細については、をご参照ください。

共有レベル

Kyuubiエンジンの共有レベルを設定するには、EMRコンソールのKyuubiサービスページの[kyuubi-defaults.conf] タブに移動し、[kyuubi.engine.share.level] パラメーターを設定します。次の表に、さまざまな共有レベルの詳細を示します。

共有レベル

説明

シナリオ

分離度

共有性

CONNECTION

セッションごとに1つのエンジン

  • 大規模な抽出、変換、ロード(ETL)

  • アドホッククエリ

USER

ユーザーごとに1つのエンジン

GROUP

リソースグループごとに1つのエンジン

SERVER

クラスターごとに1つのエンジン

管理者

高セキュリティクラスターの場合は最高、標準クラスターの場合は最低

管理者のみが使用可能な高セキュリティクラスター

次の例では、共有レベルUSERを使用して、Kyuubiエンジンの管理方法を説明します。例では、[kyuubi.engine.share.level] パラメーターはUSERに設定されており、すべてのユーザーはLightweight Directory Access Protocol(LDAP)認証またはKerberos認証に合格しています。

  1. 必要に応じてKyuubiエンジンを起動します。

    user1という名前の新しいユーザーがSpark 3.xエンジンを使用する必要がある場合は、次のコマンドを実行します。 kyuubi-beelineを使用してジョブが送信されると、Kyuubiサーバーはジョブを処理するために新しいSpark 3.xエンジンを起動します。

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

    user2という名前の別の新しいユーザーがSpark 3.xエンジンによって使用されるリソースを設定する必要がある場合は、次のいずれかの方法を使用します。

    • 方法 1:Java Database Connectivity(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 3.xエンジンによって使用されるリソースを設定します。サンプルコード:

      # kyuubi-defatuls.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. 指定されたSpark 3.xエンジンにジョブを送信します。

    ジョブが完了した後、Kyuubiサーバーによって起動されたSpark 3.xエンジンは一定期間実行を継続します。他のジョブをエンジンに送信する場合、新しいYARNアプリケーションを起動せずにエンジンを直接再利用できます。これにより、ジョブまたはSQLクエリの パフォーマンスが向上します。一定期間内にジョブが送信されない場合、エンジンは自動的に実行状態を終了します。 Spark 3.xエンジンが実行を継続する期間は、[kyuubi.session.engine.idle.timeout] パラメーターによって指定されます。デフォルトでは、エンジンは再利用のために30分間待機します。期間を変更するには、Kyuubiサービスページの [kyuubi-defaults.conf] タブで、このパラメーターの値をPT30Mから別の値に変更できます。

    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 3.xエンジンを使用します。

    Kyuubiでは、Spark 3.xエンジンを複数のSparkセッションで使用できます。たとえば、user1という名前のユーザーが2つの端末から同時に2つのジョブを送信する場合、2つのジョブは計算に同じSpark 3.xエンジンを使用できます。エグゼキューターは、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

参照