Alcuni dei componenti open source principali 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 funzionalità del cluster, come YARN Resource Manager, Hadoop Distributed File System (HDFS), MapReduce e Spark. Anche altri componenti o applicazioni installati sul cluster potrebbero fornire interfacce web (vedi, ad esempio, 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 |
| HDFS NameNode | 98702,3 | http://master-host-name:9870 |
1 Nei cluster con Kerberos abilitato, la porta dell'UI web di YARN ResourceManager è 8090 e viene eseguita su HTTPS.
2 Nei cluster con Kerberos abilitato, la porta dell'UI web di HDFS Namenode è 9871 e viene eseguita su HTTPS.
3 Nelle versioni precedenti di Dataproc (pre-1.2), la porta dell'UI web di HDFS Namenode era 50070.
YARN ResourceManager include link a tutte le interfacce web delle applicazioni MapReduce e Spark attualmente in esecuzione e completate nella colonna "UI di monitoraggio".
API REST di YARN Resource Manager consentite
Quando crei un cluster, Dataproc
imposta la proprietà yarn.resourcemanager.webapp.methods-allowed
di yarn-site.xml
su "GET,HEAD", che limita i metodi HTTP che possono essere chiamati sull'
UI web e sulle
API REST
di YARN Resource Manager ai metodi GET e HEAD. Questa impostazione predefinita disabilita anche
l'invio e le modifiche dei job tramite l'API REST di YARN.
Puoi eseguire l'override dei valori predefiniti per abilitare metodi HTTP specifici
sulla porta 8088 impostando questa proprietà su uno o più nomi di metodi HTTP
separati da virgole. 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 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 il gateway dei componenti di Dataproc, Cloud Shell del tuo progetto o lo strumento a riga di comando gcloud della Google Cloud CLI:
Gateway dei componenti: connettiti con un solo clic alle interfacce web di Hadoop, Spark e altri componenti Web UI dalla Google Cloud console. Abilita il gateway dei componenti quando crei il cluster.
Cloud Shell: Cloud Shell nella Google Cloud console ha i comandi e le utilità della gcloud CLI preinstallati e fornisce 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. Sono necessari più comandi per connettersi a più porte. Inoltre, le sessioni di Cloud Shell vengono chiuse automaticamente dopo un periodo di inattività (30 minuti).
Google Cloud CLI: il comando
gcloud compute sshcon il port forwarding dinamico consente di stabilire un tunnel SSH ed eseguire un server proxy SOCKS sul tunnel. Dopo aver eseguito questo comando, devi configurare il browser locale per utilizzare il proxy SOCKS. Questo metodo di connessione ti consente di connetterti a più porte su un'interfaccia web del cluster. Per ulteriori informazioni, consulta Posso utilizzare il port forwarding locale anziché un proxy SOCKS? .
Impostare le variabili dei comandi di uso comune
Per semplificare la copia e l'esecuzione degli esempi di riga di comando sulla macchina locale
o in Cloud Shell più semplice,
imposta le variabili dei comandi gcloud dataproc. Per alcuni degli esempi di comandi mostrati in questa pagina potrebbe essere necessario impostare variabili aggiuntive.
Linux/mac/Shell
export PROJECT=project;export HOSTNAME=hostname;export ZONE=zone
Windows
set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
- Imposta PROJECT sull'ID del Google Cloud progetto
- Imposta HOSTNAME sul nome del
nodo master nel tuo
cluster Dataproc (il nome master termina con il suffispaceholder4/ suffix)
-m - Imposta ZONE sulla zona delle VM nel cluster Dataproc (ad esempio, "us-central1-b")
Creare un tunnel SSH
Comando gcloud
Esegui il seguente gcloud comando sulla macchina locale per
configurare un tunnel SSH da una porta aperta sulla macchina locale all'
istanza master del cluster ed eseguire un server proxy SOCKS locale
in ascolto sulla porta.
Prima di eseguire il comando, sulla macchina locale:
- Imposta le variabili dei comandi di uso comune
- Imposta una variabile PORT su una porta aperta sulla macchina locale.
La porta
1080è una scelta arbitraria ma tipica, poiché è probabile che sia aperta.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 -- consente di aggiungere
SSH
al comando gcloud compute ssh, come segue:
-Dspecifica il port forwarding dinamico a livello di applicazione.-Nindica agclouddi non aprire una shell remota.
Questo comando gcloud crea un tunnel SSH che funziona
indipendentemente dalle altre sessioni della shell SSH, mantiene gli errori relativi al tunnel fuori
dall'output della shell e aiuta a prevenire chiusure involontarie del tunnel.
Se il comando ssh non va a buon fine con il messaggio di errore
bind: Cannot assign requested address, una causa probabile è che
la porta richiesta sia in uso. Prova a eseguire il comando con un valore diverso della variabile
PORT.
Il comando precedente viene eseguito in primo piano e deve continuare a essere eseguito per mantenere attivo il tunnel. Il comando deve essere chiuso automaticamente se e quando elimini il cluster.
Cloud Shell
-
Apri Google Cloud Cloud Shell.
-
Esegui il comando
gcloudriportato di seguito in Cloud Shell per configurare un tunnel SSH da una porta di anteprima di Cloud Shell a una porta dell'interfaccia web sul nodo master del cluster. Prima di eseguire il comando, in Cloud Shell :- Imposta le variabili dei comandi di uso comune
- Imposta una variabile PORT1 su una porta di Cloud Shell nell'intervallo di porte 8080-8084 e imposta una variabile PORT2 sulla porta dell'interfaccia web sul nodo master del cluster Dataproc.
PORT1=number PORT2=number
gcloud compute ssh ${HOSTNAME} \ --project=${PROJECT} --zone=${ZONE} -- \ -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}Il separatore
--consente di aggiungere SSH argomenti al comandogcloud compute ssh, come segue:-4indica a ssh di utilizzare solo IPv4.-Nindica agclouddi non aprire una shell remota.-L ${PORT1}:${HOSTNAME}:${PORT2}specifica il port forwarding locale dalla PORT1 di Cloud Shell specificata a HOSTNAME:PORT2 del cluster.
Questo comando
gcloudcrea un tunnel SSH che funziona indipendentemente dalle altre sessioni della shell SSH, mantiene gli errori relativi al tunnel fuori dall'output della shell e aiuta a prevenire chiusure involontarie del tunnel.
Configurare il browser
Comando gcloud
Il tunnel SSH supporta il proxy del traffico utilizzando il protocollo SOCKS.
Per configurare il browser in modo che utilizzi il 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
Impostare le variabili dei comandi 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"indica a Chrome di inviare tutte le richieste di URLhttp://ehttps://tramite il server proxy SOCKSlocalhost:${PORT}, utilizzando la versione 5 del protocollo SOCKS. ${PORT} è la variabile della porta che hai impostato in Creare 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 collegata a una sessione di Chrome esistente, ignorando l'impostazione--proxy-server. Il valore impostato per--user-data-dirpuò essere qualsiasi percorso inesistente.
Cloud Shell
Non devi configurare il browser locale quando utilizzi Cloud Shell. Dopo aver creato un tunnel SSH, utilizza l'anteprima web di Cloud Shell per connetterti all'interfetti del cluster.
Connettersi all'interfaccia del cluster
Comando gcloud
Una volta configurato il browser locale per utilizzare il proxy, puoi accedere all'URL dell'interfaccia web sul cluster Dataproc (vedi
Interfacce disponibili).
L'URL del browser ha il seguente formato e contenuto:
http://cluster-name-m:port (porta dell'interfaccia del cluster)
Cloud Shell
Fai clic sul pulsante Anteprima web
di Cloud Shell
,
quindi seleziona:
- "Anteprima sulla porta 8080" o
- "Cambia porta" e inserisci il numero di porta nella finestra di dialogo
gcloud compute ssh
comando in
Creare un tunnel SSH.
Si apre una finestra del browser che si connette alla porta dell'interfaccia web sul nodo master del cluster.
Domande frequenti e suggerimenti per il debug
Cosa succede se non vedo l'UI nel browser?
Se non vedi le UI nel browser, i due motivi più comuni sono:
Hai un problema di connettività di rete, probabilmente a causa di un firewall. Esegui il comando seguente (dopo aver impostato le variabili locali) per verificare se riesci ad accedere tramite SSH all'istanza master. Se non 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
curlcomando (disponibile su Linux e macOS):Se vedi una risposta HTTP, il proxy funziona, quindi è possibile che il proxy SOCKS venga interrotto da un altro proxy o da un'estensione del browser.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 anziché un proxy SOCKS?
Anziché il proxy SOCKS, è possibile accedere alle UI delle applicazioni web in esecuzione
sull'istanza master con il port forwarding locale SSH, che
inoltra la porta del master a una porta locale. Ad esempio, il seguente comando ti consente
di accedere a localhost:1080 per raggiungere cluster-name-m:8088 senza SOCKS
(vedi Impostare le variabili dei comandi 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 potrebbe 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 dell'UI
- Consente alle UI web di Spark e Hadoop di risolvere correttamente gli host DNS