Aller au contenu principal

Mise à l'échelle horizontale pour les applications Databricks

info

Bêta

Cette fonctionnalité est en Bêta. Pour demander l'accès, contactez votre représentant Databricks. Une fois la fonctionnalité activée, les administrateurs du Workspace peuvent contrôler son accès à partir de la page Aperçus . Consultez Gérer les aperçus Databricks.

Cette page décrit comment exécuter une application Databricks sur plusieurs instances derrière une seule URL d'application pour une meilleure disponibilité et concurrence.

La mise à l'échelle horizontale distribue les requêtes entre les instances, de sorte qu'une seule défaillance ou un seul redémarrage d'instance ne met pas l'application hors ligne. Le coût du compute s'adapte de façon linéaire avec le nombre d'instances.

Les avantages supplémentaires incluent :

  • Affinité de session : chaque requête du même utilisateur est acheminée vers la même instance sur la base du meilleur effort, afin qu'une application puisse conserver les données temporaires par utilisateur (par exemple, un cache en mémoire) sur cette instance. Également connu sous le nom de sessions persistantes. Voir Affinité de session.
  • Déploiements sans interruption de service : Databricks déploie d’abord une nouvelle version sur une instance de build, puis met à jour les instances restantes uniquement après la réussite de cette instance de build. Les instances existantes continuent de servir le trafic tout au long du processus.
  • Caches de build stables : Databricks préserve les artefacts de déploiement lors des mises à jour du compute (par exemple, lorsque vous modifiez la taille ou le nombre d’instances), de sorte que l’application ne nécessite pas une reconstruction complète.

Exigences

Les exigences suivantes s'appliquent à toutes les applications à mise à l'échelle horizontale :

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

Créez une application à mise à l'échelle horizontale

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

  1. Dans votre Workspace Databricks, cliquez sur le Icône d'application. sélecteur d'applications et sélectionnez **Databricks Apps**.
  2. Cliquez sur + Créer une application , puis cliquez sur Créer une application personnalisée .
  3. Saisissez un nom et configurez l'application comme décrit dans Créer une application Databricks personnalisée.
  4. À l'étape **Configurer**, sélectionnez **Activer la mise à l'échelle horizontale**.
  5. Spécifiez le Nombre d'instances (de 1 à 5). 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 le workspace.

Les applications nouvellement créées et mises à l'échelle horizontalement n'incluent pas les bibliothèques Python préinstallées. Déclarez toutes les dépendances dans requirements.txt ou pyproject.toml. Voir 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 à l'échelle horizontale à partir de la tab Settings. La conversion n'entraîne aucun temps d'arrêt. Votre application standard existante continue de servir le trafic jusqu'à ce que le nouveau déploiement à échelle horizontale réussisse les contrôles d'intégrité, moment auquel Databricks bascule le trafic.

La conversion est réversible. Vous pouvez reconvertir une application à mise à l'échelle horizontale en application standard à partir du même onglet tab .

Comportement de conversion

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

Testez 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, validez la modification sur un doublon :

  1. Créez un duplicata de l'application standard que vous souhaitez convertir.
  2. Convertissez le duplicata en suivant les étapes suivantes.
  3. Vérifiez que l'application fonctionne comme prévu sur le doublon converti. Vérifiez les Logs, le trafic et tout comportement d'affinité de session.
  4. Convertissez l'application de production après validation.

Convertir une application standard

Pour convertir une application standard à l'échelle horizontale :

  1. Dans votre Workspace Databricks, cliquez sur le Icône d'application. sélecteur d'applications et sélectionnez **Databricks Apps**.
  2. Cliquez sur le nom de l'application que vous souhaitez convertir.
  3. Cliquez sur l'onglet Settings tab .
  4. Sous **Compute**, sélectionnez **Activer la mise à l'échelle horizontale**. Databricks définit le nombre d'instances à 1 , ce qui est requis au moment de la conversion.
  5. Cliquez sur Enregistrer .

Databricks lance de nouvelles compute à mise à l’échelle horizontale, puis y redéploie votre application. Le temps total dépend de la durée de compilation de votre application. L'application existante continue de gérer le trafic tout au long.

Une fois la conversion terminée, vous pouvez Monter en charge ou refuser 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. Sur la page de 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 Databricks applique la modification.

Affinité de session

L’affinité de session achemine chaque requête du même utilisateur vers la même instance lorsque cela est possible. Une application peut utiliser ce routage pour conserver les données de courte durée par utilisateur (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 nom de sessions persistantes.

L'affinité de session est fournie dans la mesure du possible. Ne stockez rien dans l'état local de l'instance que vous ne pouvez pas reconstruire ou récupérer à partir d'un stockage durable. Conservez toutes les données qui doivent survivre à une session dans un stockage durable, tel que les tables Unity Catalog.

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

Applications basées sur le navigateur

L'affinité de session fonctionne automatiquement pour les applications basées sur un navigateur. La première requête à partir d'un navigateur est acheminée vers une instance sélectionnée aléatoirement, qui définit le cookie __Host-databricks-app-router. Les requêtes ultérieures avec ce cookie sont acheminées vers la même instance.

Clients API

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

Bash
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 instance différente dans les cas suivants :

  • Une instance devient indisponible (par exemple, pendant le déploiement ou un blocage).
  • Vous modifiez le nombre d'instances.
  • Databricks rééquilibre les sessions entre les instances.
  • Une requête individuelle est mal acheminée (rare).

Limitations

Les limitations suivantes s'appliquent aux applications mises à l'échelle horizontale :

  • Chaque Workspace peut avoir au maximum 5 applications mises à l'échelle horizontale. Contactez votre représentant Databricks pour augmenter cette limite.
  • Chaque application mise à l'échelle horizontalement peut avoir au maximum 5 instances. Contactez votre représentant Databricks pour augmenter cette limite.
  • L'onglet Logs affiche les logs d'une seule instance à la fois. Pour afficher les logs de toutes les instances, activez la télémétrie de l'application.