Gründe für die Verwendung von AWS Batch
In AWS Batch verpacken Sie Ihren Code für Batch-Aufträge, geben deren Abhängigkeiten an und übertragen die Batch-Aufträge dann über die AWS-Managementkonsole bzw. über CLIs oder SDKs. Sobald Sie Ausführungsparameter und Auftragsabhängigkeiten angegeben haben, erleichtert AWS Batch die Integration mit einer Vielzahl gängiger Workflow-Engines und Sprachen für die Batch-Datenverarbeitung (z. B. Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow und AWS Step Functions). AWS Batch stellt Datenverarbeitungsressourcen von Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS) und AWS Fargate effizient und dynamisch bereit und skaliert sie, mit der Option, On-Demand- oder Spot-Instances je nach Ihren Auftragsanforderungen zu verwenden. AWS Batch bietet standardmäßige Auftragswarteschlangen und Definitionen der Datenverarbeitungsumgebung, die Ihnen den Start erleichtern.
Auftragsdefinitionen
Aufträge mit mehreren Containern
Aufträge mit mehreren Containern ist ein Feature, das es einfacher und schneller macht, Simulationen in großem Maßstab durchzuführen, wenn komplexe Systeme, wie sie in autonomen Fahrzeugen und Robotik verwendet werden, getestet werden. Da Sie mehrere Container in einem Auftrag ausführen können, können Sie von den erweiterten Skalierungs-, Planungs- und Kostenoptimierungsfunktionen von AWS Batch profitieren, ohne Ihr System in einen komplexen monolithischen Container umbauen zu müssen. Stattdessen können Sie die Verwendung mehrerer kleinerer, modularer Container beibehalten, die jeweils unterschiedliche Systemkomponenten wie eine virtuelle 3D-Umgebung, Roboterwahrnehmungssensoren oder ein Sidecar mit Datenprotokollierung darstellen. Aufträge mit mehreren Containern beschleunigen die Entwicklungszeiten, indem sie die Schritte zur Auftragsvorbereitung reduzieren und die Notwendigkeit, zusätzliche interne Tools zu entwickeln, überflüssig machen. Die Ausführung von Simulationsaufträgen mit mehreren Containern vereinfacht auch die Softwareentwicklung (Dev) und den IT-Betrieb (Ops), indem die Verantwortung für die Komponenten definiert wird, sodass verschiedene Teams Fehler in der Komponente ihres Teams finden und beheben können, ohne von den Komponenten anderer Teams abgelenkt zu werden.
Unterstützung für eng gekoppelte HPC-Workloads
AWS Batch unterstützt parallele Aufträge mit mehreren Knoten, sodass Sie einzelne Aufträge ausführen können, die sich über mehrere EC2-Instances erstrecken. Mit diesem Feature können Sie AWS Batch verwenden, um Workloads wie umfangreiche, eng gekoppelte HPC-Anwendungen (High Performance Computing) oder das Training verteilter GPU-Modelle effizient auszuführen. AWS Batch unterstützt auch Elastic Fabric Adapter, eine Netzwerkschnittstelle, über die Sie Anwendungen in AWS ausführen können, die ein hohes Maß an Kommunikation zwischen Knoten in großem Umfang erfordern.
Differenzierte Auftragsdefinitionen und einfache Modellierung von Auftragsabhängigkeiten
In AWS Batch können Sie Ressourcenanforderungen wie vCPU und Arbeitsspeicher, AWS Identity and Access Management (IAM)-Rollen, Volume-Mountpunkte, Container-Eigenschaften und Umgebungsvariablen angeben, mit denen Sie festlegen, wie die Aufträge ausgeführt werden. AWS Batch führt Ihre Aufträge als containerisierte Anwendungen in Amazon ECS aus. Sie können auch Abhängigkeiten zwischen verschiedenen Aufträgen definieren. Ihr Batch-Auftrag kann beispielsweise aus drei Verarbeitungsphasen mit unterschiedlichen Ressourcenanforderungen bestehen. Wenn Sie Abhängigkeiten verwenden, können Sie drei Aufträge mit unterschiedlichen Ressourcenanforderungen erstellen und jeden nachfolgenden Auftrag vom vorherigen abhängig machen.
Integrationen
Unterstützung gängiger Workflow-Engines
AWS Batch kann in kommerzielle und Open-Source-Workflow-Engines wie Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow und AWS Step Functions integriert werden, damit Sie Ihre Batch-Datenverarbeitungs-Pipelines in Ihnen vertrauten Workflow-Sprachen modellieren können.
Integration in EC2-Startvorlagen
AWS Batch unterstützt jetzt EC2-Startvorlagen, sodass Sie benutzerdefinierte Vorlagen für Ihre Datenverarbeitungsressourcen erstellen können, während Batch die Instances skaliert, damit sie Ihren Anforderungen entsprechen. Legen Sie Ihre EC2-Startvorlage fest, um Speicher-Volumes hinzuzufügen, Netzwerkschnittstellen anzugeben oder Berechtigungen zu konfigurieren, neben vielen weiteren Funktionen. Mit EC2-Startvorlagen können Sie in nur wenigen Schritten Batch-Umgebungen erstellen, indem Sie alle Startparameter in einer Ressource erfassen.
Integrierte Überwachung und Protokollierung
AWS Batch zeigt die wichtigsten Betriebsmetriken Ihrer Batch-Aufträge in der AWS-Managementkonsole an. Sie können Metriken zur Datenverarbeitungskapazität sowie Metriken für laufende, ausstehende und abgeschlossene Aufträge anzeigen. Ihre Auftragsprotokolle (z. B. STDERR und STDOUT) sind über die Konsole verfügbar und werden auch in die Amazon CloudWatch Logs geschrieben.
Differenzierte Zugriffskontrolle
AWS Batch verwendet IAM zur Kontrolle und Überwachung der AWS-Ressourcen (z. B. Amazon DynamoDB-Tabellen), auf die Ihre Aufträge zugreifen können. In IAM können Sie auch Richtlinien für die unterschiedlichen Benutzer Ihrer Organisation definieren. Administratoren können Sie beispielsweise vollständigen Zugriff auf alle API-Operationen von AWS Batch erteilen, während Entwickler nur eingeschränkte Berechtigungen für die Konfiguration der Datenverarbeitungsumgebungen und die Registrierung von Aufträgen erhalten und Endbenutzer eventuell sogar nur die Berechtigung zum Einreichen und Löschen von Aufträgen.
Datenverarbeitungsumgebungen
AWS Batch in Amazon EKS
AWS Batch kann Ihre Batch-Aufträge in Ihren vorhandenen Amazon-EKS-Clustern ausführen. Sie geben die vCPU-, Speicher- und GPU-Anforderungen an, die Ihre Container benötigen, und senden sie dann an eine Warteschlange, die an eine EKS-Cluster-fähige Datenverarbeitungsumgebung angehängt ist. AWS Batch iverwaltet sowohl die Skalierung von Kubernetes-Knoten als auch die Platzierung von Pods innerhalb Ihrer Knoten. Darüber hinaus verwaltet AWS Batch Warteschlangen, Abhängigkeitsverfolgung, Auftragswiederholungen, Priorisierung und Pod-Übermittlung und bietet Unterstützung für Amazon Elastic Compute Cloud (EC2) On-Demand-Instances und Spot Instances. AWS Batch lässt sich auch in Ihrem EKS-Cluster in einem eigenen Namespace integrieren, sodass Sie sich keine Sorgen machen müssen, dass Batch-Aufträge Ihre bestehenden Prozesse beeinträchtigen könnten. Schließlich verwaltet AWS Batch die Kapazität für Sie, einschließlich der Verwaltung eines warmen Pools von Knoten, der Begrenzung der Kapazität auf eine bestimmte Menge an vCPUs, der Skalierung von Knoten und der Ausführung von Aufträgen entweder in einem einzelnen Cluster oder über mehrere Cluster hinweg.
AWS Batch mit Fargate
AWS Batch mit Fargate-Ressourcen ermöglicht Ihnen eine vollständige Serverless-Architektur für Ihre Batch-Aufträge. Mit Fargate erhält jeder Auftrag genau die Menge an CPU und Arbeitsspeicher, die er anfordert (innerhalb der zulässigen Fargate-SKUs), sodass keine Ressourcen verschwendet werden oder auf den Start einer EC2-Instance gewartet werden muss.
Wenn Sie derzeit AWS-Batch-Benutzer sind, ermöglicht Fargate eine zusätzliche Ebene der Trennung von EC2-Instances. Amazon Machine Images (AMIs) müssen nicht verwaltet oder gepatcht werden. Wenn Sie Ihre Fargate-kompatiblen Aufträge an Batch senden, müssen Sie sich nicht um die Wartung von zwei verschiedenen Services kümmern, wenn einige Workloads in EC2 und andere in Fargate ausgeführt werden.
AWS bietet einen Cloud-basierten Planer mit einer verwalteten Warteschlange und der Möglichkeit, Prioritäten, Auftragswiederholungen, Abhängigkeiten, Timeouts und mehr festzulegen. AWS Batch verwaltet die Übermittlung an Fargate und den Lebenszyklus Ihrer Aufgaben, sodass Sie dies nicht tun müssen.
Darüber hinaus bietet Fargate Sicherheitsvorteile ohne zusätzlichen Aufwand (z. B. SOX- und PCI-Konformität) sowie eine Isolierung der Datenverarbeitungsressourcen für jeden Auftrag.
Planen
Auftragsplanung nach Prioritäten
Mit AWS Batch können Sie mehrere Warteschlangen mit unterschiedlichen Prioritätsstufen einrichten. Batch-Aufträge werden in den Warteschlangen gespeichert, bis Datenverarbeitungsressourcen zur Ausführung des Auftrags verfügbar sind. Der AWS Batch-Planer ermittelt auf Basis der Ressourcenanforderungen der jeweiligen Aufträge, wann, wo und wie die in die Warteschlange eingereihten Aufträge ausgeführt werden. Der Planer bewertet die Priorität jeder Warteschlange und führt Aufträge in der Prioritätsreihenfolge auf optimalen Datenverarbeitungsressourcen aus (z. B. speicheroptimiert im Vergleich zu CPU-optimiert), sofern diese Aufträge keine ausstehenden Abhängigkeiten aufweisen.
Support für GPU-Planung
GPU-Planung ermöglicht es Ihnen, die Anzahl und den Typ der Accelerators festzulegen, die Ihre Aufträge als Eingabevariablen in der Auftragsdefinition in AWS Batch benötigen. AWS Batch skaliert dann für Ihre Aufträge geeignete Instances basierend auf der erforderlichen Anzahl an Accelerators und isoliert die Accelerators gemäß den Anforderungen jedes Auftrags, damit nur geeignete Container darauf Zugriff haben.
Skalierung
Dynamische Bereitstellung und Skalierung von Rechenressourcen
Wenn Sie Fargate oder AWS Fargate Spot mit AWS Batch verwenden, müssen Sie nur einige Konzepte in Batch einrichten (eine Datenverarbeitungsumgebung, eine Auftragswarteschlange und eine Auftragsdefinition), und schon haben Sie eine komplette Warteschlangen-, Planer- und Datenverarbeitungsarchitektur, ohne einen einzigen Bestandteil der Datenverarbeitungsinfrastruktur verwalten zu müssen.
Für diejenigen, die EC2-Instances wünschen, bietet AWS Batch verwaltete Datenverarbeitungsumgebungen, die Datenverarbeitungsressourcen basierend auf dem Volumen und den Ressourcenanforderungen Ihrer übergebenen Aufgaben dynamisch bereitstellen und skalieren. Sie können Ihre Managed-Compute-Umgebungen mit Anforderungen wie dem Typ der EC2-Instances, den VPC-Subnetzkonfigurationen, den minimalen/maximalen/gewünschten vCPUs für alle Instances und dem Betrag konfigurieren, den Sie bereit sind, für Spot Instances als Prozentsatz des On-Demand-Instance-Preises zu zahlen.
Alternativ können Sie für Datenverarbeitungsumgebungen, die nicht von AWS Batch verwaltet werden, Ihre eigenen Datenverarbeitungsressourcen bereitstellen und verwalten, wenn Sie für Ihre EC2-Instances andere Konfigurationen benötigen, als was durch verwaltete Datenverarbeitungsumgebungen bereitgestellt wird (z. B. größere EBS-Volumes oder ein anderes Betriebssystem). Sie brauchen lediglich EC2-Instances bereitzustellen, die den Amazon-ECS-Agenten enthalten, und unterstützte Versionen von Linux und Docker auszuführen. AWS Batch führt Ihre Batch-Aufträge dann in den von Ihnen bereitgestellten EC2-Instances aus.
Flexible Zuweisungsstrategien
Mit AWS Batch können Sie drei Methoden für die Zuweisung von Datenverarbeitungsressourcen wählen. Mit diesen Strategien können Sie sowohl den Durchsatz als auch den Preis berücksichtigen, wenn Sie festlegen, wie AWS Batch Instances in ihrem Namen skalieren soll.
Best Fit: AWS Batch wählt einen Instance-Typ, der am besten zu den Anforderungen der Aufträge passt, wobei der günstigste Instance-Typ bevorzugt wird. Falls keine weiteren Instances des ausgewählten Instance-Typs verfügbar sind, wartet AWS Batch, bis die zusätzlichen Instances verfügbar sind. Falls nicht genügend Instances verfügbar sind oder der Benutzer die Servicelimits von Amazon EC2 erreicht, werden weitere Aufträge erst ausgeführt, wenn derzeit ausgeführte Aufträge abgeschlossen sind. Diese Zuweisungsstrategie hält die Kosten gering, kann allerdings die Skalierung einschränken.
Best Fit Progressive: AWS Batch wählt weitere Instance-Typen aus, die groß genug sind, um die Anforderungen der Aufträge in der Warteschlange zu erfüllen, wobei Instance-Typen mit geringeren vCPU-Kosten pro Einheit bevorzugt werden. Falls keine weiteren Instances der zuvor ausgewählten Instance-Typen verfügbar sind, wählt AWS Batch neue Instance-Typen aus.
Spot Capacity Optimized: AWS Batch wählt mindestens einen Instance-Typ aus, der groß genug ist, die Anforderungen der Aufträge in der Warteschlange zu erfüllen, wobei Instance-Typen bevorzugt werden, die mit geringerer Wahrscheinlichkeit unterbrochen werden. Diese Zuweisungsstrategie nur für Rechenressourcen vom Typ Spot-Instance verfügbar.