Interfacce web del cluster

Alcuni dei principali componenti open source inclusi in Dataproc come Apache Hadoop e Apache Spark, fornisce interfacce web. Questi possono essere usate per gestire e monitorare le risorse cluster come il gestore delle risorse YARN, il file distribuito Hadoop System (HDFS), MapReduce e Spark. Altri componenti o le applicazioni installate sul cluster potrebbero anche fornire interfacce web (vedi, ad esempio, Installa ed esegui un blocco note Jupyter su un cluster Dataproc).

Interfacce disponibili

Le seguenti interfacce sono disponibili su un master del cluster Dataproc (sostituisci master-host-name con il nome del tuo nodo master).

UI web Porta URL
Resource Manager YARN 80881 http://master-host-name:8088
NameNode HDFS 98702,3 http://master-host-name:9870

1 Sui cluster abilitati per Kerberos, lo YARN La porta della UI web di ResourceManager è 8090 e viene eseguita su HTTPS.

2 Sui cluster abilitati per Kerberos, HDFS La porta della UI web di Namenode è 9871 e viene eseguita su HTTPS.

3 Nella versione precedente di Dataproc (precedenti alla 1.2), la porta della UI web di HDFS Namenode era 50070.

Il ResourceManager YARN ha link per tutte le risorse attualmente in esecuzione e completate Interfacce web delle applicazioni MapReduce e Spark nella "UI di monitoraggio" colonna.

API REST YARN ResourceManager consentite

Quando crei un cluster, Dataproc imposta il file yarn-site.xml yarn.resourcemanager.webapp.methods-allowed proprietà in "GET,HEAD". che limita i metodi HTTP che possono essere chiamati UI web di YARN Resource Manager API REST ai metodi GET e HEAD. Anche questa impostazione predefinita disabilita l'invio e le modifiche del job tramite l'API REST YARN.

Puoi eseguire l'override dei valori predefiniti per abilitare metodi HTTP specifici sulla porta 8088 impostando questa proprietà su uno o più metodi HTTP separati da virgole names. Un valore ALL consentirà tutti i metodi HTTP sulla porta.

Esempio:

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

Consiglio: se imposti questa proprietà in modo da consentire metodi HTTP non predefiniti, assicurati di configurare regole firewall e altre impostazioni di sicurezza per limitare l'accesso alla porta 8088.

Connessione alle interfacce web

Puoi connetterti alle interfacce web in esecuzione su un cluster Dataproc utilizzando Gateway dei componenti Dataproc Cloud Shell del progetto o lo strumento gcloud di Google Cloud CLI a strumento a riga di comando:

  • Gateway dei componenti: connettiti con un clic a Hadoop, Spark e altri componenti Interfacce della UI web dalla console Google Cloud. L'utente attiva Gateway dei componenti quando crei il cluster.

  • Cloud Shell: in Cloud Shell nella console Google Cloud è presente i comandi e le utilità di gcloud CLI sono preinstallati e fornisce un la funzionalità Anteprima web che consente di connetterti rapidamente tramite un tunnel SSH a una porta di interfaccia web in un cluster. Tuttavia, una connessione al cluster da Cloud Shell utilizza il port forwarding locale, che apre la connessione a una sola porta su interfaccia web di un cluster: sono necessari più comandi per connettersi ports. Inoltre, le sessioni di Cloud Shell si chiudono automaticamente periodo di inattività (30 minuti).

  • Google Cloud CLI: il comando gcloud compute ssh con port forwarding dinamico consente di stabilire un tunnel SSH ed eseguire un SOCKS in cima al tunnel. Dopo aver inviato questo comando, devi configurare il browser locale per utilizzare il proxy SOCKS. Questo metodo di connessione consente di connetterti a più porte nell'interfaccia web di un cluster. Consulta Posso utilizzare il port forwarding locale invece di un proxy SOCKS? per ulteriori informazioni.

Imposta variabili di comando di uso comune

Per copiare ed eseguire esempi della riga di comando sulla macchina locale o in Cloud Shell più facilmente, imposta le variabili del comando gcloud dataproc. Altre variabili possono per alcuni degli esempi di comandi mostrati in questa pagina.

Linux/mac/Shell

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

Windows

set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
  • Imposta PROJECT sul tuo ID progetto Google Cloud
  • Imposta HOSTNAME sul nome di nodo master nel tuo Cluster Dataproc (il nome master termina con un suffisso -m)
  • Imposta ZONE su zona delle VM nel tuo cluster Dataproc (ad esempio, "us-central1-b")

Crea un tunnel SSH

Comando gcloud

Esegui questo comando gcloud sulla tua macchina locale per configurare un tunnel SSH da una porta aperta sulla macchina locale master del cluster ed eseguire un server proxy SOCKS locale in ascolto sulla porta.

Prima di eseguire il comando, sulla macchina locale:

  1. Impostare le variabili di comando di uso comune
  2. Imposta una variabile PORT su una porta aperta sulla macchina locale. La porta 1080 è una scelta arbitraria ma tipica perché potrebbe essere aperto.
    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

Il separatore -- ti consente di aggiungere SSH argomenti al comando gcloud compute ssh, come segue:

  • -Dspecifica il port forwarding dinamico a livello di applicazione.
  • -N indica a gcloud di non aprire una shell remota.

Questo comando gcloud crea un tunnel SSH che opera indipendentemente dalle altre sessioni di shell SSH, esclude gli errori relativi al tunnel dell'output della shell e aiuta a evitare chiusure involontarie del tunnel.

Se il comando ssh ha esito negativo e viene visualizzato il messaggio di errore bind: Cannot assign requested address, una probabile causa è che la porta richiesta è in uso. Prova a eseguire il comando con un'istanza Valore della variabile PORT.

Il comando precedente viene eseguito in primo piano e deve continuare a essere eseguito per mantenere il tunnel attivo. Il comando dovrebbe uscire automaticamente se e quando elimini il cluster.

Cloud Shell

  1. Apri Google Cloud Cloud Shell.
  2. Esegui il comando gcloud riportato di seguito in Cloud Shell per configurare un tunnel SSH da una Porta di anteprima di Cloud Shell su una porta dell'interfaccia web sul nodo master nel tuo cluster. Prima di eseguire il comando, in Cloud Shell :

    1. Impostare le variabili di comando di uso comune
    2. Imposta una variabile PORT1 su una porta Cloud Shell compreso nell'intervallo di porte 8080-8084 e imposta una variabile PORT2 alla porta dell'interfaccia web sul nodo master del tuo di un cluster Dataproc.
      PORT1=number
      PORT2=number
      
    gcloud compute ssh ${HOSTNAME} \
        --project=${PROJECT} --zone=${ZONE}  -- \
        -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}
    

    Il separatore -- ti consente di aggiungere SSH argomenti al comando gcloud compute ssh, come segue:

    • -4 indica a SSH di utilizzare solo IPv4.
    • -N indica a gcloud di non aprire una shell remota.
    • -L ${PORT1}:${HOSTNAME}:${PORT2} specifica il port forwarding locale dall'istanza Cloud Shell specificata PORT1 al cluster HOSTNAME:PORT2 (PORTA 2).

    Questo comando gcloud crea un tunnel SSH che opera indipendentemente dalle altre sessioni di shell SSH, esclude gli errori relativi al tunnel dell'output della shell e aiuta a evitare chiusure involontarie del tunnel.

Configura il browser

Comando gcloud

Il tunnel SSH supporta il proxy del traffico tramite il protocollo SOCKS. Per configurare il browser per l'utilizzo del proxy, avvia una nuova sessione del browser con parametri del server proxy. Ecco un esempio che utilizza il browser Google Chrome. HOSTNAME è il nome del nodo master del cluster (vedi imposta variabili di comando di uso comune).

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%"

Questo comando utilizza i seguenti flag del browser Chrome:

  • -proxy-server="socks5://localhost:1080" dice a Chrome di inviare tutte Richieste URL http:// e https:// tramite SOCKS server proxy localhost:${PORT}, utilizzando la versione 5 del protocollo SOCKS. ${PORT} è la variabile di porta che hai impostato Crea un tunnel SSH. I nomi host degli URL vengono risolti dal server proxy, non localmente da Chrome.
  • --user-data-dir=/tmp/${HOSTNAME} forza l'utilizzo di Chrome per aprire una nuova finestra non collegata a una sessione di Chrome esistente. Senza questo flag, Chrome potrebbe aprire una nuova finestra associata a una sessione di Chrome esistente ignorando l'impostazione --proxy-server. Il valore impostato per --user-data-dir può essere qualsiasi percorso inesistente.

Cloud Shell

Non è necessario configurare il browser locale quando utilizzi Cloud Shell. Dopo aver creato un tunnel SSH, utilizza Cloud Shell anteprima web per connetterti all'interfaccia del cluster.

Connettiti all'interfaccia del cluster

Comando gcloud

Una volta configurato il browser locale per l'utilizzo del proxy, puoi accedere alla l'URL dell'interfaccia web sul tuo cluster Dataproc (vedi Interfacce disponibili). L'URL del browser ha i seguenti formati e contenuti: http://cluster-name-m:port (porta dell'interfaccia del cluster)

Cloud Shell

Fai clic su Anteprima web di Cloud Shell. pulsante pulsante-anteprima-web, quindi seleziona una delle seguenti opzioni:

  • "Anteprima sulla porta 8080" oppure
  • "Cambia porta" e inserisci il numero di porta nella finestra di dialogo
in base al numero PORT1 di Cloud Shell (porta 8080 - 8084) sei passato alla gcloud compute ssh comando in Crea un tunnel SSH.

Si apre una finestra del browser che si collega alla porta dell'interfaccia web sul nodo master del cluster.

Domande frequenti e suggerimenti per il debug

Cosa succede se non vedo l'interfaccia utente nel mio browser?

Se non vedi le interfacce utente nel tuo browser, i due motivi più comuni sono:

  1. Si è verificato un problema di connettività di rete, probabilmente dovuto a un firewall. Esegui questo comando (dopo impostare le variabili locali) per vedere se puoi connetterti all'istanza master tramite SSH. Se non ci riesci, significa che c'è un problema di connettività.

    Linux/macOS

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

    Windows

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

  2. Un altro proxy sta interferendo con il proxy SOCKS. Per controllare il proxy, Esegui questo comando curl (disponibile su Linux e macOS):

    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
    
    Se vedi una risposta HTTP significa che il proxy funziona, quindi è possibile che il proxy SOCKS venga interrotto da un altro proxy o da un'altra estensione del browser.

Posso utilizzare il port forwarding locale invece di un proxy SOCKS?

Invece del proxy SOCKS, è possibile accedere alle interfacce utente delle applicazioni web in esecuzione sull'istanza master con il port forwarding locale SSH, inoltra la porta del master a una porta locale. Ad esempio, il comando seguente consente accedi a localhost:1080 per raggiungere cluster-name-m:8088 senza SOCKS (consulta Impostare le variabili di comando di uso comune):

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

L'utilizzo di un proxy SOCKS può essere preferibile al port forwarding locale poiché il proxy:

  • consente di accedere a tutte le porte delle applicazioni web senza dover configurare un tunnel di port forwarding per ogni porta UI
  • consente alle UI web di Spark e Hadoop di risolvere correttamente gli host DNS