Algunos de los componentes de software libre predeterminados incluidos en los clústeres de Google Dataproc, como Apache Hadoop y Apache Spark, proporcionan interfaces web. Estas interfaces se pueden usar para gestionar y monitorizar recursos e instalaciones de clústeres, como el gestor de recursos de YARN, el sistema de archivos distribuidos de Hadoop (HDFS), MapReduce y Spark. La pasarela de componentes proporciona acceso seguro a los endpoints web de los componentes opcionales y predeterminados de Dataproc.
Los clústeres creados con versiones de imagen de Dataproc compatibles pueden habilitar el acceso a las interfaces web de los componentes sin depender de túneles SSH ni modificar las reglas de cortafuegos para permitir el tráfico entrante.
Cuestiones importantes
- Los usuarios deben tener el permiso de gestión de identidades y accesos dataproc.clusters.use para acceder a las interfaces web de los componentes habilitados. Consulta Roles de Dataproc.
- Component Gateway se puede usar para acceder a APIs REST, como Apache Hadoop YARN y Apache Livy, así como a servidores de historial.
- Cuando la pasarela de componentes está habilitada, Dataproc añade los siguientes servicios al primer nodo maestro del clúster:
- Apache Knox. El certificado SSL predeterminado de Knox Gateway tiene una validez de 13 meses a partir de la fecha de creación del clúster. Si caduca, todas las URLs de la interfaz web de Component Gateway se desactivarán. Para obtener un certificado nuevo, consulta Regenerar el certificado SSL de Component Gateway.
- Proxy inverso
- La pasarela de componentes no permite el acceso directo a las interfaces de
node:port
, sino que hace de proxy de un subconjunto específico de servicios automáticamente. Si quieres acceder a los servicios de los nodos (node:port
), usa un proxy SOCKS SSH.
Crear un clúster con Component Gateway
Consola
La pasarela de componentes de Dataproc se activa de forma predeterminada al crear un clúster mediante la Google Cloud consola. Para inhabilitar este ajuste, desmarca la casilla Habilitar pasarela de componentes en la sección Componentes del panel Configurar clúster de la página Crear un clúster de Dataproc en Compute Engine.

Comando gcloud
Ejecuta el comando de la CLI de gcloud gcloud dataproc clusters create de forma local en una ventana de terminal o en Cloud Shell.
gcloud dataproc clusters create cluster-name \ --enable-component-gateway \ --region=region \ other args ...
API REST
Define la propiedad EndpointConfig.enableHttpPortAccess
como true
en una solicitud de
clusters.create.
Usar URLs de pasarela de componentes para acceder a interfaces web
Cuando la pasarela de componentes está habilitada en un clúster, puedes conectarte a las interfaces web de los componentes que se ejecutan en el primer nodo maestro del clúster haciendo clic en los enlaces que se proporcionan en la consola de Google Cloud . Component Gateway también define endpointConfig.httpPorts con un mapa de nombres de puertos a URLs. Como alternativa a la consola, puedes usar la herramienta de línea de comandos gcloud
o la API REST de Dataproc para ver esta información de asignación. Después, copia y pega la URL en tu navegador para conectarte con la interfaz de usuario del componente.
Consola
Ve al formulario Clusters (Clústeres) de Dataproc en la consola de Google Cloud y, a continuación, selecciona el clúster para abrir el formulario Cluster details (Detalles del clúster). Haga clic en la pestaña Interfaces web para ver una lista de enlaces de pasarela de componentes a las interfaces web de los componentes predeterminados y opcionales instalados en el clúster. Haga clic en un enlace para abrir la interfaz web que se ejecuta en el nodo maestro del clúster en su navegador local.

Comando gcloud
Ejecuta la CLI de gcloud
gcloud dataproc clusters describe
localmente en una ventana de terminal o en
Cloud Shell.
gcloud dataproc clusters describe cluster-name \ --region=region
Ejemplo de salida
... config: endpointConfig: enableHttpPortAccess: true httpPorts: HDFS NameNode:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/hdfs/ MapReduce Job History:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/jobhistory/ Spark HistoryServer:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/sparkhistory/ YARN ResourceManager:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/yarn/ YARN Application Timeline:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/apphistory/ ...
API REST
Llama a clusters.get para obtener el mapa endpointConfig.httpPorts de nombres de puertos a URLs.Usar Component Gateway con Controles del Servicio de VPC
Component Gateway es compatible con Controles de Servicio de VPC.
En cuanto a la aplicación del perímetro de servicio, las solicitudes a las interfaces a través de la pasarela de componentes se tratan como parte de la superficie de la API de Dataproc, y las políticas de acceso que controlan los permisos de dataproc.googleapis.com
también controlarán el acceso a las interfaces de usuario de la pasarela de componentes.
Component Gateway también admite configuraciones de VPC-SC que se basan en la conectividad privada de Google para clústeres de Dataproc sin direcciones IP externas, pero debes configurar manualmente tu red para permitir el acceso desde la VM principal de Dataproc a *.dataproc.cloud.google.com
a través del intervalo de IP virtuales de Google restringido 199.36.153.4/30
. Para ello, sigue estos pasos:
- Sigue las instrucciones para configurar la conectividad privada de Google para todas las APIs de Google.
- Configura el DNS con Cloud DNS o configura el DNS localmente en el nodo maestro de Dataproc para permitir el acceso a
*.dataproc.cloud.google.com
.
Configurar DNS con Cloud DNS
Crea una zona de Cloud DNS que asigne el tráfico destinado a *.dataproc.cloud.google.com
al intervalo de IPs virtuales de la API de Google restringida.
Crea una zona privada gestionada para tu red de VPC.
gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \ --description=DESCRIPTION \ --dns-name=dataproc.cloud.google.com \ --project=PROJECT_ID
ZONE_NAME es el nombre de la zona que estás creando. Por ejemplo,
vpc
. Este nombre de zona se usará en cada uno de los pasos siguientes.PROJECT_ID es el ID del proyecto que aloja tu red de VPC.
NETWORK_NAME es el nombre de tu red de VPC.
DESCRIPTION es una descripción opcional de la zona gestionada legible por humanos.
Inicia una transacción.
gcloud dns record-sets transaction start --zone=ZONE_NAME
- ZONE_NAME es el nombre de tu zona.
Añade registros DNS.
gcloud dns record-sets transaction add --name=*.dataproc.cloud.google.com. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
- ZONE_NAME es el nombre de tu zona.
gcloud dns record-sets transaction add --name=dataproc.cloud.google.com. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
- ZONE_NAME es el nombre de tu zona.
Ejecuta la transacción.
gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
ZONE_NAME es el nombre de tu zona.
PROJECT_ID es el ID del proyecto que aloja tu red de VPC.
Configurar el DNS de forma local en el nodo maestro de Dataproc con una acción de inicialización
Puedes configurar el DNS localmente en los nodos maestros de Dataproc para permitir la conectividad privada a dataproc.cloud.google.com
. Este procedimiento está pensado para pruebas y desarrollo a corto plazo. No se recomienda su uso en cargas de trabajo de producción.
Almacena provisionalmente la acción de inicialización en Cloud Storage.
cat <<EOF >component-gateway-vpc-sc-dns-init-action.sh #!/bin/bash readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)" if [[ "${ROLE}" == 'Master' ]]; then readonly PROXY_ENDPOINT=$(grep "^dataproc.proxy.agent.endpoint=" \ "/etc/google-dataproc/dataproc.properties" | \ tail -n 1 | cut -d '=' -f 2- | sed -r 's/\\([#!=:])/\1/g') readonly HOSTNAME=$(echo ${PROXY_ENDPOINT} | \ sed -n -E 's;^https://([^/?#]*).*;\1;p') echo "199.36.153.4 ${HOSTNAME} # Component Gateway VPC-SC" >> "/etc/hosts" fi EOF gcloud storage cp component-gateway-vpc-sc-dns-init-action.sh gs://BUCKET/
- BUCKET es un segmento de Cloud Storage al que se puede acceder desde el clúster de Dataproc.
Crea un clúster de Dataproc con la acción de inicialización por fases y la pasarela de componentes habilitadas.
gcloud dataproc clusters create cluster-name \ --region=region \ --initialization-actions=gs://BUCKET/component-gateway-vpc-sc-dns-init-action.sh \ --enable-component-gateway \ other args ...
- BUCKET es el segmento de Cloud Storage que se ha usado en el paso 1.
Usar APIs HTTP de forma programática a través de Component Gateway
Component Gateway es un proxy que incorpora Apache Knox. Los endpoints expuestos por Apache Knox están disponibles a través de https://component-gateway-base-url/component-path
.
Para autenticarte de forma programática con Component Gateway, envía el encabezado Proxy-Authorization
con un token de portador de OAuth 2.0.
$ ACCESS_TOKEN="$(gcloud auth print-access-token)"
$ curl -H "Proxy-Authorization: Bearer ${ACCESS_TOKEN}" "https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/jmx"
{
"beans" : [ {
"name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8031",
"modelerType" : "RpcActivityForPort8031",
"tag.port" : "8031",
"tag.Context" : "rpc",
"tag.NumOpenConnectionsPerUser" : "{\"yarn\":2}",
"tag.Hostname" : "demo-cluster-m",
"ReceivedBytes" : 1928581096,
"SentBytes" : 316939850,
"RpcQueueTimeNumOps" : 7230574,
"RpcQueueTimeAvgTime" : 0.09090909090909091,
"RpcProcessingTimeNumOps" : 7230574,
"RpcProcessingTimeAvgTime" : 0.045454545454545456,
...
Component Gateway elimina el encabezado Proxy-Authorization
antes de reenviar las solicitudes a Apache Knox.
Para encontrar la URL base de Component Gateway, ejecuta:
gcloud dataproc clusters describe
:
$ gcloud dataproc clusters describe <var>cluster-name</var> \
--region=<var>region</var>
...
endpointConfig:
enableHttpPortAccess: true
httpPorts:
HDFS NameNode: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/hdfs/dfshealth.html
MapReduce Job History: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/jobhistory/
Spark History Server: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/sparkhistory/
Tez: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/tez-ui/
YARN Application Timeline: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/
YARN ResourceManager: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/
...
La URL base son las partes del esquema y de la autoridad de las URLs de httpPorts
. En este ejemplo, es https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/
.
Regenerar el certificado SSL de Component Gateway
El certificado SSL predeterminado de Knox Gateway de Component Gateway es válido para lo siguiente:
5 años a partir de la fecha de creación del clúster de Dataproc en los clústeres creados con las versiones de imagen 2.0.93, 2.1.41, 2.2.7 y posteriores.
13 meses a partir de la fecha de creación del clúster de Dataproc en clústeres creados con versiones de imagen anteriores.
Si el certificado caduca, todas las URLs de la interfaz web de Component Gateway se desactivarán.
Si tu organización te ha proporcionado el certificado SSL, obtén uno nuevo de la organización y, a continuación, sustituye el antiguo por el nuevo.
Si utilizas el certificado SSL con firma automática predeterminado, renueva el certificado de la siguiente manera:
Usa SSH para conectarte al nodo maestro del clúster de Dataproc con el sufijo de nombre
m-0
.Busca
gateway.jks
en la ruta/var/lib/knox/security/keystores/gateway.jks
.keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
Mueve el archivo
gateway.jks
a un directorio de copia de seguridad.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Crea un certificado autofirmado reiniciando el servicio Knox.
systemctl restart knox
Verifica el estado de Component Gateway y Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
Siguientes pasos
- Crea un clúster con componentes de Dataproc.