Utiliser le plug-in Dataproc JupyterLab pour les sessions de notebook et le traitement par lot sans serveur

Ce document explique comment installer et utiliser le plug-in Dataproc JupyterLab sur une machine ou une VM ayant accès aux services Google, comme votre machine locale ou une instance de VM Compute Engine. Il décrit également comment développer et deploy du code de notebook Spark.

Une fois le plug-in Dataproc JupyterLab installé, vous pouvez l'utiliser pour effectuer les tâches suivantes:

  • Lancer des sessions de notebook interactives Dataproc sans serveur pour Spark
  • Envoyer des tâches par lot Dataproc sans serveur

Limites et points à noter concernant Dataproc sans serveur

  • Les jobs Spark sont exécutés avec l'identité du compte de service, et non avec celle de l'utilisateur ayant fait la demande.

Avant de commencer

  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
  10. Assurez-vous que l'accès privé à Google est activé dans le sous-réseau VPC régional où vous exécuterez votre session interactive Dataproc sans serveur. Pour en savoir plus, consultez la section Créer un modèle d'environnement d'exécution Dataproc sans serveur.

Installer le plug-in Dataproc JupyterLab

Vous pouvez installer et utiliser le plug-in Dataproc JupyterLab sur une machine ou une VM ayant accès aux services Google, comme votre machine locale ou une instance de VM Compute Engine.

Pour installer le plug-in, procédez comme suit:

  1. Téléchargez et installez la version 3.8 ou ultérieure de Python à partir de python.org/downloads.

    • Vérifiez l'installation de Python 3.8 ou version ultérieure.

      python3 --version
  2. Installez JupyterLab 3.6.3+ sur votre ordinateur.

    pip3 install --upgrade jupyterlab
    • Vérifiez l'installation de JupyterLab 3.6.3 ou version ultérieure.

       pip3 show jupyterlab
       ```
  3. Installez le plug-in Dataproc JupyterLab.

    pip3 install dataproc-jupyter-plugin
    • Si votre version de JupyterLab est antérieure à 4.0.0, activez l'extension du plug-in.

       jupyter server extension enable dataproc_jupyter_plugin
       ```
  4. Démarrez JupyterLab.

    jupyter lab
    1. La page du lanceur JupyterLab s'ouvre dans votre navigateur. Elle contient une section Jobs et sessions Dataproc. Il peut également contenir des sections Notebooks Dataproc sans serveur et Notebooks de cluster Dataproc si vous avez accès à des notebooks Dataproc sans serveur ou à des clusters Dataproc avec le composant facultatif Jupyter exécuté dans votre projet.

    2. Par défaut, votre session Dataproc sans serveur pour Spark Interactive s'exécute dans le projet et la région que vous avez définis en exécutant gcloud init dans la section Avant de commencer. Vous pouvez modifier les paramètres de projet et de région de vos sessions sur la page Settings > Dataproc Settings (Paramètres > Paramètres Dataproc) de JupyterLab.

Créer un modèle d'environnement d'exécution Dataproc sans serveur

Les modèles d'exécution Dataproc sans serveur (également appelés modèles session) contiennent des paramètres de configuration pour l'exécution du code Spark dans une session. Vous pouvez créer et gérer des modèles d'exécution à l'aide de Jupyterlab ou de la gcloud CLI.

JupyterLab

  1. Cliquez sur la fiche New runtime template dans la section Notebooks Dataproc sans serveur sur la page Lanceur d'applications de JupyterLab.

  2. Remplissez le formulaire Modèle d'environnement d'exécution.

  3. Spécifiez un nom à afficher et une description, puis saisissez ou confirmez les autres paramètres.

    Remarques :

    • Configuration réseau: l'accès privé à Google doit être activé sur le sous-réseau et doit autoriser la communication de sous-réseau sur tous les ports (voir la section Configuration réseau Dataproc Serverless pour Spark).

      Si le sous-réseau du réseau default pour la région que vous avez configurée lorsque vous avez exécuté gcloud init dans Avant de commencer n'est pas activé pour l'accès privé à Google:

      • Activez-le pour l'accès privé à Google ; ou
      • Sélectionnez un autre réseau avec un sous-réseau régional sur lequel l'accès privé à Google est activé. Vous pouvez modifier la région utilisée par Dataproc sans serveur sur la page Settings > Dataproc Settings (Paramètres > Paramètres Dataproc) de JupyterLab.
    • Metastore: pour utiliser un service Dataproc Metastore dans vos sessions, sélectionnez l'ID de projet, la région et le service du métastore.

    • Durée d'inactivité maximale:durée maximale d'inactivité du notebook avant l'interruption de la session. Plage autorisée: 10 minutes à 336 heures (14 jours).

    • Durée maximale de la session:durée maximale d'une session avant qu'elle ne soit arrêtée. Plage autorisée: 10 minutes à 336 heures (14 jours).

    • PHS: vous pouvez sélectionner un serveur d'historique Spark persistant disponible pour accéder aux journaux de session pendant et après les sessions.

    • Propriétés Spark:cliquez sur Ajouter une propriété pour chaque propriété à définir pour vos sessions Spark sans serveur. Consultez la section Propriétés Spark pour obtenir la liste des propriétés Spark compatibles et non compatibles, y compris les propriétés d'exécution, de ressources et d'autoscaling Spark.

    • Libellés:cliquez sur Ajouter un libellé pour chaque libellé à définir sur vos sessions Spark sans serveur.

  4. Affichez vos modèles d'environnement d'exécution sur la page Paramètres > Paramètres Dataproc.

    • Vous pouvez supprimer un modèle dans le menu Action correspondant.
  5. Cliquez sur Enregistrer.

  6. Ouvrez et actualisez la page du lanceur JupyterLab pour afficher la fiche du modèle de notebook enregistré sur la page du lanceur JupyterLab.

gcloud

  1. Créez un fichier YAML avec la configuration de votre modèle d'exécution.

    YAML simple

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

    YAML complexe

    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 le sous-réseau du réseau default pour la région que vous avez configurée lorsque vous avez exécuté gcloud init dans Avant de commencer n'est pas activé pour l'Accès privé à Google:

    • Activez-le pour l'accès privé à Google ; ou
    • Sélectionnez un autre réseau avec un sous-réseau régional sur lequel l'accès privé à Google est activé. Vous pouvez modifier la région utilisée par Dataproc sans serveur sur la page Settings > Dataproc Settings (Paramètres > Paramètres Dataproc) de JupyterLab.
  2. Créez un modèle de session (d'exécution) à partir de votre fichier YAML en exécutant la commande gcloud beta dataproc session-templates import suivante en local ou dans Cloud Shell:

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

Lancer et gérer des notebooks

Après avoir installé le plug-in Dataproc JupyterLab, vous pouvez cliquer sur les fiches de modèle sur la page du lanceur JupyterLab pour:

Lancer un notebook Jupyter sur Dataproc sans serveur

La section Notebooks Dataproc sans serveur de la page du lanceur d'applications JupyterLab affiche des fiches de modèle de notebook qui correspondent à des modèles d'exécution Dataproc sans serveur (voir Créer un modèle d'exécution Dataproc sans serveur).

  1. Cliquez sur une fiche pour créer une session Dataproc sans serveur et lancer un notebook. Une fois la création de la session terminée et que le kernel du notebook est prêt à l'emploi, son état passe de Unknown à Idle.

  2. Écrire et tester du code dans un notebook

    1. Copiez et collez le code Pi estimation PySpark suivant dans la cellule du notebook PySpark, puis appuyez sur Maj+Entrée pour exécuter le code.

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

      Résultat du notebook:

  3. Après avoir créé et utilisé un notebook, vous pouvez mettre fin à la session en cliquant sur Shut Down Kernel (Arrêter le noyau) dans l'onglet Kernel (Noyau).

    • Si vous ne mettez pas fin à la session, Dataproc le fait lorsque le minuteur d'inactivité de la session expire. Vous pouvez configurer le temps d'inactivité de la session dans la configuration du modèle d'exécution. La durée d'inactivité de la session par défaut est d'une heure.

Lancer un notebook sur un cluster Dataproc sur Compute Engine

Si vous avez créé un cluster Jupyter Dataproc sur Compute Engine, la page du lanceur d'applications de JupyterLab contient une section Notebook de cluster Dataproc avec des fiches de kernel préinstallées.

Pour lancer un notebook Jupyter sur votre cluster Dataproc sur Compute Engine:

  1. Cliquez sur une fiche dans la section Notebook du cluster Dataproc.

  2. Lorsque l'état du noyau passe de Unknown à Idle, vous pouvez commencer à écrire et à exécuter le code du notebook.

  3. Après avoir créé et utilisé un notebook, vous pouvez mettre fin à la session en cliquant sur Shut Down Kernel (Arrêter le noyau) dans l'onglet Kernel (Noyau).

Gérer les fichiers d'entrée et de sortie dans Cloud Storage

L'analyse des données exploratoires et la création de modèles de ML impliquent souvent des entrées et des sorties basées sur des fichiers. Dataproc sans serveur accède à ces fichiers sur Cloud Storage.

  • Pour accéder au navigateur Cloud Storage, cliquez sur l'icône du navigateur Cloud Storage dans la barre latérale de la page Lanceur de JupyterLab, puis double-cliquez sur un dossier pour afficher son contenu.

  • Vous pouvez cliquer sur les types de fichiers compatibles avec Jupyter pour les ouvrir et les modifier. Lorsque vous enregistrez les modifications apportées aux fichiers, elles sont écrites dans Cloud Storage.

  • Pour créer un dossier Cloud Storage, cliquez sur l'icône de nouveau dossier, puis saisissez le nom du dossier.

  • Pour importer des fichiers dans un bucket ou un dossier Cloud Storage, cliquez sur l'icône d'importation, puis sélectionnez les fichiers à importer.

Développer du code de notebook Spark

Après avoir installé le plug-in Dataproc JupyterLab, vous pouvez lancer des notebooks Jupyter à partir de la page Launcher (Lanceur) de JupyterLab pour développer du code d'application.

Développement de code PySpark et Python

Dataproc sans serveur et Dataproc sur les clusters Compute Engine sont compatibles avec les noyaux PySpark. Dataproc sur Compute Engine est également compatible avec les noyaux Python.

Développement de code SQL

Pour ouvrir un notebook PySpark afin d'écrire et d'exécuter du code SQL, sur la page du lanceur JupyterLab, dans la section Notebooks Dataproc sans serveur ou Notebook de cluster Dataproc, cliquez sur la fiche du kernel PySpark.

Magie Spark SQL:comme le kernel PySpark qui lance les notebooks sans serveur Dataproc est préchargé avec la magie Spark SQL, au lieu d'utiliser spark.sql('SQL STATEMENT').show() pour encapsuler votre instruction SQL, vous pouvez saisir %%sparksql magic en haut d'une cellule, puis saisir votre instruction SQL dans la cellule.

BigQuery SQL:le connecteur BigQuery Spark permet à votre code de notebook de charger des données à partir de tables BigQuery, d'effectuer des analyses dans Spark, puis d'écrire les résultats dans une table BigQuery.

L'environnement d'exécution Dataproc sans serveur 2.1 inclut le connecteur BigQuery Spark. Si vous utilisez l'environnement d'exécution Dataproc sans serveur 2.0 ou une version antérieure pour lancer des notebooks Dataproc sans serveur, vous pouvez installer le connecteur Spark BigQuery en ajoutant la propriété Spark suivante à votre modèle d'exécution Dataproc sans serveur:

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

Développement de code Scala

Les clusters Dataproc sur Compute Engine créés avec les versions d'image 2.0, 2.1 et ultérieures incluent Apache Toree, un kernel Scala pour la plate-forme Jupyter Notebook qui fournit un accès interactif à Spark.

  • Cliquez sur la fiche Apache Toree dans la section Notebook de cluster Dataproc sur la page du lanceur d'applications JupyterLab pour ouvrir un notebook de développement de code Scala.

    Figure 1 Fiche du noyau Apache Toree sur la page du lanceur JupyterLab.

Explorateur de métadonnées

Si une instance Dataproc Metastore (DPMS) est associée à un modèle d'environnement d'exécution sans serveur Dataproc ou à un cluster Dataproc sur Compute Engine, le schéma de l'instance DPMS s'affiche dans l'explorateur de métadonnées JupyterLab lorsqu'un notebook est ouvert. DPMS est un service Hive Metastore (HMS) entièrement géré et évolutif horizontalement sur Google Cloud.

Pour afficher les métadonnées HMS dans l'explorateur de métadonnées:

Pour ouvrir l'explorateur de métadonnées JupyterLab, cliquez sur son icône dans la barre latérale.

Vous pouvez rechercher une base de données, une table ou une colonne dans l'explorateur de métadonnées. Cliquez sur le nom d'une base de données, d'une table ou d'une colonne pour afficher les métadonnées associées.

Déployer votre code

Après avoir installé le plug-in Dataproc JupyterLab, vous pouvez utiliser JupyterLab pour:

  • Exécuter le code de votre notebook sur l'infrastructure Dataproc sans serveur

  • Envoyez des tâches par lot à l'infrastructure Dataproc sans serveur ou à votre cluster Dataproc sur Compute Engine.

Exécuter le code d'un notebook sur Dataproc sans serveur

  • Pour exécuter du code dans une cellule de notebook, cliquez sur Run (Exécuter) ou appuyez sur les touches Maj+Entrée.

  • Pour exécuter du code dans une ou plusieurs cellules de notebook, utilisez le menu Run (Exécuter).

Envoyer un job par lot à Dataproc sans serveur

  • Cliquez sur la fiche Sans serveur dans la section Jobs et sessions Dataproc de la page Lanceur d'applications de JupyterLab.

  • Cliquez sur l'onglet Batch (Lot), puis sur Create Batch (Créer un lot) et renseignez les champs Batch Info (Informations sur le lot).

  • Cliquez sur Envoyer pour envoyer la tâche.

Envoyer une job par lot à un cluster Dataproc sur Compute Engine

  • Cliquez sur la fiche Clusters dans la section Tâches et sessions Dataproc de la page Lanceur de JupyterLab.

  • Cliquez sur l'onglet Jobs (Tâches), puis sur Submit Job (Envoyer une tâche).

  • Sélectionnez un cluster, puis remplissez les champs Job (Tâche).

  • Cliquez sur Envoyer pour envoyer la tâche.

Afficher et gérer les ressources

Après avoir installé le plug-in Dataproc JupyterLab, vous pouvez afficher et gérer Dataproc sans serveur et Dataproc sur Compute Engine depuis la section Dataproc Jobs and Sessions (Tâches et sessions Dataproc) de la page Launcher (Lanceur) de JupyterLab.

Cliquez sur la section Tâches et sessions Dataproc pour afficher les fiches Clusters et Serverless.

Pour afficher et gérer les sessions Dataproc sans serveur:

  1. Cliquez sur la fiche Serverless (Sans serveur).
  2. Cliquez sur l'onglet Sessions, puis sur un ID de session pour ouvrir la page Détails de la session. Vous pouvez y afficher les propriétés de la session, les journaux Google Cloud dans l'explorateur de journaux et mettre fin à une session. Remarque: Une session Dataproc sans serveur unique est créée pour lancer chaque notebook Dataproc sans serveur.

Pour afficher et gérer les lots Dataproc sans serveur:

  1. Cliquez sur l'onglet Lots pour afficher la liste des lots Dataproc sans serveur dans le projet et la région actuels. Cliquez sur un ID de lot pour afficher ses détails.

Pour afficher et gérer Dataproc sur des clusters Compute Engine:

  1. Cliquez sur la fiche Clusters (Clusters). L'onglet Clusters est sélectionné pour afficher les clusters Dataproc actifs sur Compute Engine dans le projet et la région actuels. Vous pouvez cliquer sur les icônes de la colonne Actions pour démarrer, arrêter ou redémarrer un cluster. Cliquez sur le nom d'un cluster pour afficher ses détails. Vous pouvez cliquer sur les icônes de la colonne Actions pour cloner, arrêter ou supprimer une tâche.

Pour afficher et gérer les tâches Dataproc sur Compute Engine:

  1. Cliquez sur la fiche Jobs (Tâches) pour afficher la liste des tâches du projet en cours. Cliquez sur l'ID d'une tâche pour afficher ses détails.