Limites et considérations relatives à 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Activez l'API Dataproc
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Activez l'API Dataproc
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
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, tels que votre ordinateur local ou une instance de VM Compute Engine.
Pour installer le plug-in, procédez comme suit:
Assurez-vous que
Python 3.8+
est installé sur votre ordinateur. Vous pouvez télécharger et installer Python à partir depython.org/downloads
.Vérifiez l'installation de Python 3.8+.
python3 --version
Installez
JupyterLab 3.6.3+
sur votre ordinateur.pip3 install --upgrade jupyterlab
Vérifiez l'installation de JupyterLab 3.6.3+.
pip3 show jupyterlab
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 de plug-in.jupyter server extension enable dataproc_jupyter_plugin
-
jupyter lab
La page du Lanceur d'applications JupyterLab s'ouvre dans votre navigateur. Il contient une section Tâches et sessions Dataproc. Il peut également contenir des sections Notebooks sans serveur Dataproc et Notebooks de cluster Dataproc si vous avez accès à des notebooks Dataproc sans serveur ou à des clusters Dataproc avec le composant Jupyter facultatif exécuté dans votre projet.
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 de vos sessions sur la page Settings > Dataproc Settings (Paramètres > Paramètres Dataproc) de JupyterLab.
Créer un modèle d'exécution pour 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 au cours d'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
Cliquez sur la carte
New runtime template
dans la section Notebooks sans serveur Dataproc de la page Lanceur d'applications JupyterLab.Remplissez le formulaire Runtime template (Modèle d'exécution).
Spécifiez un nom à afficher et une description, puis saisissez ou confirmez les autres paramètres.
Remarques :
Configuration du 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 de réseau Dataproc sans serveur 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
à l'étape Avant de commencer n'est pas activé pour l'accès privé à Google:- l'activer pour l'accès privé à Google ;
- 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 Paramètres > Paramètres Dataproc de JupyterLab.
Metastore: pour utiliser un service Dataproc Metastore dans vos sessions, sélectionnez l'ID du projet de métastore, la région et le service.
Durée d'inactivité maximale:durée maximale d'inactivité du notebook avant la fin de la session. Plage autorisée: de 10 minutes à 336 heures (14 jours).
Durée de session maximale:durée de vie maximale d'une session avant qu'elle ne soit interrompue. 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 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'environnement d'exécution, de ressource et d'autoscaling Spark.
Libellés:cliquez sur Ajouter une étiquette pour chaque étiquette à définir sur vos sessions Spark sans serveur.
Affichez vos modèles d'exécution depuis la page Paramètres > Paramètres Dataproc.
- Vous pouvez supprimer un modèle dans le menu Action correspondant.
Cliquez sur Enregistrer.
Ouvrez et actualisez la page du Lanceur d'applications de JupyterLab pour afficher la fiche de modèle de notebook enregistrée sur la page du Lanceur d'applications de JupyterLab.
gcloud
Créez un fichier YAML avec la configuration de votre modèle d'exécution.
Fichier YAML simple
environmentConfig: executionConfig: networkUri: default jupyterSession: kernel: PYTHON displayName: Team A labels: purpose: testing description: Team A Development Environment
Fichier 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
à l'étape Avant de commencer n'est pas activé pour l'accès privé à Google:- l'activer pour l'accès privé à Google ;
- 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 Paramètres > Paramètres Dataproc de JupyterLab.
Créez un modèle de session (environnement d'exécution) à partir de votre fichier YAML en exécutant en local ou dans Cloud Shell la commande gcloud beta dataproc session-templates import suivante :
gcloud beta dataproc session-templates import TEMPLATE_ID \ --source=YAML_FILE \ --project=PROJECT_ID \ --location=REGION
- Consultez la page gcloud beta dataproc session-templates pour connaître les commandes permettant de décrire, répertorier, exporter et supprimer des modèles de session.
Lancer et gérer les notebooks
Après avoir installé le plug-in Dataproc JupyterLab, vous pouvez cliquer sur les fiches de modèle sur la page du Lanceur d'applications JupyterLab pour:
Lancer un notebook Jupyter sur Dataproc sans serveur
La section Notebooks Dataproc sans serveur de la page de lancement de JupyterLab affiche des fiches de modèles de notebooks correspondant aux modèles d'environnement d'exécution sans serveur Dataproc (consultez Créer un modèle d'environnement d'exécution Dataproc sans serveur).
Cliquez sur une fiche pour créer une session Dataproc sans serveur et lancer un notebook. Une fois la session créée et le noyau du notebook prêt à l'emploi, l'état du noyau passe de
Unknown
àIdle
.Écrire et tester le code du notebook
Copiez et collez le code PySpark
Pi estimation
suivant dans la cellule du notebook PySpark, puis appuyez sur Maj+Retour 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:
Après avoir créé et utilisé un notebook, vous pouvez arrêter la session de notebook en cliquant sur Arrêter le noyau dans l'onglet Noyau.
- Si vous ne mettez pas fin à la session, Dataproc y met fin 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. Le temps d'inactivité par défaut d'une session 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 JupyterLab contient une section Notebook Dataproc Cluster Notebook avec des cartes de noyau préinstallées.
Pour lancer un notebook Jupyter sur votre cluster Dataproc sur Compute Engine, procédez comme suit:
Cliquez sur une fiche dans la section Notebook du cluster Dataproc.
Lorsque l'état du noyau passe de
Unknown
àIdle
, vous pouvez commencer à écrire et à exécuter le code du notebook.Après avoir créé et utilisé un notebook, vous pouvez arrêter la session de notebook en cliquant sur Arrêter le noyau dans l'onglet Noyau.
Gérer les fichiers d'entrée et de sortie dans Cloud Storage
L'analyse de 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 de navigateur Cloud Storage dans la barre latérale de la page du Lanceur d'applications 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 le code du notebook Spark
Après avoir installé le plug-in Dataproc JupyterLab, vous pouvez lancer les notebooks Jupyter à partir de la page du Lanceur d'applications JupyterLab pour développer le code d'application.
Développement de code PySpark et Python
Les clusters Dataproc sans serveur et Dataproc sur Compute Engine sont compatibles avec les noyaux PySpark. Dataproc sur Compute Engine est aussi compatible avec les noyaux Python.
Cliquez sur une carte PySpark dans la section Notebooks sans serveur Dataproc ou Notebook de cluster Dataproc de la page Lanceur d'applications JupyterLab pour ouvrir un notebook PySpark.
Cliquez sur une fiche de noyau Python dans la section Notebook du cluster Dataproc de la page Lanceur d'applications JupyterLab pour ouvrir un notebook Python.
Développement de code SQL
Cliquez sur la carte du noyau PySpark dans la section Notebooks sans serveur Dataproc ou Notebook du cluster Dataproc de la page Lanceur d'applications JupyterLab pour ouvrir un notebook PySpark afin d'écrire et d'exécuter du code SQL.
Magic Spark SQL:étant donné que le noyau 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 au code de votre notebook de charger des données à partir de tables BigQuery, d'effectuer une analyse dans Spark, puis d'écrire les résultats dans une table BigQuery.
L'environnement d'exécution Dataproc Serverless 2.1 inclut le connecteur BigQuery Spark. Si vous utilisez l'environnement d'exécution Dataproc Serverless 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'environnement 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 noyau Scala pour la plate-forme de notebook Jupyter qui fournit un accès interactif à Spark.
Cliquez sur la carte Apache Toree dans la section Notebook du cluster Dataproc de la page Lanceur d'applications JupyterLab pour ouvrir un notebook destiné au développement de code Scala.
Explorateur de métadonnées
Si une instance Dataproc Metastore (DPMS) est associée à un modèle d'exécution Dataproc sans serveur 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 à évolutivité horizontale sur Google Cloud.
Pour afficher les métadonnées HMS dans l'explorateur de métadonnées:
Activez l'API Data Catalog dans votre projet.
Activez la synchronisation de Data Catalog dans votre service DPMS.
Spécifiez une instance DPMS lorsque vous créez le modèle d'exécution sans serveur Dataproc ou créez le cluster Dataproc sur Compute Engine.
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 sans serveur Dataproc
Envoyer des tâches par lot à l'infrastructure sans serveur Dataproc ou à votre cluster Dataproc sur Compute Engine
Exécuter le code du notebook sur Dataproc sans serveur
Cliquez sur l'icône Exécuter ou appuyez sur les touches Maj-Retour pour exécuter du code dans une cellule de notebook.
Utilisez le menu Exécuter pour exécuter du code dans une ou plusieurs cellules du notebook.
Envoyer un job par lot vers Dataproc sans serveur
Cliquez sur la carte 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 un job par lot à un cluster Dataproc sur Compute Engine
Cliquez sur la carte Clusters dans la section Jobs et sessions Dataproc de la page Lanceur d'applications de JupyterLab.
Cliquez sur l'onglet Jobs (Tâches), puis sur Submit Job (Envoyer un job).
Sélectionnez un cluster, puis remplissez les champs 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 à partir de la section Jobs et sessions Dataproc de la page du Lanceur d'applications JupyterLab.
Cliquez sur la section Jobs et sessions Dataproc pour afficher les fiches Clusters et Sans serveur.
Pour afficher et gérer les sessions Dataproc sans serveur, procédez comme suit:
- Cliquez sur la carte Sans serveur.
- Cliquez sur l'onglet Sessions, puis sur un ID de session pour ouvrir la page Détails de la session afin d'afficher les propriétés de la session, d'afficher le journal Google Cloud dans l'explorateur de journaux et de 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 des lots Dataproc sans serveur, procédez comme suit:
- Cliquez sur l'onglet Lots pour afficher la liste des lots Dataproc sans serveur dans le projet et la région actuels. Cliquez sur l'ID d'un lot pour afficher les détails correspondants.
Pour afficher et gérer des clusters Dataproc sur Compute Engine, procédez comme suit:
- Cliquez sur la carte Clusters. L'onglet Clusters est sélectionné pour répertorier les clusters Dataproc sur Compute Engine actifs 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 jobs Dataproc sur Compute Engine, procédez comme suit:
- Cliquez sur la fiche Tâches pour afficher la liste des tâches du projet en cours. Cliquez sur un ID de tâche pour afficher les détails de cette tâche.