1. Descripción general
Cloud Dataproc es un servicio administrado de Spark y Hadoop con el que puedes aprovechar herramientas de datos de código abierto para procesamientos por lotes, consultas, transmisiones y aprendizaje automático. Con la automatización de Cloud Dataproc, podrás crear clústeres rápidamente, administrarlos con facilidad y ahorrar dinero desactivándolos cuando no los necesites. Al invertir menos tiempo y dinero en tareas de administración, podrás enfocarte en tus trabajos y datos.
Este instructivo está adaptado de https://cloud.google.com/dataproc/overview
Qué aprenderás
- Cómo crear un clúster de Cloud Dataproc administrado (con Apache Spark preinstalado)
- Cómo enviar un trabajo de Spark
- Cómo cambiar el tamaño de un clúster
- Cómo establecer una conexión SSH al nodo principal de un clúster de Dataproc
- Cómo usar gcloud para examinar clústeres, trabajos y reglas de firewall
- Cómo cerrar tu clúster
Requisitos
¿Cómo usarás este instructivo?
¿Cómo calificarías tu experiencia en el uso de los servicios de Google Cloud Platform?
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a la consola de Cloud y crea un proyecto nuevo o reutiliza uno existente. (Si todavía no tienes una cuenta de Gmail o de G Suite, debes crear una).
Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID
.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar los recursos de Google Cloud recursos.
Ejecutar este codelab no debería costar mucho, tal vez nada. Asegúrate de seguir las instrucciones de la sección “Realiza una limpieza” en la que se aconseja cómo cerrar recursos para no incurrir en facturación más allá de este instructivo. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
3. Habilita las API de Cloud Dataproc y Google Compute Engine
Haz clic en el ícono de menú ubicado en la parte superior izquierda de la pantalla.
Selecciona el Administrador de API en el menú desplegable.
Haz clic en Habilitar APIs y servicios.
Busca "Compute Engine". en el cuadro de búsqueda. Haz clic en “API de Google Compute Engine”. en la lista de resultados que aparece.
En la página de Google Compute Engine, haz clic en Habilitar.
Una vez que se habilite, haz clic en la flecha que apunta a la izquierda para volver.
Ahora busca “API de Google Cloud Dataproc”. y habilitarla también.
4. Inicie Cloud Shell
Esta máquina virtual basada en Debian está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Esto significa que todo lo que necesitarás para este Codelab es un navegador (sí, funciona en una Chromebook).
- Para activar Cloud Shell desde la consola de Cloud, solo haz clic en Activar Cloud Shell (el aprovisionamiento y la conexión al entorno debería llevar solo unos minutos).
Una vez conectado a Cloud Shell, debería ver que ya se autenticó y que el proyecto ya se configuró con tu PROJECT_ID
:
gcloud auth list
Resultado del comando
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Resultado del comando
[core] project = <PROJECT_ID>
Si, por algún motivo, el proyecto no está configurado, solo emite el siguiente comando:
gcloud config set project <PROJECT_ID>
Si no conoce su PROJECT_ID
, Observa el ID que usaste en los pasos de configuración o búscalo en el panel de la consola de Cloud:
Cloud Shell también configura algunas variables de entorno de forma predeterminada, lo que puede resultar útil cuando ejecutas comandos futuros.
echo $GOOGLE_CLOUD_PROJECT
Resultado del comando
<PROJECT_ID>
- Establece la zona predeterminada y la configuración del proyecto.
gcloud config set compute/zone us-central1-f
Puedes elegir una variedad de zonas diferentes. Para obtener más información, consulta Regiones y zonas.
5. Crea un clúster de Cloud Dataproc
Después del inicio de Cloud Shell, puedes usar la línea de comandos para invocar el comando de gcloud del SDK de Cloud o cualquier otra herramienta disponible en la instancia de la máquina virtual.
Elige un nombre de clúster para usarlo en este lab:
$ CLUSTERNAME=${USER}-dplab
Comencemos creando un clúster nuevo:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
La configuración predeterminada del clúster, que incluye nodos de dos trabajadores, debería ser suficiente para este instructivo. El comando anterior incluye la opción --zone
para especificar la zona geográfica en la que se creará el clúster y dos opciones avanzadas, --scopes
y --tags
, que se explican a continuación cuando usas las funciones que habilitan. Consulta el comando gcloud dataproc clusters create
del SDK de Cloud para obtener información sobre cómo usar marcas de línea de comandos para personalizar la configuración del clúster.
6. Envía un trabajo de Spark a tu clúster
Puedes enviar un trabajo a través de una solicitud jobs.submit
a la API de Cloud Dataproc, con la herramienta de línea de comandos gcloud
o desde Google Cloud Platform Console. También puedes conectarte a una instancia de máquina en tu clúster mediante SSH y, luego, ejecutar un trabajo desde la instancia.
Enviemos un trabajo con la herramienta de gcloud
desde la línea de comandos de Cloud Shell:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
A medida que se ejecute el trabajo, verás el resultado en tu ventana de Cloud Shell.
Interrumpe el resultado ingresando a Control+C. Esto detendrá el comando gcloud
, pero el trabajo seguirá ejecutándose en el clúster de Dataproc.
7. Muestra una lista de trabajos y vuelve a conectarte
Cómo imprimir una lista de trabajos:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
El trabajo enviado más reciente se encuentra en la parte superior de la lista. Copia el ID de trabajo y pégalo en el lugar de "jobId
". en el siguiente comando. El comando se volverá a conectar al trabajo especificado y mostrará su resultado:
$ gcloud dataproc jobs wait jobId
Cuando finalice el trabajo, el resultado incluirá una aproximación del valor de pi.
8. Cambiar el tamaño del clúster
Para ejecutar procesamientos más grandes, es posible que desees agregar más nodos a tu clúster para acelerarlo. Dataproc te permite agregar y quitar nodos de tu clúster en cualquier momento.
Examina la configuración del clúster:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Para agrandar el clúster, agrega algunos nodos interrumpibles:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
Examina el clúster nuevamente:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Ten en cuenta que, además del workerConfig
de la descripción original del clúster, ahora hay un secondaryWorkerConfig
que incluye dos instanceNames
para los trabajadores interrumpibles. Dataproc muestra el estado del clúster como listo mientras se inician los nodos nuevos.
Como comenzaste con dos nodos y ahora tienes cuatro, tus trabajos de Spark deberían ejecutarse casi el doble de rápido.
9. Establecer conexión SSH al clúster
Conéctate mediante SSH al nodo principal, cuyo nombre de instancia siempre es el nombre del clúster con -m
agregado:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
La primera vez que ejecutes un comando SSH en Cloud Shell, se generarán claves SSH para tu cuenta allí. Puedes elegir una frase de contraseña, o bien usar una en blanco por el momento y cambiarla más tarde con ssh-keygen
si lo deseas.
En la instancia, verifica el nombre de host:
$ hostname
Debido a que especificaste --scopes=cloud-platform
cuando creaste el clúster, puedes ejecutar comandos de gcloud
en tu clúster. Obtén una lista de los clústeres de tu proyecto:
$ gcloud dataproc clusters list
Sal de la conexión SSH cuando termines:
$ logout
10. Examina las etiquetas
Cuando creaste el clúster, incluiste una opción --tags
para agregar una etiqueta a cada nodo del clúster. Las etiquetas se usan para adjuntar reglas de firewall a cada nodo. No creaste ninguna regla de firewall que coincida en este codelab, pero aún puedes examinar las etiquetas de un nodo y las reglas de firewall de la red.
Muestra la descripción del nodo principal:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
Busca tags:
cerca del final del resultado y observa que incluya codelab
.
Imprime las reglas de firewall:
$ gcloud compute firewall-rules list
Observa las columnas SRC_TAGS
y TARGET_TAGS
. Cuando adjuntas una etiqueta a una regla de firewall, puedes especificar que se deba usar en todos los nodos que tengan esa etiqueta.
11. Cierra tu clúster
Puedes cerrar un clúster a través de una solicitud clusters.delete
a la API de Cloud Dataproc, desde la línea de comandos con el ejecutable gcloud dataproc clusters delete
o desde Google Cloud Platform Console.
Apaga el clúster con la línea de comandos de Cloud Shell:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. ¡Felicitaciones!
Aprendiste a crear un clúster de Dataproc, enviar un trabajo de Spark, cambiar el tamaño de un clúster, usar SSH para acceder a tu nodo principal, usar gcloud para examinar clústeres, trabajos y reglas de firewall, y apagar tu clúster con gcloud.
Más información
- Documentación de Dataproc: https://cloud.google.com/dataproc/overview
- Codelab Cómo comenzar a usar Dataproc con Console
Licencia
Esta obra se ofrece bajo una licencia genérica de Creative Commons Attribution 3.0 y Apache 2.0.