Cluster-Weboberflächen

Einige wichtige Open Source-Komponenten in Dataproc-Clustern bieten Weboberflächen wie Apache Hadoop und Apache Spark. Diese Oberflächen können zum Verwalten und Überwachen von Clusterressourcen und -einrichtungen verwendet werden, wie z. B. YARN ResourceManager, Hadoop Distributed File System (HDFS), MapReduce und Spark. Andere Komponenten oder Anwendungen, die Sie in Ihrem Cluster installieren, bieten möglicherweise auch Weboberflächen (siehe beispielsweise Jupyter-Notebook auf einem Dataproc-Cluster installieren und ausführen).

Verfügbare Oberflächen

Die folgenden Schnittstellen sind auf einem Dataproc-Cluster-Masterknoten verfügbar. Ersetzen Sie master-host-name durch den Namen Ihres Masterknotens.

Web-UI Port URL
YARN ResourceManager 80881 http://master-host-name:8088
HDFS NameNode 98702,3 http://master-host-name:9870

1 In Kerberos-fähigen Clustern ist der YARN ResourceManager-Web-UI-Port 8090 und wird unter HTTPS ausgeführt.

2 In Kerberos-fähigen Clustern lautet der HDFS NameNode-Web-UI-Port 9871 und wird unter HTTPS ausgeführt.

3 In älteren Dataproc-Versionen vor Version 1.2 war der HDFS-Namenode-Web-UI-Port 50070.

YARN ResourceManager enthält in der Spalte "Tracking UI" Links zu allen derzeit ausgeführten und abgeschlossenen Weboberflächen von MapReduce- und Spark-Anwendungen.

Zulässige REST APIs von YARN ResourceManager

Wenn Sie einen Cluster erstellen, legt Cloud Dataproc für das Attribut yarn-site.xml yarn.resourcemanager.webapp.methods-allowed den Wert "GET,HEAD" fest. Die HTTP-Methoden, die in der Web-UI und den REST APIs von YARN ResourceManager aufgerufen werden können, werden so auf GET- und HEAD-Methoden beschränkt. Diese Standardeinstellung deaktiviert auch die Übermittlung und Änderung von Jobs über die YARN REST API.

Sie können die Standardwerte überschreiben, wenn Sie bestimmte HTTP-Methoden für Port 8088 zulassen möchten. Dazu geben Sie für dieses Attribut einen oder mehrere durch Kommas getrennte Namen von HTTP-Methoden an. Der Wert ALL erlaubt alle HTTP-Methoden für den Port.

Beispiel:

gcloud dataproc clusters create cluster-name \
    --properties=^#^yarn:yarn.resourcemanager.webapp.methods-allowed=GET,POST,DELETE \
    --region=region \

Empfehlung: Wenn Sie mithilfe dieses Attributs andere HTTP-Methoden als die Standardmethoden zulassen, müssen Sie die Firewallregeln und andere Sicherheitseinstellungen so konfigurieren, dass der Zugriff auf Port 8088 beschränkt bleibt.

Verbindung zu Weboberflächen herstellen

Sie können über das Dataproc Component Gateway, Cloud Shell in Ihrem Projekt oder über das gcloud-Befehlszeilentool der Google Cloud CLI eine Verbindung zu Weboberflächen herstellen, die in einem Dataproc-Cluster ausgeführt werden:

  • Component Gateway: Stellen Sie mit nur einem Klick eine Verbindung zu Hadoop-, Spark- und anderen Web-UI-Komponentenoberflächen über die Google Cloud Console her. Das Component Gateway wird beim Erstellen des Clusters aktiviert.

  • Cloud Shell: Cloud Shell in der Google Cloud Console enthält gcloud CLI-Befehle und -Dienstprogramme vorinstalliert und bietet eine Webvorschau-Funktion, die können Sie schnell über einen SSH-Tunnel eine Verbindung zu einem Weboberflächen-Port auf ein Cluster. Eine Verbindung von Cloud Shell zum Cluster verwendet jedoch die lokale Portweiterleitung, wodurch eine Verbindung zu nur einem Port einer Cluster-Weboberfläche hergestellt wird. Für die Verbindung mit mehreren Ports sind mehrere Befehle erforderlich. Cloud Shell-Sitzungen werden nach einer Inaktivitätsphase (30 Minuten) automatisch beendet.

  • Google Cloud CLI: Über den Befehl gcloud compute ssh mit dynamischer Portweiterleitung können Sie einen SSH-Tunnel einrichten und einen SOCKS-Proxyserver zusätzlich zum Tunnel ausführen. Nachdem Sie diesen Befehl ausgeführt haben, müssen Sie Ihren lokalen Browser für die Verwendung des SOCKS-Proxyservers konfigurieren. Mit dieser Methode können Sie eine Verbindung zu mehreren Ports auf einer Cluster-Weboberfläche herstellen. Weitere Informationen finden Sie unter Kann ich die lokale Portweiterleitung anstelle eines SOCKS-Proxys verwenden? .

Häufig verwendete Befehlsvariablen festlegen

Wenn Sie das Kopieren und Ausführen von Befehlszeilenbeispielen auf Ihrem lokalen Computer oder in Cloud Shell vereinfachen möchten, legen Sie gcloud dataproc-Befehlsvariablen fest. Für einige der auf dieser Seite gezeigten Befehlsbeispiele müssen möglicherweise zusätzliche Variablen festgelegt werden.

Linux/macOS/Shell

export PROJECT=project;export HOSTNAME=hostname;export ZONE=zone

Windows

set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
  • Legen Sie für PROJECT Ihre Google Cloud-Projekt-ID fest.
  • Legen Sie HOSTNAME auf den Namen des Masterknotens in Ihrem Dataproc-Cluster (der Mastername endet mit dem Suffix -m) fest.
  • Legen Sie ZONE auf die Zone der VMs in Ihrem Dataproc-Cluster fest, z. B. "us-central1-b"

SSH-Tunnel erstellen

gcloud-Befehl

Führen Sie den folgenden Befehl gcloud auf Ihrem lokalen Computer aus, um einen SSH-Tunnel von einem offenen Port Ihres lokalen Computers zur Masterinstanz des Clusters einzurichten. Führen Sie dann einen lokalen SOCKS-Proxyserver aus, der den Port überwacht.

Bevor Sie den Befehl ausführen, erledigen Sie folgende Aufgaben auf Ihrem lokalen Computer:

  1. Häufig verwendete Befehlsvariablen festlegen
  2. Legen Sie eine PORT-Variable für einen offenen Port auf Ihrem lokalen Computer fest. Port 1080 ist eine willkürliche, aber typische Wahl, da er wahrscheinlich offen ist.
    PORT=number
    

Linux/macOS

gcloud compute ssh ${HOSTNAME} \
    --project=${PROJECT} --zone=${ZONE}  -- \
    -D ${PORT} -N

Windows

gcloud compute ssh %HOSTNAME% ^
    --project=%PROJECT% --zone=%ZONE%  -- ^
    -D %PORT% -N

Mit dem Separator -- können Sie SSH-Argumente so zum Befehl gcloud compute ssh hinzufügen:

  • -D steht für eine dynamische Portweiterleitung auf Anwendungsebene.
  • -N weist gcloud an, keine Remote-Shell zu öffnen.

Dieser gcloud-Befehl erstellt einen SSH-Tunnel, der unabhängig von anderen SSH-Shell-Sitzungen arbeitet, tunnelbezogene Fehler aus der Shell-Ausgabe heraushält und verhindert, dass der Tunnel unbeabsichtigt geschlossen wird.

Wenn der SSH-Befehl mit der Fehlermeldung bind: Cannot assign requested address fehlschlägt, könnte es daran liegen, dass der angeforderte Port bereits verwendet wird. Versuchen Sie, den Befehl mit einem anderen Wert für die PORT-Variable auszuführen.

Der obige Befehl wird im Vordergrund ausgeführt und muss fortgesetzt werden, damit der Tunnel aktiv bleibt. Der Befehl wird in der Regel automatisch beendet, wenn Sie den Cluster löschen.

Cloud Shell

  1. Öffnen Sie Google Cloud Cloud Shell.
  2. Führen Sie den folgenden gcloud-Befehl in Cloud Shell aus, um einen SSH-Tunnel von einem Cloud Shell-Vorschauport zu einem Weboberflächenport auf dem Masterknoten im Cluster einzurichten. Bevor Sie den Befehl in Cloud Shell ausführen:

    1. Häufig verwendete Befehlsvariablen festlegen
    2. Legen Sie die Variable PORT1auf einen Cloud Shell-Port im Portbereich 8080 – 8084 und die Variable PORT2 auf den Port der Weboberfläche im Masterknoten auf dem Cloud Dataproc-Cluster fest.
      PORT1=number
      PORT2=number
      
    gcloud compute ssh ${HOSTNAME} \
        --project=${PROJECT} --zone=${ZONE}  -- \
        -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}
    

    Mit dem Separator -- können Sie SSH-Argumente so zum Befehl gcloud compute ssh hinzufügen:

    • -4-4 weist ssh an, nur IPv4 zu verwenden.
    • -N weist gcloud an, keine Remote-Shell zu öffnen.
    • -L ${PORT1}:${HOSTNAME}:${PORT2} gibt die lokale Portweiterleitung vom angegebenen Cloud Shell-PORT1 zum Cluster HOSTNAME an:PORT2.

    Dieser gcloud-Befehl erstellt einen SSH-Tunnel, der unabhängig von anderen SSH-Shell-Sitzungen arbeitet, tunnelbezogene Fehler aus der Shell-Ausgabe heraushält und verhindert, dass der Tunnel unbeabsichtigt geschlossen wird.

Browser konfigurieren

gcloud-Befehl

Der SSH-Tunnel unterstützt Trafficproxys über das SOCKS-Protokoll. Starten Sie eine neue Browsersitzung mit Proxyserver-Parametern, um Ihren Browser für die Verwendung des Proxys zu konfigurieren. Im folgenden Beispiel wird Google Chrome verwendet. HOSTNAME ist der Name des Masterknotens im Cluster (siehe Häufig verwendete Befehlsvariablen festlegen).

Linux

/usr/bin/google-chrome \
    --proxy-server="socks5://localhost:${PORT}" \
    --user-data-dir=/tmp/${HOSTNAME}

macOS

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
    --proxy-server="socks5://localhost:${PORT}" \
    --user-data-dir=/tmp/${HOSTNAME}

Windows

"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe" ^
    --proxy-server="socks5://localhost:%PORT%" ^
    --user-data-dir="%Temp%\%HOSTNAME%"

Dieser Befehl verwendet folgende Chrome-Flags:

  • -proxy-server="socks5://localhost:1080" weist Chrome an, alle http://- und https://-URL-Anfragen über den SOCKS-Proxyserver localhost:${PORT} unter Verwendung von Version 5 des SOCKS-Protokolls zu senden. ${PORT} ist die Portvariable, die Sie unter SSH-Tunnel erstellen festgelegt haben. Hostnamen für diese URLs werden vom Proxyserver aufgelöst, nicht lokal von Chrome.
  • --user-data-dir=/tmp/${HOSTNAME} zwingt Chrome zum Öffnen eines neuen Fensters, das nicht mit einer bestimmten Chrome-Sitzung verbunden ist. Ohne dieses Flag kann Chrome ein neues Fenster öffnen, das mit einer bestehenden Chrome-Sitzung verbunden ist, und die von Ihnen vorgenommene --proxy-server-Einstellung ignorieren. Bei dem für --user-data-dir festgelegten Wert kann es sich um einen beliebigen nicht vorhandenen Pfad handeln.

Cloud Shell

Sie müssen Ihren lokalen Browser nicht konfigurieren, wenn Sie Cloud Shell verwenden. Nutzen Sie nach dem Erstellen eines SSH-Tunnels die Cloud Shell-Webvorschau, um eine Verbindung zur Clusteroberfläche herzustellen.

Verbindung zur Clusteroberfläche herstellen

gcloud-Befehl

Wenn Ihr lokaler Browser für die Verwendung des Proxys konfiguriert ist, können Sie die URL der Weboberfläche in Ihrem Dataproc-Cluster aufrufen. Weitere Informationen finden Sie unter Verfügbare Oberflächen. Die Browser-URL hat folgendes Format und den folgenden Inhalt: http://cluster-name-m:port (Port der Clusteroberfläche)

Cloud Shell

Klicken Sie in Cloud Shell auf die Schaltfläche Webvorschau (Schaltfläche für Webvorschau) und wählen Sie eine der folgenden Optionen aus:

  • "Preview on port 8080" (Vorschau auf Port 8080) oder
  • "Change port" (Port ändern) und geben Sie die Portnummer in das Dialogfeld ein.
Die Portnummer muss mit der PORT1-Nummer von Cloud Shell (Port 8080 bis 8084) übereinstimmen, die Sie unter SSH-Tunnel erstellen an den Befehl gcloud compute ssh übergeben haben.

Es wird ein Browserfenster geöffnet, das eine Verbindung zum Port der Weboberfläche des Masterknotens im Cluster herstellt.

FAQ und Tipps zur Fehlerbehebung

Was ist, wenn die Benutzeroberfläche in meinem Browser nicht angezeigt wird?

Wenn die Benutzeroberfläche in Ihrem Browser nicht angezeigt wird, sind dies die beiden häufigsten Gründe:

  1. Sie haben ein Problem mit der Netzwerkverbindung, möglicherweise aufgrund einer Firewall. Führen Sie den folgenden Befehl aus, nachdem Sie die lokalen Variablen festgelegt haben. Sie sehen dann, ob Sie SSH für die Masterinstanz verwenden können. Wenn dies nicht möglich ist, wird ein Konnektivitätsproblem signalisiert.

    Linux/macOS

    gcloud compute ssh ${HOSTNAME}-m \
        --project=${PROJECT}
    

    Windows

    gcloud compute ssh %HOSTNAME%-m ^
        --project=%PROJECT%
    

  2. Ein anderer Proxy stört den SOCKS-Proxy. Führen Sie den folgenden curl-Befehl aus, der unter Linux und macOS verfügbar ist, um den Proxy zu prüfen:

    Linux/macOS

    curl -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
    

    Windows

    curl.exe -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
    
    Wenn Sie eine HTTP-Antwort sehen, funktioniert der Proxy. Dann ist es möglich, dass der SOCKS-Proxy von einem anderen Proxy oder einer Browsererweiterung unterbrochen wird.

Kann ich die lokale Portweiterleitung anstelle eines SOCKS-Proxys verwenden?

Anstelle des SOCKS-Proxys können Sie auf die Webanwendungs-UIs zugreifen, die auf Ihrer Masterinstanz mit der lokalen SSH-Portweiterleitung ausgeführt werden, die den Port des Masters an einen lokalen Port weiterleitet. Mit dem folgenden Befehl können Sie beispielsweise auf localhost:1080 zugreifen, um cluster-name-m:8088 ohne SOCKS zu erreichen. (siehe Häufig verwendete Befehlsvariablen festlegen):

Linux/macOS

gcloud compute ssh ${HOSTNAME}-m \
    --project=${PROJECT} -- \
    -L 1080:${HOSTNAME}-m:8088 -N -n

Windows

gcloud compute ssh %HOSTNAME%-m ^ 
    --project=%PROJECT% -- ^ 
    -L 1080:%HOSTNAME%-m:8088 -N -n

Die Verwendung eines SOCKS-Proxys wird über die lokale Portweiterleitung empfohlen, da der Proxy:

  • Zugriff auf alle Webanwendungsports ermöglicht, ohne für jeden UI-Port einen Portweiterleitungstunnel einrichten zu müssen.
  • den Web-UIs von Spark und Hadoop ermöglicht, DNS-Hosts richtig aufzulösen