Crea una sesión interactiva sin servidores de Dataproc para Spark

Aprende a usar Dataproc Serverless para las sesiones interactivas de Spark a fin de escribir y ejecutar código en notebooks de Jupyter.

Limitaciones de la versión preliminar

  • Los trabajos de Spark se ejecutan con la identidad de la cuenta de servicio, no con la identidad del usuario que envía la información.
  • Las métricas de facturación no se registran en Stackdriver (Dataproc para Spark Serverless Interactive es sin costo durante la vista previa).
  • Las GPU aún no son compatibles.
  • Las sesiones finalizan después de 24 horas, sin importar la configuración de la propiedad max session time en la plantilla del entorno de ejecución. Se quitará esta limitación en la versión de DG.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Habilita la API de Dataproc.

    Habilita la API

  4. Instala Google Cloud CLI.
  5. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  6. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  7. Habilita la API de Dataproc.

    Habilita la API

  8. Instala Google Cloud CLI.
  9. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init

Crea un Dataproc para la sesión interactiva sin servidores de Spark

Abrirás los notebooks de Jupyter en Dataproc sin servidores para las sesiones interactivas de Spark. Durante la versión preliminar interactiva sin servidores de Dataproc, puedes crear una sesión de dos maneras:

  1. Usa el complemento de JupyterLab de JupyterLab para crear plantillas que los usuarios puedan usar a fin de iniciar sesiones según la configuración de plantillas.

  2. Usar Vertex AI Workbench para crear una sesión administrada por Google

Complemento de JupyterLab

En las siguientes secciones, se muestra cómo crear un administrador de usuarios de Dataproc Serverless para una sesión interactiva de Spark con el complemento de JupyterLab de Dataproc.

Configura tu máquina

Puedes configurar y ejecutar esta guía de inicio rápido en una máquina que tenga acceso a los servicios de Google, como tu máquina local o una instancia de VM de Compute Engine.

  1. Asegúrate de que Python 3.8+ esté instalado en tu máquina. Puedes descargar y, luego, instalar Python desde python.or/downloads.

    1. Verifica la instalación de Python 3.8+.

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

    pip3 install --upgrade jupyterlab
    
    1. Verifica la instalación de JupyterLab 3.6.3+.

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

    pip3 install dataproc-jupyter-plugin
    
    1. 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. Iniciar JupyterLab

    jupyter lab
    
    1. Se abrirá la página del selector de Jupyter en tu navegador. Contiene una sección Trabajos y sesiones de Dataproc. También puede contener las secciones Notebooks sin servidores de Dataproc y Notebooks del clúster de Dataproc si tienes acceso a notebooks sin servidores de Dataproc o clústeres de Dataproc con el componente opcional de Jupyter que se ejecuta en tu proyecto.

    2. De forma predeterminada, la sesión interactiva sin servidores de Dataproc 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 para tus sesiones en la página Configuración > Configuración de Dataproc de JupyterLab.

Crea una plantilla de entorno de ejecución sin servidores de Dataproc

Las plantillas de entorno de ejecución sin servidores de Dataproc (también llamadas plantillas session) contienen la 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 clústeres de Dataproc de la página Launcher de JupyterLab.

  2. Completa el formulario Plantilla del 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 debe permitir la comunicación de subred en todos los puertos (consulta Configuración de red de Dataproc Serverless para Spark). Si la subred de la red default para la región que configuraste cuando ejecutaste gcloud init en Antes de comenzar no está habilitada para el Acceso privado a Google, debes habilitarla para el Acceso privado a Google o seleccionar 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: Puedes seleccionar usar los campos de esta sección a fin de seleccionar un servicio de Dataproc Metastore disponible para usar en tu sesión.

    • Tiempo de inactividad máximo: Tiempo máximo de inactividad del notebook antes de que se finalice la sesión de forma automática. Rango permitido: Entre 10 minutos y 336 horas (14 días).

    • Tiempo máximo de sesión: Es la vida útil máxima de una sesión antes de que esta se finalice automáticamente. Rango permitido: Entre 10 minutos y 336 horas (14 días).

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

    • Propiedades de Spark: Haz clic en Agregar propiedad en cada propiedad para configurarla en tus sesiones de Spark sin servidores. Consulta Configuración de red de Dataproc Serverless para Spark a fin de obtener una explicación de las propiedades de Spark compatibles y no compatibles.

    • Etiquetas: Haz clic en Agregar etiqueta para cada etiqueta a fin de configurar tus sesiones de Spark sin servidores.

  4. En la página Configuración de Dataproc, se enumeran tus plantillas de entorno de ejecución. Puedes borrar una plantilla de la lista del menú Acción para cada plantilla de la lista.

  5. Haz clic en Guardar.

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

gcloud

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

    Ejemplo:

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

    Si la subred de la red default para la región que configuraste cuando ejecutaste gcloud init en Antes de comenzar no está habilitada para el Acceso privado a Google, debes habilitarla para el Acceso privado a Google o seleccionar 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. Ejecuta el siguiente comando gcloud beta Dataproc session-templates import de forma local o en Cloud Shell para crear una plantilla de sesión (entorno de ejecución) a partir de un archivo YAML.

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

Abre un notebook

En la sección Notebooks sin servidores de Dataproc, en la página Launcher de JupyterLab, se muestran tarjetas de plantillas de notebook que se asignan a los kernels de entorno de ejecución que especifican tus plantillas de entorno de ejecución sin servidores.

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

    Para ver el estado de la sesión, haz clic en la tarjeta Sin servidores en la sección Trabajos y sesión de Dataproc de la página del selector de JupyterLab y, luego, haz clic en la pestaña Sesiones. El estado de la sesión cambia de Creating a Active cuando la sesión está completamente aprovisionada y lista para ejecutar tu código.

  2. Escribe y prueba el código en el 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 + Retorno para ejecutar el código.

      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 en el notebook:

  3. Después de crear y usar un notebook, puedes hacer clic en Cerrar kernel en la pestaña Kernel para finalizar la sesión del notebook.

    • Si no cierras la sesión, Dataproc la finalizará cuando finalice el temporizador de inactividad de la sesión. Puedes configurar el tiempo de inactividad 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.

Vertex AI

En esta sección, se muestra cómo usar Vertex AI Workbench para crear una sesión administrada y, luego, abrir y usar un notebook de PySpark en la sesión.

  1. Ve a la página Vertex AI Workbench en la consola de Google Cloud. Haz clic en Nuevo notebook para abrir un notebook administrado nuevo.
  2. Completa los campos de la página Crear un notebook administrado:
    1. Nombre del notebook: Ingresa un nombre para el notebook.
    2. Región: Selecciona una región de la lista. Los notebooks administrados de Vertex AI están disponibles en las regiones enumeradas.
    3. Permiso: Selecciona Single user only.
    4. Correo electrónico del usuario: Ingresa tu dirección de correo electrónico.
    5. Haz clic en Crear para crear el notebook y volver a la página Vertex AI Workbench.
  3. Su notebook aparece en la página Vertex AI Workbench. Haz clic en Abrir JupyterLab en la fila de tu notebook después de habilitar este vínculo.
  4. En el diálogo Autenticar tu notebook administrado que aparece, haz clic en Autenticar para permitir que Vertex AI Workbench acceda a tus datos y autentica tu notebook administrado. Luego, selecciona tu cuenta y permite el acceso para abrir JupyterLab.
  5. En la pestaña Selector del notebook, selecciona Spark sin servidores para crear una sesión.
  6. Completa la página Crear una sesión de Spark sin servidores:
    1. Nombre de la sesión: Ingresa un nombre para la sesión. Cada sesión admite un notebook de Jupyter.
    2. Idioma: Selecciona PySpark.
    3. Configuración de la ejecución: Deja el elemento de la cuenta de servicio vacío para usar la cuenta de servicio predeterminada de Compute Engine.
    4. Configuración de red:
      1. Haz clic en Redes de este proyecto. La subred de VPC que ejecuta una sesión debe cumplir con los requisitos que se mencionan en Configuración de red de Dataproc Serverless para Spark.
      2. En la lista, selecciona una red y una subred dentro de tu proyecto. En la lista, se muestran las subredes de la red seleccionada que están habilitadas para el Acceso privado a Google.
    5. Haz clic en Submit: para iniciar la sesión. En el Registro de actividad, se muestra el progreso de la inicialización de la sesión.
      También puedes supervisar el estado de tu sesión desde la página Sesiones de Dataproc en la consola de Google Cloud.
  7. Cuando se completa la inicialización de la sesión, se abre una pestaña del notebook Untitled.ipynb en JupyterLab. Copia y pega el siguiente código Pi estimation de PySpark en la celda del notebook de PySpark y, luego, presiona Mayúsculas + Retorno para ejecutar el código.
    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))
    
  8. Cierra la pestaña del notebook Untitled.ipynb. Dataproc Serverless intenta detectar y finalizar la sesión después de que cierras un notebook en JupyterLab.