Microsoft HDInsight Autoscaling leicht gemacht
In der heutigen Ära des Cloud-Computings ist es für Unternehmen von entscheidender Bedeutung, ihre Infrastruktur effizient und kostengünstig zu verwalten. Besonders bei der Verarbeitung großer Datenmengen, wie es bei Microsoft HDInsight der Fall ist, spielt das automatische Skalieren eine zentrale Rolle. In diesem Blogbeitrag zeigen wir, wie sich Autoscaling mit Terraform effektiv managen lässt und wie gut es bei HDInsight funktioniert.
Was ist HDInsight?
HDInsight ist ein cloudbasierter Big-Data-Analytics-Dienst von Microsoft Azure, der auf Apache Hadoop basiert. Er ermöglicht Unternehmen die Verarbeitung, Analyse und Speicherung großer Datenmengen mithilfe von Open-Source-Technologien wie Hadoop, Spark, Hive, HBase, Storm und Kafka.
Was ist Autoscaling in HDInsight?
Autoscaling in Microsoft HDInsight ist ein kostenloses Feature, welches es ermöglicht, die Clustergröße automatisch an die aktuelle Last und die Anforderungen der Workloads anzupassen. Diese Funktion ist besonders nützlich in dynamischen Umgebungen, in denen die Nachfrage nach Rechenleistung stark schwankt. Autoscaling gibt es seit Mai 2019 mit der HDInsight Version 4.0.
Autoscaling in HDInsight ist für verschiedene Clusterarten verfügbar, darunter Spark-, Hadoop- und Interactive Query-Cluster. Diese Funktion unterstützt jedoch keine Kafka-Cluster, da dort die Workerknoten als Broker fungieren und Skalierungen somit zu Inkonsistenzen in der Partitionierung und Datenverteilung führen können.
Besonders spannend beim Autoscaling ist, dass immer genügend CPU-Quotas (Kernkontingent) zur Verfügung stehen müssen. Wenn diese nicht ausreichen, funktioniert das Autoscaling nicht.
Arten von Skalierung in HDInsight
Es gibt zwei Hauptarten der Skalierung in HDInsight:
1. Zeitbasierte Skalierung
Zeitbasierte Skalierung eignet sich für Umgebungen mit vorhersehbaren Schwankungen, in denen zu bestimmten Zeiten des Tages oder der Woche eine geringe Auslastung erwartet wird. Ein typisches Beispiel hierfür sind Test- und Entwicklungsumgebungen, die nach Büroschluss eine geringere Auslastung aufweisen. In diesen Fällen kann die Skalierung nach einem festen Zeitplan erfolgen, wodurch Ressourcen nur dann bereitgestellt werden, wenn sie benötigt werden. Die Skalierung kann bis zu 10–20 Minuten dauern. Bei der Verwendung von benutzerdefinierten Skriptaktionen kann sich der Skalierungsprozess weiter verzögern, da zusätzliche Konfigurations- oder Installationsschritte ausgeführt werden müssen, bevor die neuen Ressourcen vollständig einsatzbereit sind.
2. Lastbasierte Skalierung
Die lastbasierte Autoskalierung überwacht kontinuierlich die Cluster-Performance und passt die Clustergröße basierend auf definierten Schwellenwerten für Leistungsmetriken wie CPU und Arbeitsspeicher an. Diese Art der Skalierung ist nützlich, wenn die Auslastungsmuster stark schwanken, wie es beispielsweise bei Datenverarbeitungsaufträgen der Fall ist.
Ein Beispiel: Bei anhaltend hoher CPU-Auslastung über einen definierten Zeitraum wird automatisch zusätzliche Kapazität hinzugefügt, um die Systemleistung zu stabilisieren. Wird die „CPU insgesamt für ausstehende" Last über 3-5 Minuten größer als die freie CPU-Leistung, wird eine Skalierungsanforderung ausgelöst, um neue Workerknoten hinzuzufügen.
Recommissioning von Knoten
Ein weiteres Feature ist das „Recommissioning von Knoten" vor der Skalierung. Bevor neue Knoten hinzugefügt werden, können Knoten, die sich im Zustand der Deaktivierung befinden, wieder in Betrieb genommen werden, um die erhöhte Last zu teilen. Dies reduziert die Zeit, die benötigt wird, um neue Kapazitäten bereitzustellen.
Integration von Autoscaling in Terraform
Terraform ermöglicht es, die Autoscaling-Funktion in Microsoft HDInsight einfach zu konfigurieren, in einem deklarativen Stil zu definieren und nahtlos in die Verwaltung der Infrastruktur zu integrieren. Durch das Hinzufügen der richtigen Konfiguration können Sie sicherstellen, dass Cluster automatisch skaliert werden, je nach Bedarf und Workload.
Hier zwei Beispiele, wie Autoscaling in Terraform für HDInsight eingerichtet wird:
worker_node { vm_size = "Standard_E2_V3" username = var.user_name password = var.password_role target_instance_count = 1 autoscale { capacity { min_instance_count = 5 max_instance_count = 10 } } }
In diesem Beispiel für lastbasierte Skalierung wird die Skalierung für die Workernodes auf einen minimalen Wert von 5 und einen maximalen Wert von 10 konfiguriert. So wird sichergestellt, dass der Cluster automatisch skaliert, wenn zusätzliche Ressourcen benötigt werden.
worker_node { vm_size = "Standard_E2_V3" username = var.user_name password = var.password_role target_instance_count = 1 autoscale { recurrence { timezone = "UTC" schedule { days = ["Monday"] time = "09:00" target_instance_count = 10 } schedule { days = ["Friday"] time = "11:30" target_instance_count = 5 } } } }
In diesem Beispiel für zeitbasierte Skalierung wird die Anzahl der Workerknoten jeden Montag um 9 Uhr UTC auf 10 gesetzt. Jeden Freitag um 11.30 Uhr wird auf 5 Workerknoten herunterskaliert.
Benutzerdefinierte Skriptaktionen: Das Salz in der Suppe?
In vielen Fällen werden benutzerdefinierte Skriptaktionen verwendet, um zusätzliche Bibliotheken oder Tools auf den Knoten zu installieren, bevor diese für die Workloads verwendet werden. Bei der Integration von Autoscaling in HDInsight wird sichergestellt, dass benutzerdefinierte Skriptaktionen auch bei einer Skalierung ausgeführt werden, wenn neue Knoten dem Cluster hinzugefügt werden.
Dies kann den Skalierungsprozess verlangsamen, da die Skripte mit anderen Setup- und Konfigurationsprozessen konkurrieren. Daher wird empfohlen, die Skriptaktionen zu optimieren, um die Skalierungslatenz zu minimieren.
Best Practices und Empfehlungen
- Puffer einplanen: Es sollte ein zusätzlicher Puffer von 10 % eingeplant werden, um unerwartete Schwankungen in der Arbeitslast abzufangen.
- Vermeidung zu aggressiver Skalierung: Die maximale Anzahl von Knoten sollte nicht über 200 betragen, um die Effizienz der Skalierung zu gewährleisten.
- Um eine zu geringe Skalierung zu vermeiden, sollte die minimale Anzahl von Knoten nicht unter 3 betragen. Andernfalls kann das Cluster aufgrund unzureichender Dateireplikation im abgesicherten Modus hängen bleiben.
- Zeitplanbasierte Skalierung optimieren: Die Zeitpläne müssen korrekt konfiguriert sein, um Ressourcen nur dann zu nutzen, wenn sie wirklich benötigt werden.
Fazit
Die Autoscaling-Funktion von Microsoft HDInsight in Terraform ermöglicht eine effiziente Skalierung von HDInsight-Clustern. Durch zeit- und lastbasierte Skalierung werden Ressourcen optimal verwaltet und die Leistung gesteigert. Terraform bietet eine einfache und automatisierte Verwaltung.
Nutzt HDInsight Autoscaling mit Terraform, um eure Cloud-Ressourcen zu maximieren, Betriebskosten zu senken und Big-Data-Workloads zu optimieren. Startet noch heute und profitiert von einer leistungsstarken, skalierbaren Infrastruktur.
Ihr habt Fragen oder benötigt Unterstützung bei der Implementierung? Kein Problem! Kontaktiert uns, wir helfen gerne weiter.
Seminarempfehlung
TERRAFORM ESSENTIALS TERRA-01
Mehr erfahrenJunior Consultant
Kommentare