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 strutture dei cluster, come il Resource Manager YARN, HDFS (Hadoop Distributed File System), MapReduce e Spark. Anche altri componenti o applicazioni che installi sul cluster potrebbero fornire interfacce web (vedi, ad esempio, Installare ed eseguire un blocco note 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 tuo nodo master).
UI web | Porta | URL |
---|---|---|
Resource Manager YARN1 | 80882 | http://master-host-name:8088 |
NameNode HDFS | 98703,4 | http://master-host-name:9870 |
1 L'interfaccia utente di Yarn ResourceManager non è supportata sui cluster ad alta disponibilità di Dataproc.
2 Nei cluster abilitati per Kerberos, la porta dell'interfaccia utente web di YARN ResourceManager è 8090 e viene eseguita su HTTPS.
3 Nei cluster abilitati per Kerberos, la porta dell'interfaccia utente web HDFS Namenode è 9871 e viene eseguita su HTTPS.
4 Nelle release precedenti di Dataproc (precedenti alla 1.2), la porta della UI web di HDFS Namenode era 50070.
YARN ResourceManager contiene link a tutte le interfacce web delle applicazioni MapReduce e Spark attualmente in esecuzione e completate nella colonna "UI di monitoraggio".
API REST YARN ResourceManager consentite
Quando crei un cluster, Dataproc
imposta la proprietà yarn.resourcemanager.webapp.methods-allowed
yarn-site.xml
su "GET,HEAD", che limita i metodi HTTP che possono essere richiamati
sulla UI web e sulle
API REST
YARN ai metodi GET
e HEAD
. Questa impostazione predefinita disattiva anche l'invio dei job e le modifiche tramite l'API REST YARN.
Puoi eseguire l'override dei valori predefiniti per attivare 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 \
Suggerimento: se imposti questa proprietà in modo da consentire i 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 Dataproc, Cloud Shell del progetto o lo strumento a riga di comando gcloud di Google Cloud CLI:
Gateway dei componenti: connettiti con un solo clic a Hadoop, Spark e alle interfacce UI web di altri componenti dalla console Google Cloud. Puoi abilitare il gateway dei componenti quando crei il cluster.
Cloud Shell: in Cloud Shell nella console Google Cloud sono preinstallati i comandi e le utilità gcloud CLI 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 si chiudono automaticamente dopo un periodo di inattività (30 minuti).
Google Cloud CLI: il comando
gcloud compute ssh
con il port forwarding dinamico ti consente di stabilire un tunnel SSH ed eseguire un server proxy SOCKS sopra il 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 sull'interfaccia web di un cluster. Vedi Posso utilizzare il port forwarding locale anziché un proxy SOCKS? per ulteriori informazioni.
Imposta variabili di comando di uso comune
Per semplificare la copia e l'esecuzione di esempi di riga di comando sulla tua macchina locale o in Cloud Shell, imposta le variabili di comando gcloud dataproc
. Potrebbe essere necessario impostare altre variabili per alcuni 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 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 macchina locale per configurare un tunnel SSH da una porta aperta sulla macchina locale all'istanza master del cluster, quindi esegui 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 nella tua 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 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 funziona
in modo indipendente dalle altre sessioni della shell SSH, tiene gli errori relativi al tunnel fuori
dall'output della shell e aiuta a evitare chiusure involontarie del tunnel.
Se il comando ssh restituisce il messaggio di errore bind: Cannot assign requested address
, probabilmente la porta è in uso. Prova a eseguire il comando con un valore della variabile PORT diverso.
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 e quando elimini il cluster.
Cloud Shell
- Apri Google Cloud Cloud Shell.
-
Esegui il comando
gcloud
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 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 di porte 8080-8084, quindi imposta una variabile PORT2 sulla porta dell'interfaccia web sul nodo master sul tuo 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 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 dalla PORT1 di Cloud Shell specificata al cluster HOSTNAME:PORT2.
Questo comando
gcloud
crea un tunnel SSH che funziona in modo indipendente dalle altre sessioni della shell SSH, tiene gli errori relativi al tunnel fuori dall'output della shell e aiuta a evitare chiusure involontarie del tunnel.
Configura il browser
Comando gcloud
Il tunnel SSH supporta il proxy del traffico mediante il protocollo SOCKS.
Per configurare il browser per l'utilizzo del proxy, avvia una nuova sessione del browser con i parametri del server proxy. Di seguito è riportato un esempio in cui viene utilizzato il browser Google Chrome.
HOSTNAME
è il nome del nodo master del cluster (consulta la sezione 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"
indica a Chrome di inviare tutte le richieste URLhttp://
ehttps://
tramite il server proxy SOCKSlocalhost:${PORT}
, utilizzando la versione 5 del protocollo SOCKS. ${PORT} è la variabile della porta che hai impostato in 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 che 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-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 l'anteprima web di Cloud Shell per connetterti all'interfaccia del cluster.
Connettiti all'interfaccia del cluster
Comando gcloud
Dopo aver configurato il browser locale per l'utilizzo del proxy, puoi accedere all'URL dell'interfaccia web sul cluster Dataproc (consulta la sezione Interfacce disponibili).
L'URL del browser ha il formato e i contenuti seguenti:
http://cluster-name-m:port
(porta dell'interfaccia del cluster)
Cloud Shell
Fai clic sul pulsante Anteprima web di Cloud Shell , quindi seleziona una delle seguenti opzioni:
- "Anteprima sulla porta 8080" o
- "Cambia porta" e inserisci il numero di porta nella finestra di dialogo
gcloud compute ssh
in
Crea 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
Che cosa succede se non vedo l'interfaccia utente nel browser?
Se non vedi le UI nel tuo browser, i due motivi più comuni sono:
Si è verificato un problema di connettività di rete, probabilmente a causa di un firewall. Esegui questo comando (dopo aver impostato le variabili locali) per vedere se puoi connetterti all'istanza master tramite SSH. In caso contrario, 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 sta interferendo con il proxy SOCKS. Per verificare 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
Posso utilizzare il port forwarding locale anziché un proxy SOCKS?
Anziché utilizzare il proxy SOCKS, puoi accedere alle UI delle applicazioni web in esecuzione sull'istanza master con il port forwarding SSH locale, che inoltra la porta del master a una porta locale. Ad esempio, il seguente comando consente di accedere 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'uso di un proxy SOCKS può essere preferibile all'utilizzo di port forwarding locale poiché il proxy:
- consente di accedere a tutte le porte delle applicazioni web senza dover configurare un tunnel di port forwarding
- consente alle UI web di Spark e Hadoop di risolvere correttamente gli host DNS