Bewährte Methoden für Pools
In diesem Artikel wird erläutert, was Pools sind und wie Sie sie am besten konfigurieren. Informationen zum Erstellen eines Pools finden Sie unter Poolkonfigurationsreferenz.
Hinweis
Wenn Ihre Workload serverloses Computing unterstützt, empfiehlt Databricks die Verwendung von serverlosem Computing anstelle von Pools, um immer aktivierte, skalierbare Compute zu nutzen. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit serverlosem Compute.
Überlegungen zu Pools
Berücksichtigen Sie beim Erstellen eines Pools Folgendes:
- Erstellen von Pools mithilfe von Instanztypen Azure Databricks Runtimes, basierend auf Zielworkloads.
- Füllen Sie Pools nach Möglichkeit mit Spot-Instanzen auf, um Kosten zu senken. Verwenden Sie Spotpools nur als Workerknoten. Ihr Treiberknoten sollte On-Demand-Instanzen verwenden.
- Füllen Sie Pools mit bedarfsbasierten Instanzen für Aufträge mit kurzen Ausführungszeiten und strengen Ausführungszeitanforderungen auf.
- Verwenden Sie Pooltags und Clustertags, um die Abrechnung zu verwalten.
- Füllen Sie Pools vorab auf, um sicherzustellen, dass Instanzen verfügbar sind, wenn sie von Clustern benötigt werden.
Erstellen von Pools basierend auf Workloads
Sie können die Instanzbeschaffungszeit minimieren, indem Sie für jeden Instanztyp und jede Azure Databricks Runtime, die Ihre Organisation häufig verwendet, einen Pool erstellen. Wenn die meisten Datentechnikcluster beispielsweise Instanztyp A verwenden, Data Science-Cluster Instanztyp B und Analysecluster Instanztyp C, erstellen Sie einen Pool mit jedem Instanztyp.
Verwenden von Spotinstanzpools
Wenn Ihr Treiberknoten und die Workerknoten unterschiedliche Anforderungen haben, benutzen Sie jeweils einen anderen Pool.
Azure Databricks empfiehlt, keine Spotinstanzen für Ihren Treiberknoten zu verwenden. Wenn Sie einen Spotpool für Ihren Workerknoten verwenden, wählen Sie einen Bedarfspool als Treibertyp aus.
Konfigurieren Sie Pools für die Verwendung bedarfsbasierter Instanzen für Aufträge mit kurzen Ausführungszeiten und strengen Ausführungszeitanforderungen. Verwenden Sie bedarfsbasierte Instanzen, um zu verhindern, dass beschaffte Instanzen an einen höheren Bieter auf dem Spot-Markt verloren gehen.
Konfigurieren Sie Pools für die Verwendung von Spot-Instanzen für Cluster, die interaktive Entwicklung unterstützen, oder Aufträge, die Kosteneinsparungen gegenüber Zuverlässigkeit priorisieren.
Kennzeichnen von Pools zum Verwalten von Kosten und Abrechnung
Wenn Sie Pools mit der richtigen Kostenstelle kennzeichnen, können Sie die Kosten- und Nutzungsrückbuchung verwalten. Sie können mehrere benutzerdefinierte Tags verwenden, um einem Pool mehrere Kostenstellen zu zuordnen. Es ist jedoch wichtig zu verstehen, wie Tags beim Erstellen eines Clusters aus Pools weitergegeben werden. Tags aus Pools werden an die zugrunde liegenden Cloudanbieterinstanzen weitergegeben, die Tags des Clusters jedoch nicht. Wenden Sie alle benutzerdefinierten Tags an, die zum Verwalten der Rückbuchung der Computekosten des Cloudanbieters auf den Pool erforderlich sind.
Sowohl Pooltags als auch Clustertags werden an die Azure Databricks-Abrechnung weitergegeben. Sie können die Kombination aus Cluster- und Pooltags verwenden, um die Rückbuchung von Azure Databricks-Einheiten zu verwalten.
Weitere Informationen finden Sie unter Attributverwendung mithilfe von Tags.
Konfigurieren von Pools zur Kostenkontrolle
Sie können die folgenden Konfigurationsoptionen verwenden, um die Kosten für Pools zu steuern:
- Legen Sie die Min Idle Instanzen auf 0 fest, um zu vermeiden, für laufende Instanzen zu bezahlen, die keine Arbeit verrichten. Im Gegenzug kann es dabei zu einem Zeitanstieg kommen, wenn ein Cluster eine neue Instanz beschaffen muss.
- Legen Sie die Max Capacity basierend auf der erwarteten Nutzung fest. Dadurch wird die Obergrenze für die maximale Anzahl verwendeter Instanzen und Instanzen im Leerlauf im Pool festgelegt. Wenn ein Auftrag oder Cluster eine Instanz von einem Pool mit maximaler Kapazität anfordert, schlägt die Anforderung fehl, und der Cluster erhält keine weiteren Instanzen. Daher empfiehlt Databricks, die maximale Kapazität nur festzulegen, wenn ein striktes Instanzenkontingent oder eine Budgeteinschränkung vorhanden ist.
- Legen Sie die Idle Instance Auto Termination-Zeit (Automatische Beendigung von Leerlaufinstanzen) fest, um einen Puffer zwischen dem Freigabezeitpunkt der Instanz aus dem Cluster und dem Zeitpunkt, zu dem sie aus dem Pool gelöscht wird, zur Verfügung zu stellen. Legen Sie dies auf einen Zeitraum fest, mit dem Sie Kosten minimieren und gleichzeitig die Verfügbarkeit von Instanzen für geplante Aufträge sicherstellen können. Der Auftrag A ist beispielsweise für die Ausführung um 8:00 Uhr geplant und dauert 40 Minuten. Auftrag B ist für die Ausführung um 9:00 Uhr geplant und dauert 30 Minuten. Legen Sie den Wert für die automatische Beendigung der Leerlaufinstanz auf 20 Minuten fest, um sicherzustellen, dass Instanzen, die an den Pool zurückgegeben werden, wenn Auftrag A abgeschlossen ist, verfügbar sind, wenn Auftrag B gestartet wird. Diese Instanzen werden, sofern sie nicht von einem anderen Cluster beansprucht werden, 20 Minuten nach dem Ende von Auftrag B beendet.
Vorabauffüllen von Pools
Um in vollem Umfang von Pools zu profitieren, können Sie neu erstellte Pools vorab auffüllen. Legen Sie Min Idle-Instanzen in der Poolkonfiguration auf einen Wert größer als 0 fest. Alternativ können Sie, wenn Sie die Empfehlung zum Festlegen dieses Werts auf 0 befolgen, einen Startauftrag verwenden, um sicherzustellen, dass neu erstellte Pools über verfügbare Instanzen verfügen, auf die Cluster zugreifen können.
Planen Sie bei Verwendung eines Startauftrags einen Auftrag mit flexiblen Ausführungszeitanforderungen, der ausgeführt wird, bevor Aufträge mit strengeren Leistungsanforderungen ausgeführt werden bzw. bevor Benutzer mit der Verwendung interaktiver Cluster beginnen. Nach Abschluss des Auftrags werden die für den Auftrag verwendeten Instanzen wieder an den Pool freigegeben. Legen Sie Einstellung für Min Idle-Instanz (Min. Leerlauf) auf 0 fest, und legen Sie die Idle Instance Auto Termination-Zeit (Automatische Beendigung von Leerlaufinstanzen) auf einen so hohen Wert fest, dass sichergestellt ist, dass Instanzen im Leerlauf für nachfolgende Aufträge verfügbar bleiben.
Mithilfe eines Startauftrags können die Poolinstanzen starten, den Pool auffüllen und für Downstreamaufträge oder interaktive Cluster verfügbar bleiben.