Usa el complemento de JupyterLab de Dataproc para sesiones interactivas y por lotes sin servidores

En este documento, se describe cómo instalar y usar el complemento de JupyterLab de Dataproc en una máquina o VM que tenga acceso a los servicios de Google, como tu máquina local o una instancia de VM de Compute Engine. También se describe cómo desarrollar y implementar el código de notebooks de Spark.

Una vez que instales el complemento de JupyterLab de Dataproc, podrás usarlo para realizar las siguientes tareas:

  • Cómo iniciar sesiones de notebooks interactivos de Dataproc Serverless para Spark
  • Envía trabajos por lotes de Dataproc Serverless

Limitaciones y consideraciones de Dataproc Serverless

  • Los trabajos de Spark se ejecutan con la identidad de la cuenta de servicio, no con la identidad del usuario que lo envía.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Dataproc API.

    Enable the API

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Enable the Dataproc API.

    Enable the API

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init

Instala el complemento de JupyterLab de Dataproc

Puedes instalar y usar el complemento de JupyterLab de Dataproc en una máquina o VM que tenga acceso a los servicios de Google, como tu máquina local o una instancia de VM de Compute Engine.

Para instalar el complemento, sigue estos pasos:

  1. Descarga e instala la versión 3.8 o una posterior de Python desde python.org/downloads.

    • Verifica la instalación de Python 3.8 o versiones posteriores.

      python3 --version
  2. Instala JupyterLab 3.6.3+ en tu máquina.

    pip3 install --upgrade jupyterlab
    • Verifica la instalación de JupyterLab 3.6.3 o versiones posteriores.

       pip3 show jupyterlab
       ```
  3. Instala el complemento de JupyterLab de Dataproc.

    pip3 install dataproc-jupyter-plugin
    • Si tu versión de JupyterLab es anterior a 4.0.0, habilita la extensión del complemento.

       jupyter server extension enable dataproc_jupyter_plugin
       ```
  4. Inicia JupyterLab.

    jupyter lab
    1. Se abrirá la página Launcher de JupyterLab en tu navegador. Contiene una sección Sesiones y trabajos de Dataproc. También puede contener secciones de Notebooks de Dataproc sin servidores y Notebooks de clúster de Dataproc si tienes acceso a notebooks sin servidores de Dataproc o a clústeres de Dataproc con el componente opcional de Jupyter en ejecución en tu proyecto.

    2. De forma predeterminada, tu sesión interactiva de Dataproc Serverless para Spark se ejecuta en el proyecto y la región que estableciste cuando ejecutaste gcloud init en Antes de comenzar. Puedes cambiar la configuración del proyecto y la región de tus sesiones en la página Settings > Dataproc Settings de JupyterLab.

Crea una plantilla de entorno de ejecución de Dataproc Serverless

Las plantillas del entorno de ejecución de Dataproc Serverless (también llamadas plantillas session) contienen parámetros de configuración para ejecutar código de Spark en una sesión. Puedes crear y administrar plantillas de entorno de ejecución con Jupyterlab o gcloud CLI.

JupyterLab

  1. Haz clic en la tarjeta New runtime template en la sección Notebooks de Dataproc Serverless en la página Launcher de JupyterLab.

  2. Completa el formulario Plantilla de entorno de ejecución.

  3. Especifica un Nombre visible y una Descripción y, luego, ingresa o confirma los demás parámetros de configuración.

    Notas:

    • Configuración de red: La subred debe tener habilitado el Acceso privado a Google y permitir la comunicación de subred en todos los puertos (consulta Configuración de red de Dataproc sin servidores para Spark).

      Si la subred de la red default de la región que configuraste cuando ejecutaste gcloud init en Antes de comenzar no está habilitada para el Acceso privado a Google, haz lo siguiente:

      • Habilitarlo para el Acceso privado a Google
      • Selecciona otra red con una subred regional que tenga habilitado el Acceso privado a Google. Puedes cambiar la región que usa Dataproc Serverless desde la página Configuración > Configuración de Dataproc de JupyterLab.
    • Metastore: Para usar un servicio de Dataproc Metastore en tus sesiones, selecciona el ID, la región y el servicio del proyecto de metastore.

    • Tiempo de inactividad máximo: Es el tiempo máximo de inactividad del notebook antes de que finalice la sesión. Rango permitido: De 10 minutos a 336 horas (14 días).

    • Tiempo máximo de sesión: Es la duración máxima de una sesión antes de que finalice. Rango permitido: De 10 minutos a 336 horas (14 días).

    • PHS: Puedes seleccionar un servidor de historial persistente de Spark disponible para acceder a los registros de sesión durante y después de las sesiones.

    • Propiedades de Spark: Haz clic en Agregar propiedad para cada propiedad que quieras configurar para tus sesiones de Spark sin servidor. Consulta Propiedades de Spark para obtener una lista de las propiedades compatibles y no compatibles con Spark, incluidas las propiedades de entorno de ejecución, recursos y ajuste de escala automático de Spark.

    • Etiquetas: Haz clic en Agregar etiqueta para cada etiqueta que desees configurar en tus sesiones de Spark sin servidor.

  4. Consulta tus plantillas de tiempo de ejecución en la página Configuración > Configuración de Dataproc.

    • Puedes borrar una plantilla desde el menú Acción de la plantilla.
  5. Haz clic en Guardar.

  6. Abre y vuelve a cargar la página Launcher de JupyterLab para ver la tarjeta de plantilla de notebook guardada en la página Launcher de JupyterLab.

gcloud

  1. Crea un archivo YAML con la configuración de tu plantilla de entorno de ejecución.

    YAML simple

    environmentConfig:
      executionConfig:
        networkUri: default
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    description: Team A Development Environment
    

    YAML complejo

    environmentConfig:
      executionConfig:
        serviceAccount: sa1
        # Choose either networkUri or subnetworkUri
        networkUri: default
        subnetworkUri: subnet
        networkTags:
         - tag1
        kmsKey: key1
        idleTtl: 3600s
        ttl: 14400s
        stagingBucket: staging-bucket
      peripheralsConfig:
        metastoreService: projects/my-project-id/locations/us-central1/services/my-metastore-id
        sparkHistoryServerConfig:
          dataprocCluster: projects/my-project-id/regions/us-central1/clusters/my-cluster-id
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    runtimeConfig:
      version: "1.1"
      containerImage: gcr.io/my-project-id/my-image:1.0.1
      properties:
        "p1": "v1"
    description: Team A Development Environment
    

    Si la subred de la red default de la región que configuraste cuando ejecutaste gcloud init en Antes de comenzar no está habilitada para el Acceso privado a Google, haz lo siguiente:

    • Habilitarlo para el Acceso privado a Google
    • Selecciona otra red con una subred regional que tenga habilitado el Acceso privado a Google. Puedes cambiar la región que usa Dataproc Serverless desde la página Configuración > Configuración de Dataproc de JupyterLab.
  2. Para crear una plantilla de sesión (en tiempo de ejecución) a partir de tu archivo YAML, ejecuta el siguiente comando gcloud beta dataproc session-templates import de forma local o en Cloud Shell:

    gcloud beta dataproc session-templates import TEMPLATE_ID \
        --source=YAML_FILE \
        --project=PROJECT_ID \
        --location=REGION
    

Cómo iniciar y administrar notebooks

Después de instalar el complemento de JupyterLab de Dataproc, puedes hacer clic en las tarjetas de plantillas de la página Launcher de JupyterLab para hacer lo siguiente:

Cómo iniciar un notebook de Jupyter en Dataproc Serverless

En la sección Notebooks de Dataproc Serverless de la página del selector de JupyterLab, se muestran tarjetas de plantillas de notebooks que se asignan a plantillas de entorno de ejecución de Dataproc Serverless (consulta Crea una plantilla de entorno de ejecución de Dataproc Serverless).

  1. Haz clic en una tarjeta para crear una sesión de Dataproc Serverless y iniciar un notebook. Cuando se completa la creación de la sesión y el kernel del notebook está listo para usarse, el estado del kernel cambia de Unknown a Idle.

  2. Escribir y probar el código del notebook

    1. Copia y pega el siguiente código Pi estimation de PySpark en la celda del notebook de PySpark y, luego, presiona Mayúsculas + Intro para ejecutarlo.

      import random
          
      def inside(p):
          x, y = random.random(), random.random()
          return x*x + y*y < 1
          
      count = sc.parallelize(range(0, 10000)) .filter(inside).count()
      print("Pi is roughly %f" % (4.0 * count / 10000))

      Resultado del notebook:

  3. Después de crear y usar un notebook, puedes finalizar la sesión haciendo clic en Shut Down Kernel en la pestaña Kernel.

    • Si no finalizas la sesión, Dataproc la finalizará cuando venza el temporizador de inactividad. Puedes configurar el tiempo inactivo de la sesión en la configuración de la plantilla del entorno de ejecución. El tiempo de inactividad predeterminado de la sesión es de una hora.

Inicia un notebook en un clúster de Dataproc en Compute Engine

Si creaste un clúster de Jupyter en Dataproc en Compute Engine, la página Launcher de JupyterLab contiene una sección Dataproc Cluster Notebook con tarjetas de kernel preinstaladas.

Para iniciar un notebook de Jupyter en tu clúster de Dataproc en Compute Engine, haz lo siguiente:

  1. Haz clic en una tarjeta de la sección Cuaderno de clúster de Dataproc.

  2. Cuando el estado del kernel cambie de Unknown a Idle, puedes comenzar a escribir y ejecutar el código del notebook.

  3. Después de crear y usar un notebook, puedes finalizar la sesión haciendo clic en Shut Down Kernel en la pestaña Kernel.

Administra archivos de entrada y salida en Cloud Storage

El análisis de datos exploratorios y la compilación de modelos de AA a menudo implican entradas y salidas basadas en archivos. Dataproc Serverless accede a estos archivos en Cloud Storage.

  • Para acceder al navegador de Cloud Storage, haz clic en el ícono del navegador de Cloud Storage en la barra lateral de la página del Selector de JupyterLab y, luego, haz doble clic en una carpeta para ver su contenido.

  • Puedes hacer clic en los tipos de archivos compatibles con Jupyter para abrirlos y editarlos. Cuando guardas los cambios en los archivos, estos se escriben en Cloud Storage.

  • Para crear una carpeta nueva de Cloud Storage, haz clic en el ícono de carpeta nueva y, luego, ingresa el nombre de la carpeta.

  • Para subir archivos a un bucket o una carpeta de Cloud Storage, haz clic en el ícono de carga y, luego, selecciona los archivos que deseas subir.

Desarrolla código de notebook de Spark

Después de instalar el complemento de JupyterLab de Dataproc, puedes iniciar notebooks de Jupyter desde la página Selector de JupyterLab para desarrollar código de la aplicación.

Desarrollo de código de PySpark y Python

Dataproc Serverless y Dataproc en clústeres de Compute Engine admiten kernels de PySpark. Dataproc en Compute Engine también admite kernels de Python.

Desarrollo de código SQL

Para abrir un notebook de PySpark y escribir y ejecutar código SQL, en la página Launcher de JupyterLab, en la sección Dataproc Serverless Notebooks o Dataproc Cluster Notebook, haz clic en la tarjeta del kernel de PySpark.

Magia de Spark SQL: Dado que el kernel de PySpark que inicia los notebooks sin servidor de Dataproc está precargado con magia de Spark SQL, en lugar de usar spark.sql('SQL STATEMENT').show() para unir tu instrucción de SQL, puedes escribir %%sparksql magic en la parte superior de una celda y, luego, escribir tu instrucción de SQL en la celda.

BigQuery SQL: El conector de BigQuery Spark permite que el código de tu notebook cargue datos de las tablas de BigQuery, realice análisis en Spark y, luego, escriba los resultados en una tabla de BigQuery.

El entorno de ejecución de Dataproc Serverless 2.1 incluye el conector de BigQuery a Spark. Si usas el entorno de ejecución de Dataproc Serverless 2.0 o versiones anteriores para iniciar notebooks de Dataproc Serverless, puedes instalar el conector de BigQuery de Spark agregando la siguiente propiedad de Spark a tu plantilla de entorno de ejecución de Dataproc Serverless:

spark.jars: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.2.jar

Desarrollo de código Scala

Dataproc en clústeres de Compute Engine creados con la versión de imagen 2.0 o posterior, 2.1 o posterior, incluye Apache Toree, un kernel de Scala para la plataforma de Jupyter Notebook que proporciona acceso interactivo a Spark.

  • Haz clic en la tarjeta de Apache Toree en la sección Dataproc cluster Notebook de la página Launcher de JupyterLab para abrir un notebook para el desarrollo de código de Scala.

    Figura 1: Tarjeta del kernel de Apache Toree en la página del selector de JupyterLab.

Explorador de metadatos

Si una instancia de Dataproc Metastore (DPMS) está asociada a una plantilla de entorno de ejecución de Dataproc sin servidor o a un clúster de Dataproc en Compute Engine, el esquema de la instancia de DPMS se muestra en el Explorador de metadatos de JupyterLab cuando se abre un notebook. DPMS es un servicio de Hive Metastore (HMS) completamente administrado y escalable horizontalmente en Google Cloud.

Para ver los metadatos de HMS en el Explorador de metadatos, sigue estos pasos:

Para abrir el Explorador de metadatos de JupyterLab, haz clic en su ícono en la barra lateral.

Puedes buscar una base de datos, una tabla o una columna en el Explorador de metadatos. Haz clic en el nombre de una base de datos, una tabla o una columna para ver los metadatos asociados.

Implementa tu código

Después de instalar el complemento de JupyterLab de Dataproc, puedes usar JupyterLab para lo siguiente:

  • Ejecuta el código de tu notebook en la infraestructura de Dataproc Serverless

  • Envía trabajos por lotes a la infraestructura de Dataproc sin servidores o a tu clúster de Dataproc en Compute Engine.

Ejecuta código de notebook en Dataproc Serverless

  • Para ejecutar código en una celda de notebook, haz clic en Run o presiona Mayúsculas + Intro.

  • Para ejecutar código en una o más celdas de notebook, usa el menú Run.

Envía un trabajo por lotes a Dataproc Serverless

  • Haz clic en la tarjeta Sin servidor en la sección Sesiones y trabajos de Dataproc en la página Launcher de JupyterLab.

  • Haz clic en la pestaña Batch y, luego, en Create Batch y completa los campos de Batch Info.

  • Haz clic en Enviar para enviar el trabajo.

Envía un trabajo por lotes a un clúster de Dataproc en Compute Engine

  • Haz clic en la tarjeta Clústeres en la sección Trabajos y sesiones de Dataproc en la página Iniciador de JupyterLab.

  • Haz clic en la pestaña Trabajos y, luego, en Enviar trabajo.

  • Selecciona un clúster y, luego, completa los campos Trabajo.

  • Haz clic en Enviar para enviar el trabajo.

Visualiza y administra recursos

Después de instalar el complemento de JupyterLab de Dataproc, puedes ver y administrar Dataproc sin servidores y Dataproc en Compute Engine desde la sección Dataproc Jobs and Sessions en la página Launcher de JupyterLab.

Haz clic en la sección Sesiones y trabajos de Dataproc para mostrar las tarjetas Clústeres y Sin servidor.

Para ver y administrar sesiones de Dataproc Serverless, haz lo siguiente:

  1. Haz clic en la tarjeta Sin servidor.
  2. Haz clic en la pestaña Sesiones y, luego, en un ID de sesión para abrir la página Detalles de la sesión y ver las propiedades de la sesión, los registros de Google Cloud en el Explorador de registros y finalizar una sesión. Nota: Se crea una sesión única de Dataproc Serverless para iniciar cada notebook de Dataproc Serverless.

Para ver y administrar lotes de Dataproc Serverless, haz lo siguiente:

  1. Haz clic en la pestaña Lots para ver la lista de lotes de Dataproc Serverless en el proyecto y la región actuales. Haz clic en un ID de lote para ver sus detalles.

Para ver y administrar Dataproc en clústeres de Compute Engine, haz lo siguiente:

  1. Haz clic en la tarjeta Clústeres. Se seleccionó la pestaña Clústeres para mostrar una lista de los clústeres de Dataproc activos en Compute Engine en el proyecto y la región actuales. Puedes hacer clic en los íconos de la columna Acciones para iniciar, detener o reiniciar un clúster. Haz clic en el nombre de un clúster para ver sus detalles. Puedes hacer clic en los íconos de la columna Acciones para clonar, detener o borrar un trabajo.

Para ver y administrar trabajos de Dataproc en Compute Engine, haz lo siguiente:

  1. Haz clic en la tarjeta Trabajos para ver la lista de trabajos del proyecto actual. Haz clic en un ID de trabajo para ver los detalles.