Alcuni dei componenti open source di base inclusi nei cluster Dataproc, come Apache Hadoop e Apache Spark, forniscono interfacce web. Queste interfacce possono essere utilizzate per gestire e monitorare le risorse e le strutture del cluster, come il gestore delle risorse YARN, il File System distribuito Hadoop (HDFS), MapReduce e Spark. Anche altri componenti o applicazioni installati sul cluster possono fornire interfacce web (ad es. Installazione ed esecuzione di un notebook Jupyter su un cluster Dataproc).
Interfacce disponibili
Le seguenti interfacce sono disponibili su un nodo master del cluster Dataproc (sostituisci master-host-name
con il nome del nodo master).
UI web | Porta | URL |
---|---|---|
YARN ResourceManager | 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.
Nella colonna "Interfaccia utente di monitoraggio", Resource Manager YARN contiene i link a tutte le interfacce web di MapReduce e Spark Applications attualmente in esecuzione e completate.
API REST YARN ResourceManager consentite
Quando crei un cluster, Dataproc imposta la yarn.resourcemanager.webapp.methods-allowed
proprietà
yarn-site.xml su "GET,HEAD", il che limita i metodi HTTP che possono essere chiamati nell'UI web di YARN Resource Manager e nelle
API REST
ai metodi GET
e HEAD
. Questa impostazione predefinita disattiva anche l'invio e le modifiche dei 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
i nomi degli utenti. 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à per consentire metodi HTTP non predefiniti, assicurati di configurare le regole del 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. Attiva il gateway dei componenti quando crei il cluster.
Cloud Shell: Cloud Shell nella console Google Cloud ha i comandi e le utilità dell'interfaccia a riga di comando gcloud preinstallati e offre una funzionalità di anteprima web che ti consente di connetterti rapidamente tramite un tunnel SSH a una porta dell'interfaccia web su un cluster. Tuttavia, una connessione al cluster da Cloud Shell utilizza il port forwarding locale, che apre una connessione a una sola porta su un'interfaccia web del cluster. Per connettersi a più porte sono necessari più comandi. Inoltre, le sessioni Cloud Shell escono automaticamente dopo un 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 emesso questo comando, devi configurare il browser locale in modo che utilizzi il proxy SOCKS. Questo metodo di connessione consente di connettersi a più porte su un'interfaccia web del cluster. Consulta Posso utilizzare il forwarding delle porte locali anziché un proxy SOCKS? per ulteriori informazioni.
Imposta variabili di comando di uso comune
Per semplificare la copia e l'esecuzione di esempi a riga di comando sulla tua macchina locale o in Cloud Shell, imposta le variabili di 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 del
nodo master nel
cluster Dataproc (il nome del master termina con un suffisso
-m
) - Imposta ZONE sulla zona delle VM nel cluster Dataproc (ad esempio "us-central1-b").
Crea un tunnel SSH
Comando gcloud
Esegui il seguente comando gcloud
sulla tua macchina locale per
configurare un tunnel SSH da una porta aperta sulla tua macchina locale all'
istanza principale del tuo cluster ed eseguire un server proxy SOCKS locale
in ascolto sulla porta.
Prima di eseguire il comando, sulla macchina locale:
- Impostare le variabili di comando di uso comune
- 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 argomenti SSH al comando gcloud compute ssh
, come segue:
-D
specifica il port forwarding dinamico a livello di applicazione.-N
indica agcloud
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 non va a buon fine con il messaggio di errore
bind: Cannot assign requested address
, è probabile che la porta richiesta sia in uso. Prova a eseguire il comando con un valore diverso della variabile PORT.
Il comando riportato sopra viene eseguito in primo piano e deve continuare a essere eseguito per mantenere attivo il tunnel. Il comando dovrebbe uscire automaticamente se ed eventualmente quando elimini il cluster.
Cloud Shell
- Apri Google Cloud Cloud Shell.
-
Esegui il comando
gcloud
riportato di seguito in Cloud Shell per configurare un tunnel SSH da una porta di anteprima Cloud Shell a una porta dell'interfaccia web sul nodo principale del tuo cluster. Prima di eseguire il comando, in Cloud Shell:- Impostare le variabili di comando di uso comune
- Imposta una variabile PORT1 su una porta Cloud Shell
nell'intervallo 8080-8084 e una variabile PORT2
sulla porta dell'interfaccia web sul nodo master del
tuo 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 argomenti SSH al comandogcloud compute ssh
, come segue:-4
indica a SSH di utilizzare solo IPv4.-N
indica agcloud
di non aprire una shell remota.-L ${PORT1}:${HOSTNAME}:${PORT2}
specifica il port forwarding locale dal Cloud Shell specificato PORT1 al cluster HOSTNAME:PORT2 (PORTA 2).
Questo comando
gcloud
crea un tunnel SSH che opera indipendente da altre sessioni della shell SSH, impedisce che gli errori relativi al tunnel vengano visualizzati nell'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 in modo che utilizzi il proxy, avvia una nuova sessione del browser con i parametri del server proxy. Ecco un esempio che utilizza il browser Google Chrome.
HOSTNAME
è il nome del nodo principale del cluster (vedi
Impostare le 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 URLhttp://
ehttps://
tramite SOCKS server proxylocalhost:${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 Chrome ad 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 utilizzare il proxy, puoi accedere all'URL dell'interfaccia web nel cluster Dataproc (consulta Interfacce disponibili).
L'URL del browser ha il seguente formato e contenuti:
http://cluster-name-m:port
(porta dell'interfaccia del cluster)
Cloud Shell
Fai clic su Anteprima web di Cloud Shell. pulsante , quindi seleziona una delle seguenti opzioni:
- "Anteprima sulla porta 8080" oppure
- "Cambia porta" e inserisci il numero di porta nella finestra di dialogo
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 browser?
Se non vedi le UI nel browser, i due motivi più comuni sono:
Si è verificato un problema di connettività di rete, probabilmente a causa di un firewall. Esegui il seguente comando (dopo aver impostato le variabili locali) per verificare se riesci ad accedere all'istanza principale 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%
Un altro proxy interferisce con il proxy SOCKS. Per controllare il proxy, esegui il seguente 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
Posso utilizzare il port forwarding locale invece di un proxy SOCKS?
Anziché utilizzare il proxy SOCKS, è possibile accedere alle UI delle applicazioni web in esecuzione
sulla tua istanza principale con il port forwarding locale SSH, che
inoltra la porta principale 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 all'utilizzo dell'inoltro delle porte locali 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