Wie kann ich über eine Anwendung auf einen Amazon EMR-Cluster zugreifen, wenn sich der Cluster in einem privaten Subnetz befindet?

Lesedauer: 4 Minute
0

Ich möchte eine Anwendung wie Apache Livy verwenden, um auf einen Amazon EMR-Cluster, der sich in einem privaten Subnetz befindet, zuzugreifen und Arbeit daran zu übermitteln.

Kurze Beschreibung

Erstellen Sie einen Application Load Balancer mit dem Internet verbundenen Schema. Legen Sie das Ziel des Application Load Balancer auf die private IP-Adresse des Hauptknotens fest. Auf diese Weise können Sie Folgendes tun:

  1. Stellen Sie eine Verbindung zum EMR-Cluster her, der sich in einem privaten Subnetz befindet.
  2. Senden Sie Jobs mithilfe von REST-APIs an den Client.

Lösung

Hinweis: Folgendes funktioniert ggf. nicht, wenn Sie den Cluster mit Kerberos starten oder SSL für Livy aktivieren.

  1. Öffnen Sie die Amazon Elastic Compute Cloud (Amazon EC2)-Konsole.
  2. Wählen Sie im Navigationsbereich unter Load Balancing die Option Load Balancers aus.
  3. Wählen Sie Load Balancer erstellen.
  4. Wählen Sie auf der Seite Load Balancer-Typ auswählen unter Application Load Balancer die Option Erstellen aus.
  5. Bei Schritt 1: Gehen Sie auf der Seite Load Balancer konfigurieren wie folgt vor:
    Wählen Sie Schema und die Option Internet verbunden aus.
    Verwenden Sie für Listeners die Standardoptionen (HTTP und Port 80)
    Wählen Sie für VPC die VPC aus, in der sich der EMR-Cluster befindet.
    Wählen Sie für Verfügbarkeitszonen zwei Subnetze aus. Stellen Sie sicher, dass es sich bei einem davon um das Subnetz handelt, in dem sich der EMR-Cluster befindet (privates Subnetz).
  6. Wählen Sie Weiter: Sicherheitseinstellungen konfigurieren.
  7. Wenn Sie im vorherigen Schritt einen sicheren Listener erstellt haben, schließen Sie die Seite Sicherheitseinstellungen konfigurieren ab. Andernfalls wählen Sie Weiter: Sicherheitsgruppen konfigurieren.
  8. Wählen Sie die Sicherheitsgruppe(n) für den Application Load Balancer aus. Denken Sie daran, dass es sich hierbei um einen mit dem Internet verbundenen Application Load Balancer handelt. Es empfiehlt sich, eine Sicherheitsgruppe zu verwenden, die eingehende Anfragen von einer bestimmten IP-Adresse oder einem bestimmten IP-Adressbereich begrenzt.
  9. Wählen Sie Weiter: Routing konfigurieren.
  10. Bei Schritt 4: Seite Routing konfigurieren:
    Wählen Sie bei Zielgruppe die gewünschte Zielgruppe aus.
    Geben Sie für Name den Zielnamen ein.
    Wählen Sie als Zieltyp die Option IP aus.
    Wählen Sie für Protocol die Option HTTP aus.
    Geben Sie für Port den Port der Web-Benutzeroberfläche des Clients ein. Geben Sie für Livy beispielsweis 8998 ein. Weitere Informationen finden Sie unter Anzeigen von Webschnittstellen, die auf Amazon EMR-Clustern gehostet werden.
    Wählen Sie im Abschnitt Zustandsprüfungen für Protocol die Option HTTP aus.
    Geben Sie als Pfad /sessions ein.
  11. Wählen Sie Weiter: Ziele registrieren.
  12. Bei Schritt 5: Geben Sie auf der Seite Ziele registrieren für IP die private IP-Adresse des Hauptknotens ein. Sie finden die private IP-Adresse des Hauptknotens auf der Registerkarte Hardware der Cluster-Detailseite.
  13. Wählen SieZur Liste hinzufügen um die IP-Adresse zur Liste Zu registrieren hinzuzufügen.
  14. Wählen Sie Weiter: Überprüfen Sie und wählen Sie dann Erstellen aus.
  15. Wenn der Status auf aktiv wechselt, wählen Sie die Registerkarte Listeners aus.
  16. Wählen Sie in der Spalte Regeln den Zielgruppenlink aus.
  17. Bestätigen Sie auf der Registerkarte Ziele dass die registrierten Ziele und Verfügbarkeitszonen fehlerfrei sind.
  18. Wählen Sie auf der Registerkarte Beschreibung den Link neben Load Balancer (der Link mit dem Namen des Load Balancers). Wenn die Livy-Web-Benutzeroberfläche angezeigt wird, funktioniert die Konfiguration. Dies bedeutet, dass die Anfragen Livy auf dem EMR-Cluster im privaten Subnetz erreichen können.

Sie können nun Aufträge an den Client übermitteln. Der folgende Befehl sendet beispielsweise einen Apache Spark-Job an den Livy-Server. Ersetzen Sie livyALB-2103017743.us-east-1.elb.amazonaws.com durch den DNS-Namen Ihres Application Load Balancers. Sie finden den DNS-Namen auf der Registerkarte Beschreibung für den Application Load Balancer.

curl -X POST --data '{"kind": "pyspark"}' -H "Content-Type: application/json" livyALB-2103017743.us-east-1.elb.amazonaws.com/sessions

Weitere Informationen

Zugriff auf die Spark-Web-Benutzeroberflächen

Apache Livy

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren