Algunos de los componentes de código abierto predeterminados incluidos en los clústeres de Managed Service para Apache Spark de Google, 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. La puerta de enlace de componentes proporciona acceso seguro a los extremos web para los componentes predeterminados y opcionales de Managed Service para Apache Spark.
Los clústeres creados con versiones de imágenes compatibles de Managed Service para Apache Spark pueden habilitar el acceso a las interfaces web de componentes sin depender de túneles SSH ni modificar reglas de firewall para permitir el tráfico entrante.
Consideraciones
- Los usuarios deben tener el permiso de Identity and Access Management dataproc.clusters.use para acceder a las interfaces web de los componentes habilitados. Consulta Roles de Managed Service para Apache Spark.
- La puerta de enlace de componentes se puede usar para acceder a las APIs de REST, como Apache Hadoop YARN y Apache Livy, y los servidores de historial.
- Cuando la puerta de enlace de componentes está habilitada, Managed Service para Apache Spark agrega los siguientes servicios al primer nodo principal del clúster:
- Apache Knox. El certificado SSL predeterminado de Knox Gateway es válido durante 13 meses a partir de la fecha de creación del clúster. Si vence, todas las URLs de la interfaz web de Component Gateway se volverán inactivas. Para obtener un certificado nuevo, consulta Cómo regenerar el certificado SSL de Component Gateway.
- Proxy de inversión
- La puerta de enlace de componentes no habilita el acceso directo a las interfaces
node:port, sino que envía automáticamente por proxy un subconjunto específico de servicios. Si deseas acceder a los servicios en los nodos (node:port), usa un proxy SSH SOCKS.
Crea un clúster con Component Gateway
Consola deGoogle Cloud
Las IU de los componentes de Managed Service para Apache Spark (a través de Component Gateway) están habilitadas de forma predeterminada cuando creas un clúster con la consola de Google Cloud . Para inhabilitar este parámetro de configuración, desmarca la casilla de verificación Habilitar componentes en la IU:
- Abre la página Crear clúster.
- Haz clic en Configuración adicional para expandir esa sección.
- Edita Componentes opcionales.
- En el panel que se abre, selecciona o borra la casilla de verificación Habilitar componentes en la IU.
- Haz clic en Guardar.
Comando de gcloud CLI
Ejecuta el comando gcloud dataproc clusters create de la gcloud CLI 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 de REST
Configura la propiedad EndpointConfig.enableHttpPortAccess como true como parte de una solicitud clusters.create.
Usa las URLs de la puerta de enlace de componentes para acceder a las interfaces web
Cuando la puerta de enlace de componentes está habilitada en un clúster, se puede hacer clic en los vínculos proporcionados en la consola de Google Cloud para conectarse a las interfaces web de los componentes que se ejecutan en el primer nodo principal del clúster. Component Gateway también establece endpointConfig.httpPorts con un mapa de nombres de puertos a URLs. Como alternativa al uso de la consola, puedes usar la herramienta de línea de comandos gcloud o la API de REST de Dataproc para ver esta información de asignación y, luego, copiar y pegar la URL en tu navegador para conectarte con la IU del componente.
Console
Navega hasta el formulario Clústeres de Managed Service para Apache Spark en la consola de Google Cloud y, luego, selecciona tu clúster para abrir el formulario Detalles del clúster. Haz clic en la pestaña Web Interfaces (Interfaces web) para ver una lista de los vínculos de puerta de enlace de componentes a las interfaces web de los componentes predeterminados y opcionales instalados en el clúster. Haz clic en un vínculo para abrir la interfaz web que se ejecuta en el nodo principal del clúster en tu navegador local.
Comando de gcloud CLI
Ejecuta el comando gcloud dataproc clusters describe de gcloud CLI de forma local en una ventana de la terminal o en Cloud Shell.
gcloud dataproc clusters describe cluster-name \ --region=region
Resultado de muestra:
...
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 de REST
Llama a clusters.get para obtener la asignación endpointConfig.httpPorts de nombres de puertos a URL.Usa Component Gateway con VPC-SC
La puerta de enlace de componentes es compatible con los controles del servicio de VPC.
Para la aplicación del perímetro de servicio, las solicitudes a las interfaces mediante la puerta de enlace de componentes se incluyen como parte de la superficie de la API de Dataproc y cualquier política de acceso que controle los permisos de dataproc.googleapis.com también controlará el acceso a las IU de puerta de enlace de componentes.
Component Gateway también admite configuraciones de VPC-SC que dependen de la conectividad privada de Google para los clústeres de Managed Service para Apache Spark sin direcciones IP externas, pero debes configurar manualmente tu red para permitir el acceso desde la VM principal de Managed Service para Apache Spark a *.dataproc.cloud.google.com a través del rango de IP virtuales restringidas de Google 199.36.153.4/30. Para ello, haz lo siguiente:
- Sigue las instrucciones a fin de configurar la conectividad privada de Google para todas las API de Google.
- Configura DNS con Cloud DNS o configura DNS de forma local en el nodo principal de Managed Service para Apache Spark para permitir el acceso a
*.dataproc.cloud.google.com.
Configura DNS con Cloud DNS
Crea una zona de Cloud DNS que asigne el tráfico destinado para *.dataproc.cloud.google.com al rango restringido de IP virtual de la API de Google.
Crea una zona privada administrada 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 un nombre para la zona que estás creando. Por ejemplo,
vpcEste nombre de zona se usará en cada uno de los siguientes pasos.PROJECT_ID es el ID del proyecto que aloja tu red de VPC.
NETWORK_NAME es el nombre de la red de VPC.
DESCRIPTION es una descripción opcional y legible de la zona administrada.
Inicia una transacción.
gcloud dns record-sets transaction start --zone=ZONE_NAME
- ZONE_NAME es el nombre de la zona.
Agrega 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 la 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 la zona.
Ejecuta la transacción.
gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
ZONE_NAME es el nombre de la zona.
PROJECT_ID es el ID del proyecto que aloja la red de VPC.
Configura el DNS de forma local en el nodo principal de Managed Service para Apache Spark con una acción de inicialización
Puedes configurar DNS de forma local en los nodos principales de Managed Service para Apache Spark para permitir la conectividad privada a dataproc.cloud.google.com. Este procedimiento está diseñado para la realización de pruebas y desarrollo a corto plazo. No se recomienda su uso en cargas de trabajo de producción.
Almacena la acción de inicialización en Cloud Storage en etapa intermedia.
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-managed-spark/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 bucket de Cloud Storage al que se puede acceder desde el clúster de Managed Service para Apache Spark.
Crea un clúster de Managed Service para Apache Spark con la acción de inicialización almacenada en etapa intermedia y con la puerta de enlace de componentes habilitada.
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 bucket de Cloud Storage que se usó en el paso 1.
Usa las APIs de HTTP de manera programática a través de Component Gateway
La puerta de enlace de componentes es un proxy que incorpora Apache Knox. Los extremos que expone Apache Knox están disponibles a través de https://component-gateway-base-url/component-path.
Para autenticar de manera programática con la puerta de enlace de componentes, pasa el encabezado Proxy-Authorization con un token del 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,
...
La puerta de enlace de componentes quita el encabezado Proxy-Authorization antes de reenviar las solicitudes a Apache Knox.
Para encontrar la URL base de la puerta de enlace de componentes, 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 URL en httpPorts. En este ejemplo, es https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/.
Regenera el certificado SSL de Component Gateway
El certificado SSL predeterminado de la puerta de enlace de Knox de la puerta de enlace de componentes es válido para lo siguiente:
5 años a partir de la fecha de creación del clúster de Managed Service para Apache Spark en clústeres creados con versiones de imágenes 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 Managed Service para Apache Spark en clústeres creados con versiones anteriores de la imagen
Si el certificado vence, todas las URLs de la interfaz web de Component Gateway se desactivarán.
Si tu organización proporcionó el certificado SSL, obtén uno nuevo y, luego, reemplaza el antiguo por el nuevo.
Si usas el certificado SSL autofirmado predeterminado, renuévalo de la siguiente manera:
Usa SSH para conectarte a la instancia principal del clúster de Managed Service para Apache Spark con el sufijo de nombre
m-0.Ubica
gateway.jksen la ruta de acceso/var/lib/knox/security/keystores/gateway.jks.keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
Mueve el archivo
gateway.jksa un directorio de copia de seguridad.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Para crear un certificado autofirmado nuevo, reinicia el servicio de Knox.
systemctl restart knox
Verifica el estado de Component Gateway y Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
¿Qué sigue?
- Crea un clúster con componentes de Managed Service para Apache Spark.