Créer une session Dataproc sans serveur pour Spark interactive

Découvrez comment utiliser Dataproc sans serveur pour les sessions Spark Interactive afin d'écrire et d'exécuter du code dans des notebooks Jupyter.

Limites des versions preview

  • Les tâches Spark sont exécutées avec l'identité du compte de service, et non avec l'identité de l'utilisateur demandeur.
  • Les métriques de facturation ne sont pas consignées dans Stackdriver (Dataproc pour Spark Serverless Interactive est gratuit pendant la phase preview).
  • Les GPU ne sont pas encore compatibles.
  • Les sessions s'arrêtent au bout de 24 heures, quel que soit le paramètre de propriété max session time dans le modèle d'exécution. Cette limitation sera supprimée pour la version en disponibilité générale.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Activez l'API Dataproc

    Activer l'API

  4. Installez Google Cloud CLI.
  5. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  6. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  7. Activez l'API Dataproc

    Activer l'API

  8. Installez Google Cloud CLI.
  9. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init

Créer une session interactive Dataproc pour Spark sans serveur

Vous allez ouvrir des notebooks Jupyter dans Dataproc sans serveur pour les sessions Spark Interactive. Dans la version preview interactive de Dataproc sans serveur, vous pouvez créer une session de deux manières:

  1. Utilisez le plug-in Dataproc JupyterLab pour créer des modèles que les utilisateurs peuvent utiliser pour lancer des sessions en fonction des paramètres des modèles.

  2. Utilisez Vertex AI Workbench pour créer une session gérée par Google.

Plug-in JupyterLab

Les sections suivantes expliquent comment créer une session Dataproc de gestionnaire d'utilisateurs sans serveur pour Spark Interactive à l'aide du plug-in Dataproc JupyterLab.

Configurer votre machine

Vous pouvez configurer et exécuter ce guide de démarrage rapide sur une machine ayant accès aux services Google, telle que votre machine locale ou une instance de VM Compute Engine.

  1. Assurez-vous que Python 3.8+ est installé sur votre ordinateur. Vous pouvez télécharger et installer Python à partir de python.or/downloads.

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

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

    pip3 install --upgrade jupyterlab
    
    1. 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
    
    1. Si votre version de JupyterLab est antérieure à 4.0.0, activez l'extension de plug-in.

      jupyter server extension enable dataproc_jupyter_plugin
      
  4. Démarrer JupyterLab

    jupyter lab
    
    1. La page du lanceur d'applications Jupyter s'ouvre dans votre navigateur. Il contient une section Tâches et sessions Dataproc. Il peut également contenir les sections Notebooks Dataproc sans serveur et Notebooks de cluster Dataproc si vous avez accès aux notebooks sans serveur Dataproc ou aux clusters Dataproc avec le composant Jupyter facultatif qui s'exécute 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 lors de l'exécution de gcloud init dans la section Avant de commencer. Vous pouvez modifier les paramètres de projet et de région pour vos sessions à partir de la page Paramètres > Paramètres Dataproc de JupyterLab.

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

Les modèles d'exécution sans serveur Dataproc (également appelés modèles session) contiennent des paramètres de configuration permettant d'exécuter 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 gcloud CLI.

JupyterLab

  1. Cliquez sur la fiche New runtime template dans la section Notebooks du cluster Dataproc sur la page du lanceur d'applications JupyterLab.

  2. Remplissez le formulaire Runtime template (Modèle d'exécution).

  3. Indiquez 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é pour le sous-réseau et doit autoriser la communication de sous-réseau sur tous les ports (consultez la section Configuration du réseau Dataproc sans serveur pour Spark). Si l'accès privé à Google n'est pas activé pour le sous-réseau du réseau default pour la région que vous avez configurée lors de l'exécution de gcloud init dans la section Avant de commencer, vous devez activer l'accès privé à Google ou sélectionner 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 à partir de la page Paramètres > Paramètres Dataproc de JupyterLab.

    • Metastore: vous pouvez utiliser les champs de cette section pour sélectionner un service Dataproc Metastore disponible à utiliser avec votre session.

    • Temps d'inactivité maximal:temps d'inactivité maximal du notebook avant l'arrêt automatique de la session. Plage autorisée: de 10 minutes à 336 heures (14 jours).

    • Durée maximale de la session:durée de vie maximale d'une session avant qu'elle ne soit arrêtée automatiquement. Plage autorisée: de 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 la session.

    • Propriétés Spark:cliquez sur Ajouter une propriété pour chaque propriété à définir pour vos sessions Spark sans serveur. Pour en savoir plus sur les propriétés Spark compatibles et non compatibles, consultez la page Configuration réseau de Dataproc sans serveur pour Spark.

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

  4. La page Paramètres Dataproc répertorie vos modèles d'exécution. Vous pouvez supprimer un modèle de la liste depuis le menu Action pour chaque modèle répertorié.

  5. Cliquez sur Enregistrer.

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

gcloud

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

    Exemple :

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

    Si l'accès privé à Google n'est pas activé pour le sous-réseau du réseau default pour la région que vous avez configurée lors de l'exécution de gcloud init dans la section Avant de commencer, vous devez activer l'accès privé à Google ou sélectionner 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 à partir de la page Paramètres > Paramètres Dataproc de JupyterLab.

  2. Exécutez la commande gcloud beta Dataproc session-models import suivante, en local ou dans Cloud Shell, pour créer un modèle de session (d'exécution) à partir d'un fichier YAML.

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

Ouvrir un notebook

La section Notebooks Dataproc sans serveur sur la page du lanceur d'applications JupyterLab affiche les fiches des modèles de notebook qui correspondent aux noyaux d'exécution spécifiés par vos modèles d'exécution sans serveur.

  1. Cliquez sur une fiche de noyau d'exécution pour créer une session et ouvrir un notebook. Une fois la session créée et que le noyau est prêt à l'emploi, son état passe de Unknown à Idle, et un notebook s'ouvre.

    Pour afficher l'état d'une session, cliquez sur la fiche Sans serveur dans la section Tâches et sessions Dataproc de la page du lanceur d'applications JupyterLab, puis cliquez sur l'onglet Sessions. L'état de la session passe de Creating à Active lorsqu'elle est entièrement provisionnée et prête à exécuter votre code.

  2. Écrire et tester du code dans le notebook

    1. Copiez et collez le code PySpark Pi estimation 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 de notebook en cliquant sur Arrêter le noyau dans l'onglet Noyau.

    • Si vous n'arrêtez pas la session, Dataproc y met fin lorsque le délai d'inactivité de la session expire. Vous pouvez configurer le temps d'inactivité de session dans la configuration du modèle d'exécution. La durée d'inactivité de session par défaut est d'une heure.

Vertex AI

Cette section vous explique comment utiliser Vertex AI Workbench pour créer une session gérée, puis comment ouvrir et utiliser un notebook PySpark dans la session.

  1. Accédez à la page Vertex AI Workbench dans la console Google Cloud. Cliquez sur Nouveau notebook pour ouvrir un nouveau notebook géré.
  2. Renseignez les champs de la page Créer un notebook géré :
    1. Nom du notebook:saisissez le nom de votre notebook.
    2. Région:sélectionnez une région dans la liste. Les notebooks gérés Vertex AI sont disponibles dans les régions répertoriées.
    3. Autorisation:sélectionnez Single user only.
    4. Adresse e-mail de l'utilisateur:saisissez votre adresse e-mail.
    5. Cliquez sur Créer pour créer le notebook et revenez à la page Vertex AI Workbench.
  3. Votre notebook figure sur la page Vertex AI Workbench. Une fois ce lien activé, cliquez sur Ouvrir JupyterLab sur la ligne de votre notebook.
  4. Dans la boîte de dialogue Authentifier votre notebook géré qui s'affiche, cliquez sur S'authentifier pour autoriser Vertex AI Workbench à accéder à vos données et à authentifier votre notebook géré, puis sélectionnez votre compte et autorisez l'accès pour ouvrir JupyterLab.
  5. Dans l'onglet Launcher (Lanceur d'applications) de votre notebook, sélectionnez Spark sans serveur pour créer une session.
  6. Complétez la page Create Serverless Spark Session (Créer une session Spark sans serveur) :
    1. Nom de la session:saisissez un nom pour votre session. Chaque session est compatible avec un seul notebook Jupyter.
    2. Language (Langue) : sélectionnez PySpark.
    3. Configuration d'exécution:laissez l'élément de compte de service vide pour utiliser le compte de service Compute Engine par défaut.
    4. Configuration réseau :
      1. Cliquez sur Réseaux dans ce projet. Le sous-réseau VPC qui exécute une session doit répondre aux exigences indiquées dans la section Configuration du réseau Dataproc sans serveur pour Spark.
      2. Sélectionnez un réseau et un sous-réseau au sein de votre projet dans la liste. La liste affiche les sous-réseaux du réseau sélectionné pour lesquels l'accès privé à Google est activé.
    5. Cliquez sur Submit: (Envoyer) pour démarrer la session. Le journal d'activité affiche la progression de l'initialisation de la session.
      Vous pouvez également surveiller l'état de votre session depuis la page Sessions Dataproc dans la console Google Cloud.
  7. Une fois l'initialisation de la session terminée, un onglet de notebook Untitled.ipynb s'ouvre dans JupyterLab. Copiez et collez le code PySpark Pi estimation 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))
    
  8. Fermez l'onglet du notebook Untitled.ipynb. Dataproc sans serveur tente de détecter et d'arrêter la session après la fermeture d'un notebook dans JupyterLab.