arrow_back

Procesamiento distribuido de imágenes en Cloud Dataproc

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Procesamiento distribuido de imágenes en Cloud Dataproc

Lab 1 hora universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP010

Labs de autoaprendizaje de Google Cloud

Descripción general

En este lab práctico, aprenderás a usar Apache Spark en Cloud Dataproc para distribuir una tarea de procesamiento de imágenes intensiva desde un punto de vista informático en un clúster de máquinas. Este lab es parte de una serie de labs sobre procesamiento de datos científicos.

Aprendizajes esperados

  • Cómo crear un clúster de Cloud Dataproc administrado con Apache Spark preinstalado
  • Cómo compilar y ejecutar trabajos que usan paquetes externos aún no instalados en su clúster
  • Cómo cerrar su clúster

Requisitos previos

Este es un lab de nivel avanzado. Se recomienda estar familiarizado con Cloud Dataproc y Apache Spark, aunque no es obligatorio. Si quieres ponerte al día con estos servicios, asegúrate de consultar los siguientes labs:

Cuando tengas todo listo, desplázate hacia abajo para obtener más información sobre los servicios que usarás en este lab.

Configuración

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Introducción

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.

Procura usar Cloud Dataproc para escalar horizontalmente trabajos de procesamiento intensivo que cumplan con estas características:

  1. El trabajo es embarazosamente paralelo; es decir, puedes procesar diferentes subconjuntos de datos en distintas máquinas.
  2. Ya tienes el código de Apache Spark que realiza el procesamiento o ya estás familiarizado con Apache Spark.
  3. La distribución del trabajo es bastante uniforme en todos tus subconjuntos de datos.

Si los diferentes subconjuntos requieren distinta cantidad de procesamiento (o si todavía no conoces Apache Spark), Apache Beam en Cloud Dataflow es una alternativa interesante porque proporciona canalizaciones de datos con ajuste de escala automático.

En este lab, el trabajo que ejecutarás marca los contornos de los rostros de una imagen mediante un conjunto de reglas de procesamiento de imagen especificado en OpenCV. Usar la API de Vision es una manera más eficaz de hacer esto, ya que ese tipo de reglas codificadas a mano no funcionan demasiado bien, pero este lab es un ejemplo de cómo realizar un trabajo de procesamiento intensivo de forma distribuida.

Tarea 1: Crea una máquina de desarrollo en Compute Engine

Primero, crea una máquina virtual para alojar tus servicios.

  1. En la consola de Cloud, ve a Compute Engine > Instancias de VM > Crear instancia.

La ruta de navegación al botón Crear instancia, que está destacado

  1. Configura los siguientes campos y deja los demás con sus valores predeterminados:

    • Nombre: devhost

    • Serie: N1

    • Tipo de máquina: 2 CPU virtuales (instancia n1-standard-2)

    • Identidad y acceso a la API: Permitir el acceso total a todas las APIs de Cloud

    La página Crear instancia, en la que se muestran los campos completados mencionados en el paso 2.

  2. Haz clic en Crear. Esta máquina funcionará como host “de bastión” de desarrollo.

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si la completaste correctamente, se te otorgará un puntaje de evaluación.

Crear una máquina de desarrollo en Compute Engine.
  1. Establece una conexión SSH a la instancia haciendo clic en el botón SSH de la consola.

Tarea 2: Instala el software

Ahora, configura el software para que ejecute el trabajo. Mediante sbt, una herramienta de compilación de código abierto, compilarás el archivo JAR para el trabajo que enviarás al clúster de Cloud Dataproc. Ese archivo contendrá el programa y los paquetes obligatorios necesarios para ejecutar el trabajo. El trabajo detectará los rostros de un conjunto de archivos de imagen almacenado en un bucket de Cloud Storage y escribirá archivos de imagen con el contorno de los rostros en el mismo bucket de Cloud Storage o en otro.

  1. Configura Scala y sbt. En la ventana de SSH, instala Scala y sbt con los siguientes comandos para poder compilar el código:
sudo apt-get install -y dirmngr unzip sudo apt-get update sudo apt-get install -y apt-transport-https echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add sudo apt-get update sudo apt-get install -y bc scala sbt

Ahora, compilarás los archivos del detector de rasgos. El código de este lab corresponde a una leve modificación de una solución que existe en el repositorio de Cloud Dataproc en GitHub. Descargarás el código y, luego, ejecutarás cd en el directorio de este lab y compilarás un archivo “fat JAR” del detector de rasgos para poder enviarlo a Cloud Dataproc.

  1. Ejecuta los siguientes comandos en la ventana de SSH:
sudo apt-get update gsutil cp gs://spls/gsp124/cloud-dataproc.zip . unzip cloud-dataproc.zip cd cloud-dataproc/codelabs/opencv-haarcascade
  1. Inicia la compilación. Con este comando, se compila un archivo “fat JAR” del detector de rasgos para poder enviarlo a Cloud Dataproc:
sbt assembly Nota: Este paso tardará un poco más de cinco minutos en completarse. Ten paciencia.

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si la completaste correctamente, se te otorgará un puntaje de evaluación.

Instalar software en la máquina de desarrollo.

Tarea 3: Crea un bucket de Cloud Storage y recopila imágenes

Ahora que ya compilaste los archivos del detector de rasgos, crea un bucket de Cloud Storage y agrega algunas imágenes de muestra.

  1. Recupera el ID del proyecto que se usará para asignarle un nombre a tu bucket:
GCP_PROJECT=$(gcloud config get-value core/project)
  1. Asígnale un nombre a tu bucket y establece en ese nombre una variable de shell, que se usará en comandos que hagan referencia a él:
MYBUCKET="${USER//google}-image-${RANDOM}" echo MYBUCKET=${MYBUCKET}
  1. Usa el programa gsutil, que se incluye con gcloud en el SDK de Cloud, para crear un bucket que contenga tus imágenes de muestra:
gsutil mb gs://${MYBUCKET}

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si la completaste correctamente, se te otorgará un puntaje de evaluación.

Crear un bucket de Cloud Storage
  1. Descarga algunas imágenes de muestra en tu bucket:
curl https://www.publicdomainpictures.net/pictures/20000/velka/family-of-three-871290963799xUk.jpg | gsutil cp - gs://${MYBUCKET}/imgs/family-of-three.jpg curl https://www.publicdomainpictures.net/pictures/10000/velka/african-woman-331287912508yqXc.jpg | gsutil cp - gs://${MYBUCKET}/imgs/african-woman.jpg curl https://www.publicdomainpictures.net/pictures/10000/velka/296-1246658839vCW7.jpg | gsutil cp - gs://${MYBUCKET}/imgs/classroom.jpg

Acabas de descargar las siguientes imágenes en tu bucket de Cloud Storage:

Una familia de tres personas

Una mujer

Un aula

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si la completaste correctamente, se te otorgará un puntaje de evaluación.

Descargar algunas imágenes de muestra en tu bucket
  1. Ejecuta el siguiente comando para ver el contenido del bucket:
gsutil ls -R gs://${MYBUCKET}

Resultado:

gs://gcpstaging20392-student-image-23218/imgs/: gs://gcpstaging20392-student-image-23218/imgs/african-woman.jpg gs://gcpstaging20392-student-image-23218/imgs/classroom.jpg gs://gcpstaging20392-student-image-23218/imgs/family-of-three.jpg `

Tarea 4: Crea un clúster de Cloud Dataproc

  1. Ejecuta los siguientes comandos en la ventana de SSH para asignarle un nombre al clúster y configurar la variable MYCLUSTER. Usarás la variable en comandos para hacer referencia al clúster:
MYCLUSTER="${USER/_/-}-qwiklab" echo MYCLUSTER=${MYCLUSTER}
  1. Establece una región global de Compute Engine para crear y usar un nuevo clúster:
gcloud config set dataproc/region {{{project_0.default_region | "REGION"}}} gcloud dataproc clusters create ${MYCLUSTER} --bucket=${MYBUCKET} --worker-machine-type=n1-standard-2 --master-machine-type=n1-standard-2 --initialization-actions=gs://spls/gsp010/install-libgtk.sh --image-version=2.0
  1. Si se te solicita usar una zona en lugar de una región, ingresa Y.

Esto podría tardar unos minutos. La configuración predeterminada del clúster, que incluye dos nodos trabajadores, debería ser suficiente para este lab. Para reducir la cantidad general de núcleos que usa el clúster, se especifica n1-standard-2 como el tipo de máquina de instancia principal y de trabajador.

Para la marca initialization-actions, pasarás una secuencia de comandos que instala la biblioteca libgtk2.0-dev en cada una de tus máquinas de clústeres. Esta biblioteca se necesitará para ejecutar el código.

Nota: Si el clúster no se crea, intenta borrar tu clúster (gcloud dataproc clusters delete ${MYCLUSTER}) y, luego, vuelve a ejecutar el comando anterior de creación de clúster.

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si la completaste correctamente, se te otorgará un puntaje de evaluación.

Crear un clúster de Cloud Dataproc. Nota: Si quieres obtener más información sobre cómo usar marcas de línea de comandos para personalizar la configuración de clústeres, consulta la referencia del SDK de Cloud gcloud dataproc clusters create.

Tarea 5: Envía tu trabajo a Cloud Dataproc

En este lab, el programa que ejecutas se usa como un detector de rostros, por lo que el clasificador haar ingresado debe describir un rostro. Un clasificador haar es un archivo XML que se usa para describir rasgos que detectará el programa. Descargarás el archivo del clasificador haar y, luego, incluirás su ruta de Cloud Storage en el primer argumento cuando envíes tu trabajo al clúster de Cloud Dataproc.

  1. Ejecuta el siguiente comando en la ventana de SSH para cargar el archivo de configuración de detección de rostro en tu bucket:
curl https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml | gsutil cp - gs://${MYBUCKET}/haarcascade_frontalface_default.xml
  1. Usa el conjunto de imágenes que subiste al directorio imgs en el bucket de Cloud Storage como datos de entrada para el detector de rasgos. Debes incluir la ruta a ese directorio como segundo argumento del comando de envío de trabajos.
  • Envía tu trabajo a Cloud Dataproc:
cd ~/cloud-dataproc/codelabs/opencv-haarcascade gcloud dataproc jobs submit spark \ --cluster ${MYCLUSTER} \ --jar target/scala-2.12/feature_detector-assembly-1.0.jar -- \ gs://${MYBUCKET}/haarcascade_frontalface_default.xml \ gs://${MYBUCKET}/imgs/ \ gs://${MYBUCKET}/out/

Puedes agregar otras imágenes al bucket de Cloud Storage especificado en el segundo argumento.

  1. Supervisa el trabajo. En la consola, ve al menú de navegación > Dataproc > Trabajos.

Continúa con el próximo paso cuando obtengas un resultado similar al siguiente:

El resultado del trabajo muestra que se ejecutó de forma correcta

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si la completaste correctamente, se te otorgará un puntaje de evaluación.

Enviar tu trabajo a Cloud Dataproc.
  1. Cuando se complete el trabajo, ve al menú de navegación > Cloud Storage. Busca el bucket que creaste (tendrá tu nombre de usuario seguido de student-image y de un número aleatorio) y haz clic en él.

  2. Haz clic en la imagen del directorio Out.

  3. Haz clic en el ícono Descargar, la imagen se descargará en tu computadora.

¿Qué tan exacta es la detección de rostros? Usar la API de Vision es una manera más efectiva de hacer esto, ya que este tipo de reglas codificadas a mano no funcionan demasiado bien. A continuación, podrás ver cómo funciona.

  1. En tu bucket, ve a la carpeta imgs y haz clic en las otras imágenes que subiste al bucket (opcional). Se descargarán las tres imágenes de muestra. Guárdalas en tu computadora.

  2. Haz clic en este vínculo para ir a la página de la API de Vision, desplázate hacia abajo hasta la sección Probar la API y sube las imágenes que descargaste de tu bucket. En apenas segundos, verás los resultados de la detección de imagen. Dado que los modelos subyacentes de aprendizaje automático mejoran constantemente, es posible que los resultados difieran:

Detección de rostro en la mujer Detección de rostro en el aula Detección de rostro en la familia de tres personas

  1. Si quieres experimentar y mejorar el detector de rasgos, puedes realizar cambios en el código FeatureDetector y, luego, volver a ejecutar sbt assembly y los comandos gcloud dataproc y jobs submit (opcional).

Tarea 6: Pon a prueba tus conocimientos

A continuación, se presentan algunas preguntas de opción múltiple para reforzar tus conocimientos de los conceptos de este lab. Trata de responderlas lo mejor posible.

¡Felicitaciones!

Aprendiste a iniciar un clúster de Cloud Dataproc y a ejecutar trabajos.

Finaliza la Quest

Este lab de autoaprendizaje forma parte de la Quest Scientific Data Processing. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en esta Quest y obtén un crédito inmediato de realización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.

Realiza tu próximo lab

Continúa tu Quest con Análisis de datos de natalidad mediante Datalab y BigQuery o prueba una de los siguientes labs:

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Última actualización del manual: 18 de julio de 2023

Prueba más reciente del lab: 18 de julio de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.