Tous les produits
Search
Centre de documentation

E-MapReduce:Gérer les moteurs Kyuubi

Dernière mise à jour :Aug 09, 2026

Kyuubi prend en charge plusieurs niveaux de partage qui déterminent l'allocation des moteurs Spark entre les sessions, les utilisateurs et les groupes.

Moteurs pris en charge

L'installation de Kyuubi dans un cluster E-MapReduce inclut également YARN et Spark 3 en tant que dépendances. Kyuubi sur E-MapReduce prend uniquement en charge Spark 3 sur YARN. Flink, Trino et Spark 2 ne sont pas pris en charge. Chaque moteur Spark correspond à une application Spark unique sur YARN. Pour plus d'informations, consultez la section Exemples.

Niveaux de partage

Pour définir le niveau de partage d'un moteur, configurez le paramètre kyuubi.engine.share.level dans l'onglet kyuubi-defaults.conf de la page de configuration du service Kyuubi.

Niveau de partage

Description

Cas d'utilisation

Degré d'isolation

Capacité de partage

CONNECTION

Un moteur est lancé par session.

  • Opérations ETL (Extract, Transform, Load) à grande échelle

  • Requêtes ad hoc

Élevé

Faible

USER

Un moteur par utilisateur.

Moyen

Moyen

GROUP

Un moteur par groupe de ressources.

Faible

Élevé

SERVER

Un moteur par cluster.

Administrateurs

Le plus élevé pour un cluster à haute sécurité, et le plus faible pour un cluster standard.

Les clusters à haute sécurité sont réservés aux administrateurs.

Exemples

Les exemples suivants utilisent le niveau de partage USER (paramètre kyuubi.engine.share.level défini sur USER) et supposent que tous les utilisateurs sont authentifiés via LDAP (Lightweight Directory Access Protocol) ou Kerberos.

  1. Lancer un moteur à la demande

    Lorsqu'un nouvel utilisateur, user1, soumet une tâche à l'aide de l'outil kyuubi-beeline, le serveur Kyuubi lance un nouveau moteur Spark pour la traiter.

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

    Si un autre utilisateur, user2, doit spécifier des ressources pour le moteur Spark, il peut utiliser l'une des méthodes suivantes :

    • Méthode 1 : Définissez les ressources, telles que les exécuteurs de l'application Spark, dans l'URL JDBC.

      # Set User config via JDBC Connection 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
    • Méthode 2 : Définissez les ressources du moteur Spark dans le fichier de configuration kyuubi-defaults.conf.

      # Set User default config in 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. Soumettre des tâches à un moteur spécifique

    Une fois une tâche terminée, le moteur Spark lancé par Kyuubi reste actif pendant une période configurable. De nouvelles tâches peuvent réutiliser ce moteur inactif, ce qui améliore les performances en évitant le lancement d'une nouvelle application YARN. Si aucune nouvelle tâche n'est soumise durant cette période, le moteur s'arrête automatiquement. Le paramètre kyuubi.session.engine.idle.timeout spécifie le délai d'inactivité, qui est par défaut de PT30M (30 minutes). Configurez ce paramètre dans l'onglet kyuubi-defaults.conf.

    Kyuubi permet de créer des sous-domaines au sein du même niveau de partage. Par exemple, si un utilisateur, user4, a besoin de ressources de moteur différentes pour divers scénarios métier, il peut définir le paramètre kyuubi.engine.share.level.subdomain dans l'URL JDBC afin de soumettre des tâches à différents moteurs.

    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. Un seul moteur prend en charge plusieurs sessions Spark

    Plusieurs sessions Spark peuvent utiliser simultanément un seul moteur Spark. Par exemple, si un utilisateur, user1, soumet deux tâches depuis deux terminaux différents en même temps, les deux tâches s'exécutent sur le même moteur Spark. Spark alloue les ressources des exécuteurs aux tâches selon son mécanisme de planification interne par défaut.

    # Console 1
    kyuubi-beeline -n user1 \
      -u "jdbc:hive2://master-1-1:10009/biz1" \
      -f query1.sql
    
    # Console 2
    kyuubi-beeline -n user1 \
      -u "jdbc:hive2://master-1-1:10009/biz2" \
      -f query2.sql

Références