Cómo aprovisionar y usar un clúster administrado de Hadoop/Spark con Cloud Dataproc (línea de comandos)

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 se adaptó 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?

Ler Leer y completar los ejercicios

¿Cómo calificarías tu experiencia con el uso de los servicios de Google Cloud Platform?

Principiante Intermedio Avanzado

2. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. 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).

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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.

  1. 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 que no se te facture 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 APIs de Cloud Dataproc y Google Compute Engine

Haz clic en el ícono de menú ubicado en la parte superior izquierda de la pantalla.

2bfc27ef9ba2ec7d.png

Selecciona API Manager en el menú desplegable.

408af5f32c4b7c25.png

Haz clic en Habilitar APIs y servicios.

a9c0e84296a7ba5b.png

Busca "Compute Engine" en el cuadro de búsqueda. Haz clic en "API de Google Compute Engine" en la lista de resultados que aparece.

b6adf859758d76b3.png

En la página de Google Compute Engine, haz clic en Habilitar.

da5584a1cbc77104.png

Una vez habilitada, haz clic en la flecha que apunta hacia la izquierda para volver.

Ahora busca la "API de Google Cloud Dataproc" y habilítala también.

f782195d8e3d732a.png

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).

  1. Para activar Cloud Shell desde la consola de Cloud, solo haz clic en Activar Cloud ShellfEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (el aprovisionamiento y la conexión al entorno debería llevar solo unos minutos).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Captura de pantalla del 14 de junio de 2017 a las 10.13.43 p.m. .png

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:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

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>
  1. 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 de que se inicie Cloud Shell, puedes usar la línea de comandos para invocar el comando 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 usar en este lab:

$ CLUSTERNAME=${USER}-dplab

Comencemos por crear 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 dos nodos 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 uses 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 de 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 con SSH y, luego, ejecutar un trabajo desde la instancia.

Enviemos un trabajo con la herramienta 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 la ventana de Cloud Shell.

Interrumpe el resultado ingresando Control-C. Esto detendrá el comando gcloud, pero el trabajo seguirá ejecutándose en el clúster de Dataproc.

7. Enumera trabajos y vuelve a conectar

Imprime una lista de trabajos:

$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}

El trabajo enviado más recientemente se encuentra en la parte superior de la lista. Copia el ID del trabajo y pégalo en 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.

493928df54f61386.png

8. Cambiar el tamaño del clúster

Para ejecutar cálculos 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

Vuelve a examinar el clúster:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Ten en cuenta que, además del workerConfig de la descripción original del clúster, ahora también 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 aproximadamente el doble de rápido.

9. Establece una conexión SSH con el clúster

Conéctate a través de 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 usar una en blanco por ahora y cambiarla más adelante con ssh-keygen si lo deseas.

En la instancia, verifica el nombre de host:

$ hostname

Como especificaste --scopes=cloud-platform cuando creaste el clúster, puedes ejecutar comandos gcloud en él. Enumera los clústeres de tu proyecto:

$ gcloud dataproc clusters list

Cuando termines, sal de la conexión SSH:

$ logout

10. Cómo examinar 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 coincidente en este codelab, pero aún puedes examinar las etiquetas en un nodo y las reglas de firewall en la red.

Imprime la descripción del nodo principal:

$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c

Busca tags: cerca del final del resultado y verifica que incluya codelab.

Imprime las reglas de firewall:

$ gcloud compute firewall-rules list

Observa las columnas SRC_TAGS y TARGET_TAGS. Si adjuntas una etiqueta a una regla de firewall, puedes especificar que se debe usar en todos los nodos que tengan esa etiqueta.

11. Cierra el clúster

Puedes apagar un clúster a través de una solicitud clusters.delete de la API de Cloud Dataproc, desde la línea de comandos con el ejecutable gcloud dataproc clusters delete o desde la consola de Google Cloud.

Cerraremos 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 cerrar tu clúster con gcloud.

Más información

Licencia

Esta obra se ofrece bajo una licencia Creative Commons Atribución 3.0 genérica y una licencia Apache 2.0.