Algunos de los componentes de código abierto predeterminados incluidos en los clústeres de Google Managed Service para Apache Spark, 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 imagen 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 componentes habilitadas. Consulta Roles de Managed Service para Apache Spark.
- La puerta de enlace de componentes se puede usar para acceder a las API 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 la puerta de enlace de componentes se desactivan. Para obtener un certificado nuevo, consulta Cómo regenerar el certificado SSL de la puerta de enlace de componentes.
- 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 la puerta de enlace de componentes
Console
La puerta de enlace de componentes de Managed Service para Apache Spark se activa de forma predeterminada cuando creas un clúster con la consola de. Google Cloud Para inhabilitar esta configuración, desmarca la casilla de verificación Habilitar la puerta de enlace de componentes en la sección Componentes del panel Configurar clúster en la página Crear un clúster de Managed Service para Apache Spark en Compute Engine de Managed Service para Apache Spark.
Comando de gcloud
Ejecuta el comando gcloud CLI gcloud dataproc clusters create de forma local en una ventana de la 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 Google Cloud consola de para conectarse a las interfaces web
de los componentes que se ejecutan en el primer nodo principal del clúster. La puerta de enlace de componentes también establece
endpointConfig.httpPorts
con una asignación de nombres de puertos a URL. Como alternativa al uso de la consola,
puedes usar la herramienta de línea de comandos gcloud
o la API de REST de Managed Service para Apache Spark para ver esta información de asignación.
Luego, copia y pega la URL en el navegador para conectarte a 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 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
Ejecuta el comando gcloud CLI
gcloud dataproc clusters describe
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 endpointConfig.httpPorts de nombres de puertos a URL.Usa la puerta de enlace de componentes 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 Managed Service para Apache Spark 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.
La puerta de enlace de componentes también admite configuraciones de VPC-SC que dependen de
la conectividad privada de Google
para clústeres de Managed Service para Apache Spark sin direcciones IP externas. Sin embargo, debes
configurar la red de forma manual para permitir el acceso de la VM principal de Managed Service para Apache Spark
a *.dataproc.cloud.google.com a través del rango restringido de IP virtual de Google
199.36.153.4/30
mediante los siguientes pasos:
- Sigue las instrucciones a fin de configurar la conectividad privada de Google para todas las API de Google.
- Configura DNS con Cloud DNS o 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 tu red de VPC.
Configura DNS de forma local en el nodo principal de Managed Service para Apache Spark mediante 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-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 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 API de HTTP de manera programática a través de la puerta de enlace de componentes
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 la puerta de enlace de componentes
El certificado SSL predeterminado de Knox Gateway 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 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 Managed Service para Apache Spark en clústeres creados con versiones de imagen anteriores.
Si el certificado vence, todas las URLs de la interfaz web de la puerta de enlace de componentes se desactivan.
Si tu organización proporcionó el certificado SSL, obtén uno nuevo de la organización y, luego, reemplaza el certificado 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
m-0sufijo de nombre.Ubica
gateway.jksen la/var/lib/knox/security/keystores/gateway.jksruta de acceso.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 la puerta de enlace de componentes y de Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
¿Qué sigue?
- Crea un clúster con componentes de Managed Service para Apache Spark.