Interfaces web de clústeres

Algunos de los componentes principales de código abierto incluidos en los clústeres de Google Cloud Dataproc, como Apache Hadoop y Apache Spark, proporcionan interfaces web. Estas interfaces se pueden usar para administrar y supervisar los recursos y las instalaciones del clúster, como el administrador de recursos YARN, el sistema de archivos distribuidos de Hadoop (HDFS), MapReduce y Spark. Otros componentes o aplicaciones que instales en tu clúster también pueden proporcionar interfaces web (consulta, por ejemplo, Instala y ejecuta un notebook de Jupyter en un clúster de Cloud Dataproc).

Interfaces disponibles

Las siguientes interfaces están disponibles en un nodo maestro del clúster de Cloud Dataproc (reemplaza master-host-name con el nombre de tu nodo maestro).

IU web Puerto URL
YARN ResourceManager 8088 http://master-host-name:8088
HDFS NameNode 9870* http://master-host-name:9870

* En versiones anteriores de Cloud Dataproc (pre-1.2), el puerto de IU web HDFS Namenode era 50070.

El YARN ResourceManager tiene vínculos para todas las interfaces web actualmente ejecutadas y completadas de las aplicaciones MapReduce y Spark en la columna “IU de seguimiento”.

Conéctate a interfaces web

Puedes conectarte a las interfaces web que se ejecutan en un clúster de Cloud Dataproc con el Cloud Shell de tu proyecto o la herramienta de línea de comandos de gcloud del SDK de Cloud:

  • Cloud Shell: el Cloud Shell en Google Cloud Platform Console tiene preinstalados los comandos y las utilidades del SDK de Cloud y proporciona una característica de Vista previa en la Web que te permite conectarte con rapidez a través de un túnel SSH a un puerto de interfaz web en un clúster. Sin embargo, una conexión al clúster desde Cloud Shell usa la redirección de puertos local, lo que abre una conexión a un solo puerto en una interfaz web de clúster. Se necesitan múltiples comandos para conectarse a múltiples puertos. Además, las sesiones de Cloud Shell terminan de forma automática después de un período de inactividad (30 minutos).

  • Herramienta de línea de comandos de gcloud: el comando gcloud compute ssh con redirección de puertos dinámica te permite establecer un túnel SSH y ejecutar un servidor proxy SOCKS por encima del túnel. Después de emitir este comando, debes configurar tu navegador local para que use el proxy SOCKS. Este método de conexión te permite conectarte a varios puertos en una interfaz web de clúster. Consulta ¿Puedo usar la redirección de puertos local de un proxy SOCKS? para obtener más información.

Establece variables de comando de uso común

Para facilitar la copia y ejecución de ejemplos de línea de comandos en tu máquina local o en Cloud Shell, configura variables de comando de gcloud dataproc. Es posible que sea necesario configurar variables adicionales para algunos de los ejemplos de comandos que se muestran en esta página.

Linux/mac/Shell

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

Windows

set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
  • Configura el PROYECTO a tu ID del proyecto de Google Cloud Platform.
  • Configura el NOMBRE DE HOST al nombre de nodo principal en tu clúster de Cloud Dataproc (el nombre principal termina con un sufijo -m).
  • Configura ZONA a la zona de las VM en tu clúster de Cloud Dataproc (por ejemplo, “us-central1-b”)

Crea un túnel SSH

Comando de gcloud

Ejecuta el siguiente comando de gcloud en tu máquina local para configurar un túnel SSH desde un puerto abierto en tu máquina local hasta la instancia principal de tu clúster, y ejecuta un servidor proxy SOCKS local que escuche en el puerto.

Antes de ejecutar el comando, haz lo siguiente en tu máquina local:

  1. Establece variables de comando de uso común.
  2. Configura una variable de PUERTO en un puerto abierto en tu máquina local. El puerto 1080 es una opción arbitraria, pero típica, ya que es probable que esté abierto.
    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

El separador -- te permite agregar argumentos SSH al comando de gcloud compute ssh de la siguiente manera:

  • -D especifica la redirección de puertos dinámica a nivel de aplicación.
  • -N indica a gcloud que no abra un shell remoto.

Este comando de gcloud crea un túnel SSH que funciona de manera independiente de otras sesiones de shell SSH, mantiene los errores relacionados con el túnel fuera de la salida de shell y ayuda a prevenir cierres involuntarios del túnel.

Si el comando ssh falla con el mensaje de error bind: Cannot assign requested address, una causa probable es que el puerto solicitado esté en uso. Intenta ejecutar el comando con otro valor de variable PUERTO.

El comando anterior se ejecuta en primer plano y debe seguir en ejecución para mantener el túnel activo. El comando debe finalizar de forma automática, siempre y cuando se borre el clúster.

Cloud Shell

  1. Abre Cloud Shell en Google Cloud Platform.
  2. Ejecuta en Cloud Shell el comando de gcloud que se encuentra a continuación para configurar un túnel SSH desde un puerto de vista previa de Cloud Shell a un puerto de interfaz web en el nodo principal de tu clúster. Antes de ejecutar el comando, haz lo siguiente en Cloud Shell:

    1. Establece variables de comando de uso común.
    2. Establece una variable de PUERTO1 en un puerto de Cloud Shell en el rango de puerto 8080 - 8084 y establece una variable PUERTO2 en el puerto de interfaz web en el nodo principal de tu clúster de Cloud Dataproc.
      PORT1=number
      PORT2=number
      
    gcloud compute ssh ${HOSTNAME} \
        --project=${PROJECT} --zone=${ZONE}  -- \
        -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}
    

    El separador -- te permite agregar argumentos SSH al comando gcloud compute ssh de la siguiente manera:

    • -4 indica a ssh que solo use IPv4.
    • -N indica a gcloud que no abra un shell remoto.
    • -L ${PORT1}:${HOSTNAME}:${PORT2} especifica la redirección de puertos local desde el PUERTO1 de Cloud Shell al clúster NOMBRE DE HOST:PUERTO2.

    Este comando de gcloud crea un túnel SSH que funciona de manera independiente de otras sesiones de shell SSH, mantiene los errores relacionados con el túnel fuera de la salida de shell y ayuda a prevenir cierres involuntarios del túnel.

Configura tu navegador

Comando de gcloud

Tu túnel SSH es compatible con el proxy de tráfico mediante el protocolo SOCKS. Para configurar tu navegador a fin de que use el proxy, inicia una nueva sesión de navegador con los parámetros del servidor proxy. A continuación, verás un ejemplo que usa el navegador Google Chrome. HOSTNAME es el nombre del nodo principal del clúster (consulta Establece variables de comando de uso común).

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

Este comando usa las siguientes marcas del navegador Google Chrome:

  • -proxy-server="socks5://localhost:1080" indica a Chrome que envíe todas las solicitudes de URL http:// y https:// a través del servidor proxy SOCKS localhost:${PORT}, mediante la versión 5 del protocolo SOCKS. ${PORT} es la variable de puerto que estableces en Crea un túnel SSH. Los nombres de host para las URL se resuelven mediante el servidor proxy, no lo hace Chrome de manera local.
  • --user-data-dir=/tmp/${HOSTNAME} obliga a Chrome a abrir una nueva ventana que no está vinculada a una sesión de Chrome existente. Sin esta marca, Chrome puede ignorar la configuración --proxy-server y abrir una nueva ventana adjunta a una sesión de Chrome existente. El valor establecido para --user-data-dir puede ser cualquier ruta no existente.

Cloud Shell

No es necesario que configures tu navegador local cuando uses Cloud Shell. Después de crear un túnel SSH, usa la vista previa de Cloud Shell para conectarte a la interfaz del clúster.

Conéctate a la interfaz del clúster

Comando de gcloud

Una vez que tu navegador local está configurado para usar el proxy, puedes navegar a la URL de la interfaz web en tu clúster de Cloud Dataproc (consulta Interfaces disponibles). La URL del navegador tiene el siguiente formato y contenido: http://cluster-name-m:port (puerto de interfaz del clúster)

Cloud Shell

Haz clic en el botón Vista previa web-preview-button de Cloud Shell y, luego, selecciona una de las siguientes opciones:

  • “Preview on port 8080” (Vista previa en puerto 8080), o
  • “Change port” (Cambiar puerto) y, luego, inserta el número de puerto en el diálogo
de acuerdo con el número de PUERTO1 de Cloud Shell (puerto 8080 - 8084) que pasaste al comando de gcloud compute ssh en Crear un túnel SSH.

Se abre una ventana del navegador que se conecta al puerto de la interfaz web en el nodo principal del clúster. En la siguiente captura de pantalla, se muestra una ventana del navegador que se conecta a través del puerto 8084 de Cloud Shell a una interfaz de notebook de Cloud Datalab que se ejecuta en el nodo principal del clúster.

Preguntas frecuentes y sugerencias de depuración

¿Qué pasa si no veo la IU en mi navegador?

Si no ves las IU en tu navegador, las siguientes son las dos razones más comunes:

  1. Tienes un problema de conectividad de red, que probablemente se deba a un firewall. Ejecuta el siguiente comando (después de configurar las variables locales) para comprobar si puedes conectarte a la instancia principal mediante SSH. Si no puedes hacerlo, entonces hay un problema de conectividad.

    Linux/macOS

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

    Windows

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

  2. Otro proxy está interfiriendo en el proxy SOCKS. Para verificar el proxy, ejecuta el siguiente comando curl (disponible en Linux y 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
    
    Si ves una respuesta HTTP, el proxy está funcionando, por lo que es posible que otro proxy o una extensión del navegador interrumpa el proxy SOCKS.

¿Puedo usar la redirección de puertos local en lugar de un proxy SOCKS?

En lugar del proxy SOCKS, es posible acceder a las IU de la aplicación web que se ejecutan en tu instancia principal con la redirección de puertos local SSH, que redirecciona el puerto principal a un puerto local. Por ejemplo, el siguiente comando te permite acceder a localhost:1080 para alcanzar cluster-name-m:8088 sin SOCKS (consulta Establece variables de comando de uso común):

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

El uso de un proxy SOCKS puede ser preferible al uso de la redirección de puertos local, ya que el proxy tiene las siguientes características:

  • te permite acceder a todos los puertos de aplicaciones web sin tener que configurar un túnel de redirección de puertos para cada puerto de IU.
  • permite que las interfaces de usuario web de Spark y Hadoop resuelvan los hosts DNS de forma correcta.
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Dataproc
¿Necesitas ayuda? Visita nuestra página de asistencia.