

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Multi-AZ-Failover für EMR-Cluster mithilfe von Application Recovery Controller verwalten
<a name="multi-az-failover-spark-emr-clusters-arc"></a>

*Aarti Rajput, Ashish Bhatt, Neeti Mishra und Nidhi Sharma, Amazon Web Services*

## Zusammenfassung
<a name="multi-az-failover-spark-emr-clusters-arc-summary"></a>

Dieses Muster bietet eine effiziente Notfallwiederherstellungsstrategie für Amazon EMR-Workloads, um eine hohe Verfügbarkeit und Datenkonsistenz in mehreren Availability Zones innerhalb einer einzigen sicherzustellen. AWS-Region Das Design verwendet [Amazon Application Recovery Controller und einen Application](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) [Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html), um Failover-Operationen und die Verkehrsverteilung für einen Apache Spark-basierten EMR-Cluster zu verwalten. 

Unter Standardbedingungen hostet die primäre Availability Zone einen aktiven EMR-Cluster und eine Anwendung mit vollem read/write Funktionsumfang. Wenn eine Availability Zone unerwartet ausfällt, wird der Datenverkehr automatisch zur sekundären Availability Zone umgeleitet, wo ein neuer EMR-Cluster gestartet wird. Beide Availability Zones greifen über spezielle [Gateway-Endpunkte](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) auf einen gemeinsamen Amazon Simple Storage Service (Amazon S3) -Bucket zu, wodurch eine konsistente Datenverwaltung gewährleistet wird. Dieser Ansatz minimiert Ausfallzeiten und ermöglicht eine schnelle Wiederherstellung kritischer Big-Data-Workloads bei Ausfällen in der Availability Zone. Die Lösung ist in Branchen wie dem Finanzwesen oder dem Einzelhandel nützlich, in denen Echtzeitanalysen von entscheidender Bedeutung sind.

## Voraussetzungen und Einschränkungen
<a name="multi-az-failover-spark-emr-clusters-arc-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver [AWS-Konto](https://aws.amazon.com/resources/create-account/)
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) auf Amazon Elastic Compute Cloud (Amazon EC2)
+ Zugriff vom Master-Knoten des EMR-Clusters auf Amazon S3.
+ AWS Multi-AZ-Infrastruktur

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ [Amazon EMR 6.x und spätere Versionen](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)

## Architektur
<a name="multi-az-failover-spark-emr-clusters-arc-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon EMR-Cluster
+ Amazon Application Recovery Controller
+ Application Load Balancer
+ Amazon-S3-Bucket
+ Gateway-Endpunkte für Amazon S3

**Zielarchitektur**

![Architektur für einen automatisierten Wiederherstellungsmechanismus mit Application Recovery Controller.](https://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e5ecdb66-0eef-4a6a-8367-982a55104748/images/e982d580-13db-4bdd-9f6b-6400d7c31c01.png)


Diese Architektur bietet Ausfallsicherheit für Anwendungen, indem sie mehrere Availability Zones verwendet und einen automatisierten Wiederherstellungsmechanismus über den Application Recovery Controller implementiert.

1. Der Application Load Balancer leitet den Datenverkehr an die aktive Amazon EMR-Umgebung weiter, bei der es sich in der Regel um den primären EMR-Cluster in der primären Availability Zone handelt.

1. Der aktive EMR-Cluster verarbeitet die Anwendungsanfragen und stellt über seinen speziellen Amazon S3-Gateway-Endpunkt für Lese- und Schreibvorgänge eine Verbindung zu Amazon S3 her.

1. Amazon S3 dient als zentrales Datenrepository und wird möglicherweise als Checkpoint oder als gemeinsam genutzter Speicher zwischen EMR-Clustern verwendet. EMR-Cluster behalten die Datenkonsistenz bei, wenn sie über `s3://` das Protokoll und das [EMR-Dateisystem (EMRFS](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-fs.html)) direkt in Amazon S3 schreiben. 

1. Application Recovery Controller überwacht kontinuierlich den Zustand der primären Availability Zone und verwaltet bei Bedarf automatisch Failover-Operationen.

1. Wenn der Application Recovery Controller einen Fehler im primären EMR-Cluster feststellt, ergreift er die folgenden Aktionen:
   + Initiiert den Failover-Prozess für den sekundären EMR-Cluster in Availability Zone 2.
   + Aktualisiert die Routingkonfigurationen, um den Verkehr zum sekundären Cluster weiterzuleiten.

## Tools
<a name="multi-az-failover-spark-emr-clusters-arc-tools"></a>

**AWS-Services**
+ [Amazon Application Recovery Controller****](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) unterstützt Sie bei der Verwaltung und Koordination der Wiederherstellung Ihrer Anwendungen in allen AWS-Regionen Availability Zones. Dieser Service vereinfacht den Prozess und verbessert die Zuverlässigkeit der Anwendungswiederherstellung, indem er die manuellen Schritte reduziert, die bei herkömmlichen Tools und Prozessen erforderlich sind.
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) arbeitet auf der Anwendungsebene, der siebten Schicht des Open Systems Interconnection (OSI) -Modells. Er verteilt den eingehenden Anwendungsdatenverkehr auf mehrere Ziele, z. B. EC2 Instanzen, in mehreren Availability Zones. Dies erhöht die Verfügbarkeit Ihrer Anwendung.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) ist eine Big-Data-Plattform, die Datenverarbeitung, interaktive Analyse und maschinelles Lernen für Open-Source-Frameworks wie Apache Spark, Apache Hive und Presto bietet.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) bietet eine einfache Webservice-Schnittstelle, mit der Sie beliebige Datenmengen zu jeder Zeit und von überall speichern und abrufen können. Mit diesem Service können Sie ganz einfach Anwendungen erstellen, die Cloud-nativen Speicher nutzen.
+ [Gateway-Endpunkte für Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) sind Gateways, die Sie in Ihrer Routing-Tabelle angeben, um von Ihrer Virtual Private Cloud (VPC) aus über das Netzwerk auf Amazon S3 zuzugreifen. AWS 

## Best Practices
<a name="multi-az-failover-spark-emr-clusters-arc-best-practices"></a>
+ Folgen Sie den [AWS Best Practices für Sicherheit, Identität und Compliance,](https://aws.amazon.com/architecture/security-identity-compliance/?cards-all.sort-by=%5b…%5d.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all) um eine robuste und sichere Architektur zu gewährleisten.
+ Richten Sie die Architektur auf das [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) aus.
+ Verwenden Sie Amazon S3 Access Grants, um den Zugriff von Ihrem Spark-basierten EMR-Cluster auf Amazon S3 zu verwalten. Einzelheiten finden Sie im Blogbeitrag [Use Amazon EMR with S3 Access Grants to Scale Spark access to Amazon S3](https://aws.amazon.com/blogs/big-data/use-amazon-emr-with-s3-access-grants-to-scale-spark-access-to-amazon-s3/).
+ [Verbessern Sie die Spark-Leistung mit Amazon S3](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-performance.html).

## Epen
<a name="multi-az-failover-spark-emr-clusters-arc-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Melden Sie sich bei der an AWS-Managementkonsole. | Melden Sie sich als IAM-Benutzer bei der [AWS-Managementkonsole](https://console.aws.amazon.com/) an. Anweisungen finden Sie in der [AWS Dokumentation](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-iam-user-sign-in-tutorial.html). | AWS DevOps | 
| Konfigurieren Sie die AWS CLI. **** | Installieren Sie die AWS CLI oder aktualisieren Sie sie auf die neueste Version, damit Sie mit AWS-Services der interagieren können AWS-Managementkonsole. Anweisungen finden Sie in der [AWS CLI Dokumentation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). | AWS DevOps | 

### Stellen Sie eine Spark-Anwendung auf Ihrem EMR-Cluster bereit
<a name="deploy-a-spark-application-on-your-emr-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen S3-Bucket. | 1. Erstellen Sie einen S3-Bucket, um den Eingabedatensatz, die Protokolle, die Anwendung und die Ausgabedaten zu speichern. Anweisungen finden Sie in der [Amazon S3 S3-Dokumentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html).<br />2. Organisieren Sie den Bucket in separate Ordner für Eingabedaten (`dataset`), Logs (`logs`), Spark-Anwendung (`spark-app`) und Ausgabedaten (`output`). | AWS DevOps | 
| Erstellen Sie einen EMR-Cluster. | 1. Verwenden Sie die folgenden AWS CLI Befehle, um einen EMR-Cluster (z. B. Version 6.12 oder höher) mit Instances zu erstellen, die sich über zwei Availability Zones (wie `us-east-1a` und`us-east-1b`) erstrecken, um Hochverfügbarkeit zu gewährleisten. Der Befehl gibt den `m4.large` Instanztyp als Beispiel an.<pre>aws emr create-cluster \<br />    --ec2-attributes AvailabilityZone=<AZ-name-1> \<br />    --release-label emr-6.12.0 \<br />    --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large</pre><pre>aws emr create-cluster \<br />    --ec2-attributes AvailabilityZone=<AZ-name-2> \<br />    --release-label emr-6.12.0 \<br />    --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large</pre><br />Weitere Informationen finden Sie im [Befehl create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/create-cluster.html) und in der [Amazon EMR-Dokumentation](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).<br />2. Stellen Sie das key pair, die Servicerolle und das Instanzprofil nach Bedarf mit den erforderlichen Berechtigungen bereit. | AWS DevOps | 
| Konfigurieren Sie die Sicherheitseinstellungen für den EMR-Cluster. | 1. Identifizieren Sie die Sicherheitsgruppe, die dem Master-Knoten des EMR-Clusters zugeordnet ist, indem Sie den Befehl AWS CLI [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/describe-cluster.html) verwenden:<pre>aws emr describe-cluster --cluster-id j-XXXXXXXX</pre><br />2. Um die Sicherheit zu erhöhen, ändern Sie die Einstellungen der Sicherheitsgruppe so, dass SSH-Zugriff (TCP-Port 22) auf den Master-Knoten zulässig ist, dieser jedoch auf Ihre spezifische IP-Adresse beschränkt ist.<br />Weitere Informationen finden Sie in der [Amazon EMR-Dokumentation](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html). | AWS DevOps | 
| Connect zum EMR-Cluster her. | Stellen Sie mithilfe des bereitgestellten key pair über SSH eine Connect zum Master-Knoten des EMR-Clusters her.<br />Stellen Sie sicher, dass sich die Schlüsselpaardatei im selben Verzeichnis wie Ihre Anwendung befindet.<br />Führen Sie die folgenden Befehle aus, um die richtigen Berechtigungen für das key pair festzulegen und die SSH-Verbindung herzustellen:<pre>chmod 400 <key-pair-name><br />ssh -i ./<key-pair-name> hadoop@<master-node-public-dns></pre> | AWS DevOps | 
| Stellen Sie die Spark-Anwendung bereit. | Nachdem Sie die SSH-Verbindung hergestellt haben, befinden Sie sich in der Hadoop-Konsole.1. Erstellen oder bearbeiten Sie die Spark-Anwendungsdatei (`main.py`) mit einem Texteditor wie vim:<pre>vim main.py</pre><br />Weitere Informationen zum Erstellen und Ändern der Spark-Anwendung finden Sie in der [Amazon EMR-Dokumentation](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).<br />2. Senden Sie die Spark-Anwendung an den EMR-Cluster und geben Sie dabei die Speicherorte der Eingabe- und Ausgabedaten im S3-Bucket an:<pre>spark-submit main.py —data_source <input-data-folder-in-s3> —output_uri <output-folder-in-s3></pre><br />Hier ist ein Beispiel, das auf den Ordnern basiert, die Sie zuvor eingerichtet haben:<pre>spark-submit main.py —data_source dataset —output_uri output</pre><br />3. Überwachen Sie den Fortschritt der Anwendung, indem Sie die Anwendungsprotokolle überprüfen:<pre>yarn logs -applicationId <application-id></pre> | AWS DevOps | 
| Überwachen Sie die Spark-Anwendung. | 1. Öffnen Sie ein weiteres Terminalfenster und richten Sie einen SSH-Tunnel zur Resource Manager-Weboberfläche des EMR-Clusters ein:<pre>ssh -i <key-pair-name> -N -L 8157:<resource-manager-public-dns>:8088 hadoop@<resource-manager-public-dns></pre><br />2. Um die Anwendung zu überwachen, greifen Sie auf die Resource Manager-Weboberfläche zu, indem Sie `http://localhost:8157` in Ihrem Webbrowser zu navigieren. | AWS DevOps | 

### Verkehr in eine andere Availability Zone verlagern
<a name="shift-traffic-to-another-availability-zone"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Application Load Balancer. | Richten Sie die Zielgruppe ein, die den Verkehr zwischen Amazon EMR-Masterknoten weiterleitet, die in zwei Availability Zones innerhalb einer AWS-Region bereitgestellt werden.<br />Anweisungen finden Sie in der Elastic Load Balancing-Dokumentation unter [Eine Zielgruppe für Ihren Application Load Balancer erstellen](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html). | AWS DevOps | 
| Konfigurieren Sie die Zonenverschiebung im Application Recovery Controller. | In diesem Schritt verwenden Sie die [Zonal Shift-Funktion](https://docs.aws.amazon.com/r53recovery/latest/dg/arc-zonal-shift.html) in Application Recovery Controller, um den Datenverkehr in eine andere Availability Zone zu verlagern.1. Öffnen Sie die [Application Recovery Controller-Konsole](https://console.aws.amazon.com/route53recovery/home#/dashboard).<br />2. Wählen Sie unter **Erste Schritte** die Optionen **Zonal Shift** und **Start Zonal** Shift aus.<br />3. Wählen Sie die Availability Zone aus, von der Sie den Verkehr wegverlagern möchten.<br />4. Wählen Sie in der Tabelle Ressourcen eine unterstützte Ressource (z. B. Application Load Balancer) für die Zonenverschiebung aus.<br />5. Wählen Sie unter Ablauf der **Zonenschicht festlegen eine Ablaufzeit** für die Zonenschicht aus, oder geben Sie sie ein. Sie können eine Dauer zwischen 1 Minute und drei Tagen (72 Stunden) festlegen.<br />Alle Zonenverschiebungen sind temporär. Sie müssen ein Ablaufdatum festlegen, aber Sie können aktive Schichten später aktualisieren, um einen neuen Ablaufzeitraum von bis zu drei Tagen festzulegen.<br />6. Geben Sie einen Kommentar zu dieser Zonenschicht ein.<br />7. Aktivieren Sie das Kontrollkästchen, um zu bestätigen, dass durch den Start einer Zonenverschiebung die verfügbare Kapazität für Ihre Anwendung reduziert wird, da der Datenverkehr von der Availability Zone weg verlagert wird.<br />8. Wählen Sie **Starten**.<br />Informationen zur AWS CLI Verwendung von finden Sie unter [Beispiele für die Verwendung von AWS CLI with Zonal Shift](https://docs.aws.amazon.com/r53recovery/latest/dg/getting-started-cli-zonalshift.html) in der Dokumentation zu Application Recovery Controller. | AWS DevOps | 
| Überprüfen Sie die Konfiguration und den Fortschritt der Zonenschicht. | 1. Überprüfen Sie die Ressourcen, die bei Zonal Shift registriert sind:<pre>aws arc-zonal-shift list-managed-resources --region <AWS-region-name></pre><br />Die folgende Ausgabe bestätigt beispielsweise, dass die Ressourcen in beiden Availability Zones betriebsbereit sind.<pre>"appliedWeights": {<br />        "use1-az1": 1.0,<br />        "use1-az2": 1.0<br />    },</pre><br />2. Um die Zonenverschiebung zu visualisieren, verwenden Sie den folgenden AWS CLI Befehl, um die Zonenverschiebung zu starten:<pre>aws arc-zonal-shift start-zonal-shift \<br />   --resource-identifier <application-load-balancer-arn> \<br />   --away-from <source-AZ> \<br />   --expires-in 10m --comment "testing" \<br />   --region <AWS-region-name></pre><br />wo `<source-AZ>` ist der Identifier der Availability Zone, von der Sie den Traffic wegverlagern möchten, und `<application-load-balancer-arn>` ist der Amazon Resource Name (ARN) Ihres Application Load Balancer.<br />3. Stellen Sie sicher, dass der Datenverkehr in eine andere Availability Zone verlagert wurde.<pre>aws arc-zonal-shift get-managed-resource \<br />   --resource-identifier <application-load-balancer-arn> \<br />   --region <AWS-region-name></pre><br />Sie können sehen, dass die Zonenverschiebung anhand dieser Gewichtungen bestätigt wird:<pre>"appliedWeights": {<br />        "use1-az1": 0.0,<br />        "use1-az2": 1.0<br />    },</pre> | AWS DevOps | 

## Zugehörige Ressourcen
<a name="multi-az-failover-spark-emr-clusters-arc-resources"></a>
+ AWS CLI Befehle:
  + [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/create-cluster.html)
  + [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/describe-cluster.html)
  + [arc-zonal-shift](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/arc-zonal-shift/index.html)
+ [Konfiguration von Amazon EMR-Cluster-Instance-Typen und Best Practices für Spot-Instances](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-instances-guidelines.html) (Amazon EMR-Dokumentation)
+ [Bewährte Sicherheitsmethoden in IAM (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html))
+ [Verwenden Sie Instanzprofile](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) (IAM-Dokumentation)
+ [Verwenden Sie Zonal Shift und Zonal Autoshift, um Anwendungen in ARC wiederherzustellen (Application Recovery](https://docs.aws.amazon.com/r53recovery/latest/dg/multi-az.html) Controller-Dokumentation)