Meilleures pratiques de Pool
Cet article explique ce que sont les pools et comment vous pouvez les configurer au mieux. Pour des informations sur la création d'un pool, consultez la référence de configuration du pool.
Si votre charge de travail prend en charge le calcul serverless, Databricks recommande d'utiliser le calcul serverless au lieu des pools pour tirer parti d'un compute évolutif et toujours disponible. Voir Se connecter au compute Serverless.
Considérations relatives au Pool
Considérez les éléments suivants lors de la création d'un pool :
- Créez des Pool à l’aide de types d’instances et de Databricks Runtime basés sur les charges de travail cibles.
- Lorsque cela est possible, remplissez les pools avec des instances spot pour réduire les coûts. Utilisez uniquement des Pool spot comme nœuds Worker. Votre nœud driver devrait utiliser des instances à la demande.
- Remplissez les pools avec des instances à la demande pour les jobs ayant des temps d'exécution courts et des exigences strictes en matière de temps d'exécution.
- Utilisez des tags de Pool et des Cluster Tag pour gérer la facturation.
- Pré-remplissez les Pools pour vous assurer que les instances sont disponibles lorsque les clusters en ont besoin.
Créez des Pools basés sur les charges de travail
Vous pouvez minimiser le temps d'acquisition des instances en créant un pool pour chaque type d'instance et Databricks Runtime que votre organisation utilise couramment. Par exemple, si la plupart des clusters de Data Engineering utilisent le type d'instance A, les clusters de Data Science utilisent le type d'instance B, et les clusters d'analytique utilisent le type d'instance C, créez un Pool avec chaque type d'instance.
Utilisation de pools d'instances spot
Si votre nœud Driver et vos nœuds Worker ont des exigences différentes, utilisez des Pools différents pour chacun.
Databricks vous recommande de ne pas utiliser d'instances spot pour votre nœud de driver. Si vous utilisez un Pool Spot pour votre nœud Worker, sélectionnez un Pool à la demande comme **type de Driver**.
Configurez les pools pour qu’ils utilisent des instances à la demande pour les Jobs avec des temps d’exécution courts et des exigences strictes en matière de temps d’exécution. Utilisez des instances à la demande pour éviter que les instances acquises ne soient perdues au profit d’un enchérisseur plus offrant sur le marché Spot.
Configurez les pools pour qu'ils utilisent des instances spot pour les clusters qui prennent en charge le développement interactif ou les jobs qui privilégient les économies de coûts plutôt que la fiabilité.
Taguer les Pool pour gérer les coûts et la facturation
Le taggage des pools au centre de coûts approprié vous permet de gérer la refacturation des coûts et de l'utilisation. Vous pouvez utiliser plusieurs tags personnalisés pour associer plusieurs centres de coûts à un pool. Il est toutefois important de comprendre comment les tags sont propagés lorsqu'un cluster est créé à partir de pools. Les tags des pools se propagent aux instances du fournisseur cloud sous-jacent, mais pas les tags du cluster. Appliquez tous les tags personnalisés requis pour gérer la refacturation du coût du compute du fournisseur cloud au pool.
Pool tags et Cluster tags se propagent tous deux à la facturation Databricks. Vous pouvez utiliser la combinaison de tags de cluster et de pool pour gérer la refacturation des unités Databricks.
Pour en savoir plus, consultez Utiliser des tags pour attribuer et suivre l'utilisation.
Configurez les Pools pour contrôler les coûts
Vous pouvez utiliser les options de configuration suivantes pour aider à contrôler le coût des pools :
- Définissez les instances Minimum d'instances inactives sur 0 pour éviter de payer pour les instances en cours d'exécution qui n'effectuent pas de travail. Le compromis est une augmentation possible du temps lorsqu’un cluster doit acquérir une nouvelle instance.
- Définissez la Capacité maximale en fonction de l'utilisation prévue. Ceci fixe le plafond pour le nombre maximal d'instances utilisées et inactives dans le pool. Si un Job ou un cluster demande une instance à un Pool ayant atteint sa capacité maximale, la requête échoue, et le cluster n'acquiert pas d'instances supplémentaires. Par conséquent, Databricks recommande de ne définir la capacité maximale que s'il existe un quota d'instances strict ou une contrainte budgétaire.
- Définissez l'heure d'arrêt automatique des instances inactives pour créer un tampon entre le moment où l'instance est libérée du cluster et le moment où elle est retirée du pool. Définissez cette période de manière à minimiser les coûts tout en garantissant la disponibilité des instances pour les jobs planifiés. Par exemple, le job A est programmé pour s'exécuter à 8 h 00 et prend 40 minutes pour se terminer. Le job B est programmé pour s'exécuter à 9 h 00 et prend 30 minutes pour se terminer. Définissez la valeur d'arrêt automatique des instances inactives sur 20 minutes pour vous assurer que les instances renvoyées au Pool une fois le Job A terminé sont disponibles lorsque le Job B start. À moins qu'elles ne soient revendiquées par un autre cluster, ces instances sont terminées 20 minutes après la fin du job B.
Pré-remplir les Pools
Pour bénéficier pleinement des pools, vous pouvez pré-remplir les pools nouvellement créés. Définissez le nombre d'instances Minimales inactives supérieur à zéro dans la configuration du pool. Autrement, si vous suivez la recommandation de définir cette valeur à zéro, utilisez un Job de démarrage pour vous assurer que les pools nouvellement créés ont des instances disponibles pour que les clusters puissent y accéder.
Avec l'approche de Job de démarrage, planifiez un Job avec des exigences de temps d'exécution flexibles à exécuter avant les Jobs ayant des exigences de performances plus strictes ou avant que les utilisateurs ne commencent à utiliser des clusters interactifs. Une fois le Job terminé, les instances utilisées pour le Job sont renvoyées au Pool. Définissez le paramètre d'instance Min Idle sur 0 et définissez le temps d' Arrêt automatique des instances inactives suffisamment élevé pour garantir que les instances inactives restent disponibles pour les Jobs ultérieurs.
L'utilisation d'un job de démarrage permet aux instances du pool de démarrer, de remplir le pool et de rester disponibles pour les jobs en aval ou les clusters interactifs.