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 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?

Ler Leer y completar los ejercicios

¿Cómo calificarías tu experiencia en 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 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.

2bfc27ef9ba2ec7d.png

Selecciona el Administrador de API 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 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.

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

493928df54f61386.png

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

Licencia

Esta obra se ofrece bajo una licencia genérica de Creative Commons Attribution 3.0 y Apache 2.0.