Certains des principaux composants Open Source inclus dans les clusters Dataproc, tels que Apache Hadoop et Apache Spark, fournissent des interfaces Web. Ces interfaces peuvent être utilisées pour gérer et surveiller les ressources et les installations du cluster, telles que le gestionnaire de ressources YARN, le système de fichiers HDFS (Hadoop Distributed File System), MapReduce et Spark. D'autres composants ou applications que vous installez sur votre cluster peuvent également fournir des interfaces Web (par exemple, consultez la section Installer et exécuter un notebook Jupyter sur un cluster Dataproc).
Interfaces disponibles
Les interfaces suivantes sont disponibles sur un nœud maître de cluster Dataproc (remplacez master-host-name
par le nom de votre nœud maître).
UI Web | Port | URL |
---|---|---|
Gestionnaire de ressources YARN | 80881 | http://master-host-name:8088 |
Composant NameNode HDFS | 98702,3 | http://master-host-name:9870 |
1 Dans les clusters compatibles Kerberos, le port de l'interface utilisateur Web du gestionnaire de ressources YARN est 8090 et s'exécute sur HTTPS.
2 Dans les clusters compatibles Kerberos, le port de l'interface utilisateur Web NameNode HDFS est 9871 et s'exécute sur HTTPS.
3 Dans les releases précédentes de Dataproc (antérieures à 1.2), le port de l'interface utilisateur Web NameNode HDFS était 50070.
Le gestionnaire de ressources YARN dispose de liens pour toutes les interfaces Web des applications MapReduce et Spark en cours d'exécution et terminées dans la colonne "Tracking UI" (Interface de suivi).
API REST autorisées du gestionnaire de ressources YARN
Lorsque vous créez un cluster, Dataproc définit la propriété yarn.resourcemanager.webapp.methods-allowed
du fichier yarn-site.xml sur "GET,HEAD", ce qui limite les méthodes HTTP pouvant être appelées sur l'interface utilisateur Web et les API REST du gestionnaire de ressources YARN aux méthodes GET
et HEAD
. Ce paramètre par défaut désactive également la modification et l'envoi de tâches via l'API REST YARN.
Vous pouvez ignorer les valeurs par défaut afin d'activer des méthodes HTTP spécifiques sur le port 8088. Pour ce faire, définissez cette propriété sur un ou plusieurs noms de méthodes HTTP en les séparant par des virgules. La valeur ALL
autorise toutes les méthodes HTTP sur le port.
Exemple :
gcloud dataproc clusters create cluster-name \ --properties=^#^yarn:yarn.resourcemanager.webapp.methods-allowed=GET,POST,DELETE \ --region=region \
Recommandation : Si vous définissez cette propriété pour autoriser les méthodes HTTP non définies par défaut, veillez à configurer les règles de pare-feu et les autres paramètres de sécurité pour limiter l'accès au port 8088.
Se connecter à des interfaces Web
Vous pouvez vous connecter à des interfaces Web exécutées sur un cluster Dataproc à l'aide de la passerelle des composants Dataproc, de l'environnement Cloud Shell de votre projet ou de l'outil de ligne de commande gcloud de la Google Cloud CLI:
Passerelle des composants: connectez-vous en un clic à Hadoop, Spark et aux autres interfaces utilisateur Web des composants depuis la console Google Cloud. Vous activez la passerelle des composants lorsque vous créez votre cluster.
Cloud Shell: les commandes et les utilitaires de la gcloud CLI sont préinstallés dans Cloud Shell dans la console Google Cloud. Il fournit une fonctionnalité d'aperçu sur le Web qui vous permet de vous connecter rapidement via un tunnel SSH à un port d'interface Web d'un cluster. Cependant, une connexion au cluster à partir de Cloud Shell utilise le transfert de port local, ce qui ouvre la connexion à un seul port de l'interface Web du cluster. Plusieurs commandes sont nécessaires pour se connecter à plusieurs ports. De plus, les sessions Cloud Shell se ferment automatiquement après une période d'inactivité (30 minutes).
Google Cloud CLI: la commande
gcloud compute ssh
avec le transfert de port dynamique vous permet d'établir un tunnel SSH et d'exécuter un serveur proxy SOCKS via le tunnel. Après avoir émis cette commande, vous devez configurer votre navigateur local pour utiliser le proxy SOCKS. Cette méthode de connexion vous permet de vous connecter à plusieurs ports sur l'interface Web d'un cluster. Consultez la réponse à la question Puis-je utiliser le transfert de port local au lieu d'un proxy SOCKS ? pour en savoir plus.
Définir les variables de commande couramment utilisées
Pour faciliter la copie et l'exécution d'exemples de ligne de commande sur votre machine locale ou dans Cloud Shell, définissez les variables de commande gcloud dataproc
. Des variables supplémentaires devront peut-être être définies pour certains exemples de commandes présentés sur cette page.
Linux/mac/Shell
export PROJECT=project;export HOSTNAME=hostname;export ZONE=zone
Windows
set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
- Définissez PROJECT sur l'ID de votre projet Google Cloud.
- Définissez HOSTNAME sur le nom du nœud maître dans votre cluster Dataproc (le nom du nœud maître se termine par un suffixe
-m
). - Définissez ZONE sur la zone des VM de votre cluster Dataproc (par exemple, "us-central1-b").
Créer un tunnel SSH
Commande gcloud
Exécutez la commande gcloud
suivante sur votre ordinateur local pour configurer un tunnel SSH à partir d'un port ouvert de votre ordinateur local vers l'instance maître de votre cluster, puis exécutez un serveur proxy SOCKS local à l'écoute sur le port.
Avant d'exécuter la commande sur votre ordinateur local, procédez comme suit :
- Définir les variables de commande couramment utilisées
- Définissez une variable PORT sur un port ouvert de votre ordinateur local.
Le port
1080
est un choix arbitraire, mais typique puisqu'il est susceptible d'être ouvert.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
Le séparateur --
vous permet d'ajouter des arguments SSH à la commande gcloud compute ssh
, comme suit :
-D
spécifie le transfert de port dynamique au niveau de l'application.-N
indique àgcloud
de ne pas ouvrir une interface système à distance.
Cette commande gcloud
crée un tunnel SSH qui fonctionne indépendamment des autres sessions d'interface système SSH, évite que des erreurs liées au tunnel ne surviennent dans la sortie de l'interface système et empêche les fermetures accidentelles du tunnel.
Si la commande SSH échoue avec le message d'erreur bind: Cannot assign requested address
, il est probable que le port demandé soit utilisé. Essayez d'exécuter la commande avec une autre valeur de variable PORT.
La commande ci-dessus s'exécute au premier plan et doit continuer à s'exécuter pour maintenir le tunnel actif. La commande doit se fermer automatiquement lorsque vous supprimez le cluster.
Cloud Shell
- Ouvrez Cloud Shell dans Google Cloud.
-
Exécutez la commande
gcloud
ci-dessous dans Cloud Shell pour configurer un tunnel SSH à partir d'un port d'aperçu Cloud Shell vers un port d'interface Web sur le nœud maître du cluster. Avant d'exécuter la commande dans Cloud Shell, procédez comme suit :- Définir les variables de commande couramment utilisées
- Définissez une variable PORT1 pour un port Cloud Shell dans la plage de ports 8080 – 8084. Définissez une variable PORT2 pour le port d'interface Web sur le nœud maître du cluster Dataproc.
PORT1=number PORT2=number
gcloud compute ssh ${HOSTNAME} \ --project=${PROJECT} --zone=${ZONE} -- \ -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}
Le séparateur
--
vous permet d'ajouter des arguments SSH à la commandegcloud compute ssh
, comme suit :-4
indique à SSH de n'utiliser que IPv4.-N
indique àgcloud
de ne pas ouvrir une interface système à distance.-L ${PORT1}:${HOSTNAME}:${PORT2}
spécifie le transfert de port local depuis le port PORT1 Cloud Shell spécifié vers le port HOSTNAME:PORT2 du cluster.
Cette commande
gcloud
crée un tunnel SSH qui fonctionne indépendamment des autres sessions d'interface système SSH, évite que des erreurs liées au tunnel ne surviennent dans la sortie de l'interface système et empêche les fermetures accidentelles du tunnel.
Configurer le navigateur
Commande gcloud
Le tunnel SSH est compatible avec la fonction proxy du trafic à l'aide du protocole SOCKS.
Pour configurer votre navigateur afin qu'il utilise le proxy, démarrez une nouvelle session de navigateur avec les paramètres du serveur proxy. Voici un exemple qui utilise le navigateur Google Chrome.
HOSTNAME
est le nom du nœud maître du cluster (consultez la section Définir les variables de commande couramment utilisées).
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%"
Cette commande utilise les options du navigateur Chrome suivantes :
-proxy-server="socks5://localhost:1080"
indique à Chrome d'envoyer toutes les requêtes d'URLhttp://
ethttps://
via le serveur proxy SOCKSlocalhost:${PORT}
à l'aide de la version 5 du protocole SOCKS. ${PORT} est la variable de port que vous avez définie dans la section Créer un tunnel SSH. Les noms d'hôte pour les URL sont résolus par le serveur proxy, et non localement par Chrome.--user-data-dir=/tmp/${HOSTNAME}
oblige Chrome à ouvrir une nouvelle fenêtre qui n'est pas associée à une session Chrome existante. Sans cette option, Chrome peut ouvrir une nouvelle fenêtre associée à une session Chrome existante en ignorant le paramètre--proxy-server
. La valeur définie pour--user-data-dir
peut être n'importe quel chemin inexistant.
Cloud Shell
Vous n'avez pas besoin de configurer votre navigateur local lorsque vous utilisez Cloud Shell. Une fois que vous avez créé un tunnel SSH, utilisez l'aperçu sur le Web de Cloud Shell pour vous connecter à l'interface du cluster.
Se connecter à l'interface du cluster
Commande gcloud
Une fois que votre navigateur local est configuré pour utiliser le proxy, vous pouvez accéder à l'URL de l'interface Web de votre cluster Dataproc (consultez la section Interfaces disponibles).
Le format et le contenu de l'URL du navigateur sont les suivants : http://cluster-name-m:port
(port d'interface du cluster).
Cloud Shell
Cliquez sur le bouton Aperçu sur le Web de Cloud Shell , puis sélectionnez l'une des options suivantes :
- "Preview on port 8080" (Prévisualiser sur le port 8080), ou
- "Change port" (Modifier le port) en insérant le numéro de port dans la boîte de dialogue
gcloud compute ssh
dans la section Créer un tunnel SSH.Une fenêtre de navigateur s'ouvre et permet de se connecter au port d'interface Web sur le nœud maître du cluster.
Questions fréquentes et conseils de débogage
Que faire si l'interface utilisateur ne s'affiche pas dans mon navigateur ?
Si les interfaces utilisateur ne s'affichent pas dans votre navigateur, les deux raisons les plus courantes sont les suivantes :
Un problème de connectivité réseau est survenu, probablement à cause d'un pare-feu. Exécutez la commande suivante (après avoir défini les variables locales) pour voir si vous pouvez vous connecter en SSH à l'instance maître. Si la connexion échoue, il s'agit d'un problème de connectivité.
Linux/macOS
gcloud compute ssh ${HOSTNAME}-m \ --project=${PROJECT}
Windows
gcloud compute ssh %HOSTNAME%-m ^ --project=%PROJECT%
Un autre proxy interfère avec le proxy SOCKS. Pour vérifier le proxy, exécutez la commande
curl
suivante (disponible sous Linux et 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
Puis-je utiliser le transfert de port local au lieu d'un proxy SOCKS ?
Au lieu du proxy SOCKS, il est possible d'accéder à des interfaces utilisateur d'applications Web s'exécutant sur l'instance maître avec un transfert de port local SSH qui permet de transférer le port maître vers un port local. Par exemple, la commande suivante vous permet d'accéder à localhost:1080
pour atteindre cluster-name-m:8088
sans SOCKS (consultez la section Définir les variables de commande couramment utilisées) :
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'utilisation d'un proxy SOCKS peut être préférable à un transfert de port local, car le proxy :
- vous permet d'accéder à tous les ports des applications Web sans avoir à configurer un tunnel de transfert de port pour chaque port d'interface utilisateur ;
- permet aux interfaces utilisateur Web Spark et Hadoop de résoudre correctement les hôtes DNS.