GSP010
Descripción general
En este lab práctico, aprenderás a usar Apache Spark en Cloud Managed Service
for Spark 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.
Qué aprenderás
-
Cómo crear un clúster de Cloud Managed Service for Spark administrado con
Apache Spark
preinstalado
-
Cómo crear y ejecutar trabajos que usen paquetes externos aún no instalados
en tu clúster
- Cómo cerrar tu clúster
Requisitos previos
Este es un lab de nivel avanzado. Se recomienda estar
familiarizado con Cloud Managed Service for Spark 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 cuentan con un temporizador que no se puede pausar. El temporizador, 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 del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos 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: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la derecha, se encuentra el panel Configuración del lab y acceso, que tiene los siguientes elementos:
- El botón Abrir la consola de Google Cloud
- Las credenciales temporales (nombre de usuario y contraseña) que debes usar para este lab
- Otra información para completar el lab (si es necesaria)
Ten en cuenta que el cronómetro del lab se encuentra cerca de la parte superior de la página y muestra el tiempo restante.
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia los recursos y abre otra pestaña, en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usa otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación ni autenticación de dos factores, ya que esta cuenta es temporal.
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Introducción
Cloud Managed Service for Spark 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 Managed Service for Spark, 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 Managed Service for Spark para escalar horizontalmente
trabajos de procesamiento intensivo que cumplan con estas características:
-
El trabajo es embarazosamente paralelo; es decir, puedes
procesar diferentes subconjuntos de datos en distintas máquinas.
-
Ya tienes el código de Apache Spark que realiza el
procesamiento o ya estás familiarizado con Apache Spark.
-
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
escalado automático.
En este lab, el trabajo que ejecutarás marca los contornos de los rostros de
una imagen a través de 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.
-
En la consola de Cloud, ve a Compute Engine >
Instancias de VM > Crear instancia.
-
En la Configuración de la máquina.
Selecciona el siguiente valor:
-
Nombre:
devhost
-
Serie:
E2
-
Tipo de máquina:
e2-standard-2 (2 CPU
virtuales)
-
Haz clic en Seguridad.
-
En la sección Permisos de acceso, selecciona
Permitir el acceso total a todas las APIs de Cloud.
-
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á una puntuación de
evaluación.
Crear una máquina de desarrollo en Compute Engine.
-
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. A través de
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 Managed
Service for Spark. 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.
-
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 Managed Service for Spark 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 Managed Service for Spark.
-
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
-
Inicia la compilación. Con este comando, se compila un archivo "fat JAR" del
detector de rasgos para poder enviarlo a Cloud Managed Service for Spark:
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á una puntuación 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.
-
Recupera el ID del proyecto que se usará para asignarle un nombre a tu
bucket:
GCP_PROJECT=$(gcloud config get-value core/project)
-
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}
-
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á una puntuación de
evaluación.
Crear un bucket de Cloud Storage
- 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:



Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea
realizada. Si la completaste correctamente, se te otorgará una puntuación de
evaluación.
Descargar algunas imágenes de muestra en tu bucket
- 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 Managed Service for Spark
-
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}
-
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=e2-standard-2 \
--master-machine-type=e2-standard-2 \
--initialization-actions=gs://spls/gsp010/install-libgtk.sh \
--image-version=2.0 \
--worker-boot-disk-size=30GB \
--master-boot-disk-size=30GB
-
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
e2-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á una puntuación de
evaluación.
Crear un clúster de Cloud Managed Service for Spark.
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 Managed Service for Spark
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 Managed Service for Spark.
-
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
-
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 Managed Service for Spark:
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.
-
Supervisa el trabajo. En la consola, ve al
menú de navegación >
Managed Service for Spark > Trabajos.
Continúa con el próximo paso cuando obtengas un resultado similar al
siguiente:
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea
realizada. Si la completaste correctamente, se te otorgará una puntuación de
evaluación.
Enviar tu trabajo a Cloud Managed Service for Spark.
-
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.
-
Haz clic en la imagen del directorio Out.
-
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.
-
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.
-
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:
-
Opcional: Si quieres experimentar y mejorar el detector de rasgos, puedes
realizar cambios en el código de
FeatureDetector
y, luego, volver a ejecutar sbt assembly y los comandos
gcloud dataproc y jobs submit.
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 Managed Service for Spark y a
ejecutar trabajos.
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: 7 de julio de 2025
Prueba más reciente del lab: 7 de julio de 2025
Copyright 2026 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.