Mise à l’échelle horizontale pour les applications Databricks

Important

Cette fonctionnalité est en version bêta. Pour demander l’accès, contactez votre représentant Azure Databricks. Une fois la fonctionnalité activée, les administrateurs de l’espace de travail peuvent contrôler l’accès à celui-ci à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Cette page explique comment exécuter une application Databricks sur plusieurs instances derrière une URL d’application unique pour une disponibilité et une concurrence plus élevées.

La mise à l’échelle horizontale répartit les requêtes entre les instances, de sorte qu’une seule défaillance ou un redémarrage de l’instance ne met pas l’application hors connexion. Le coût de calcul augmente linéairement avec le nombre d’instances.

Les avantages supplémentaires sont les suivants :

  • Affinité de session : chaque requête provenant d’un même utilisateur est dirigée, dans la mesure du possible, vers la même instance, afin qu’une application puisse y conserver des données temporaires propres à cet utilisateur (par exemple, un cache en mémoire). Également appelées sessions persistantes. Consultez l’affinité de session.
  • Déploiements avec temps d’arrêt zéro : Azure Databricks déploie un nouveau déploiement sur une instance de build en premier et met à jour uniquement les instances restantes une fois cette instance de build réussie. Les instances existantes continuent à traiter le trafic pendant toute l’opération.
  • Stable build caches : Azure Databricks préserve les artefacts de déploiement entre les mises à jour de calcul (par exemple, lorsque vous modifiez la taille ou le nombre d'instances), afin que l'application ne nécessite pas de reconstruction complète.

Spécifications

Les exigences suivantes s’appliquent à toutes les applications mises à l’échelle horizontalement :

  • Pendant la période bêta, votre application doit écouter sur 0.0.0.0 (et non sur 127.0.0.1 ou localhost).

Créer une application mise à l’échelle horizontale

Pour créer une application avec la mise à l’échelle horizontale activée :

  1. Dans votre espace de travail Azure Databricks, cliquez sur le commutateur d’application App icon. et sélectionnez Databricks Apps.
  2. Cliquez sur + Créer une application, puis sur Créer une application personnalisée.
  3. Entrez un nom et configurez l’application comme décrit dans Créer une application Databricks personnalisée.
  4. Dans l’étape Configurer , sélectionnez Activer la mise à l’échelle horizontale.
  5. Spécifiez le nombre d’instances (1 à 5). Azure Databricks recommande au moins 2 instances pour la disponibilité.
  6. Cliquez sur Créer une application.

L’activation de la mise à l’échelle horizontale pour une application n’affecte aucune autre application dans l’espace de travail.

Les applications nouvellement créées à l'échelle horizontale n'incluent pas les bibliothèques Python préinstallées. Déclarez toutes les dépendances dans requirements.txt ou pyproject.toml. Consultez Gérer les dépendances pour une application Databricks.

Convertir une application standard pour utiliser la mise à l’échelle horizontale

Convertissez une application standard existante en application mise à l’échelle horizontalement à partir de l’onglet Paramètres . La conversion n’introduit aucun temps d’arrêt. Votre application standard existante continue de servir le trafic jusqu’à ce que le nouveau déploiement mis à l’échelle horizontale passe les vérifications d’intégrité, à quel point Azure Databricks coupe le trafic.

La conversion est réversible. Vous pouvez convertir une application mise à l’échelle horizontale vers une application standard à partir du même onglet Paramètres .

Comportement de conversion

Le comportement suivant s’applique au moment de la conversion :

Tester la conversion

La conversion modifie l’image d’exécution et le modèle de mise à l’échelle de votre application. Avant de convertir une application de production, vérifiez la modification sur une copie :

  1. Créez un doublon de l’application standard que vous souhaitez convertir.
  2. Convertissez le doublon en procédant comme suit.
  3. Vérifiez que l’application fonctionne comme prévu sur le doublon converti. Vérifiez les journaux, le trafic et tout comportement lié à l’affinité de session.
  4. Convertissez l’application de production après validation.

Convertir une application standard

Pour convertir une application standard en application à mise à l’échelle horizontale :

  1. Dans votre espace de travail Azure Databricks, cliquez sur le commutateur d’application App icon. et sélectionnez Databricks Apps.
  2. Cliquez sur le nom de l’application à convertir.
  3. Cliquez sur l'onglet Paramètres .
  4. Sous Calcul, sélectionnez Activer la mise à l’échelle horizontale. Azure Databricks définit le nombre d’instances sur 1, ce qui est nécessaire au moment de la conversion.
  5. Cliquez sur Enregistrer.

Azure Databricks provisionne de nouvelles ressources de calcul mises à l’échelle horizontalement, puis y redéploie votre application. Le temps total dépend de la durée de génération de votre application. L’application existante continue à traiter le trafic tout au long du processus.

Une fois la conversion terminée, vous pouvez effectuer un scale-up ou désactiver les bibliothèques préinstallées.

Gérer le nombre d’instances

Pour modifier le nombre d’instances d’une application mise à l’échelle horizontale :

  1. Dans la page des détails de l’application, cliquez sur Modifier.
  2. À l’étape Configurer , mettez à jour le nombre d’instances.
  3. Cliquez sur Enregistrer.

L’application continue de traiter le trafic pendant que Azure Databricks applique la modification.

Affinité de session

L’affinité de session achemine chaque requête du même utilisateur vers la même instance dans la mesure du possible. Une application peut utiliser ce routage pour conserver des données par utilisateur de courte durée (par exemple, un cache en mémoire ou des fichiers temporaires sur le système de fichiers local) sur l’instance qui gère la session de cet utilisateur. L’affinité de session est également connue sous le terme de « sessions permanentes ».

L’affinité de session est assurée dans la mesure du possible. Ne stockez rien dans un état local d’instance que vous ne pouvez pas reconstruire ou récupérer à partir d’un magasin durable. Conservez toutes les données qui doivent persister au-delà d’une session dans un stockage persistant tel que les tables Unity Catalog.

Vous pouvez également conserver des données avec Lakebase.

Applications basées sur un navigateur

L’affinité de session fonctionne automatiquement pour les applications basées sur un navigateur. La première requête d’un navigateur achemine vers une instance sélectionnée de façon aléatoire, qui définit le __Host-databricks-app-router cookie. Les requêtes suivantes avec ce cookie sont acheminées vers la même instance.

Clients d’API

Pour obtenir l’affinité de session pour les clients d’API, incluez le __Host-databricks-app-router cookie dans chaque requête et définissez-le sur un UUID généré de manière aléatoire. Toutes les requêtes ayant la même valeur de cookie sont acheminées vers la même instance.

curl -X GET https://<your-app>.aws.databricksapps.com/api/endpoint \
  -H "Authorization: Bearer YOUR_BEARER_TOKEN" \
  -b "__Host-databricks-app-router=f8822466-3b1e-423a-988b-54c9e639c250"

Réaffectation de session

Les sessions peuvent passer à une autre instance dans les cas suivants :

  • Une instance devient indisponible (par exemple, pendant le déploiement ou un incident).
  • Vous modifiez le nombre d’instances.
  • Azure Databricks rééquilibre les sessions entre les instances.
  • Une demande individuelle est mal redirigée (rare).

Limitations

Les limitations suivantes s’appliquent aux applications mises à l’échelle horizontalement :

  • Chaque espace de travail peut avoir au maximum 5 applications mises à l’échelle horizontalement. Contactez votre représentant Azure Databricks pour augmenter cette limite.
  • Chaque application mise à l’échelle horizontale peut avoir au maximum 5 instances. Contactez votre représentant Azure Databricks pour augmenter cette limite.
  • L’onglet Journaux affiche les journaux d’une seule instance à la fois. Pour afficher les journaux d’activité sur toutes les instances, activez la télémétrie des applications.