1. Présentation
Cloud Dataproc est un service géré Spark et Hadoop qui vous permet de bénéficier d'outils de données Open Source pour le traitement par lot, l'émission de requêtes, le streaming et le machine learning. L'automatisation Cloud Dataproc vous permet de créer des clusters rapidement, de les gérer facilement et de faire des économies en désactivant ceux que vous n'utilisez plus. Vous consacrez moins de temps et d'argent aux fonctions d'administration, ce qui vous permet de vous concentrer sur les tâches et les données.
Ce tutoriel est une adaptation de https://cloud.google.com/dataproc/overview.
Points abordés
- Créer un cluster Cloud Dataproc géré (avec Apache Spark préinstallé)
- Envoyer un job Spark
- Redimensionner un cluster
- Se connecter en SSH au nœud maître d'un cluster Dataproc
- Utiliser gcloud pour examiner les clusters, les jobs et les règles de pare-feu
- Arrêter votre cluster
Prérequis
Comment allez-vous utiliser ce tutoriel ?
Quel est votre niveau d'expérience avec les services Google Cloud Platform ?
<ph type="x-smartling-placeholder">2. Préparation
Configuration de l'environnement d'auto-formation
- Connectez-vous à Cloud Console, puis créez un projet ou réutilisez un projet existant. (Si vous n'avez pas encore de compte Gmail ou G Suite, vous devez en créer un.)
Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID
tout au long de cet atelier de programmation.
- Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.
L'exécution de cet atelier de programmation est très peu coûteuse, voire gratuite. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.
3. Activer les API Cloud Dataproc et Google Compute Engine
Cliquez sur l'icône de menu en haut à gauche de l'écran.
Sélectionnez "Gestionnaire d'API" dans le menu déroulant.
Cliquez sur Activer les API et les services.
Recherchez "Compute Engine". dans le champ de recherche. Cliquez sur "API Google Compute Engine". dans la liste des résultats.
Sur la page Google Compute Engine, cliquez sur Activer.
Une fois l'API activée, cliquez sur la flèche pointant vers la gauche pour revenir en arrière.
Recherchez ensuite "Google Cloud Dataproc API" (API Google Cloud Dataproc). et activez-la également.
4. Démarrer Cloud Shell
Cette machine virtuelle basée sur Debian contient tous les outils de développement dont vous aurez besoin. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Cela signifie que tout ce dont vous avez besoin pour cet atelier de programmation est un navigateur (oui, tout fonctionne sur un Chromebook).
- Pour activer Cloud Shell à partir de Cloud Console, cliquez simplement sur Activer Cloud Shell (l'opération de provisionnement et la connexion à l'environnement ne devraient prendre que quelques minutes).
Une fois connecté à Cloud Shell, vous êtes normalement déjà authentifié et le projet PROJECT_ID
est sélectionné :
gcloud auth list
Résultat de la commande
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Résultat de la commande
[core] project = <PROJECT_ID>
Si, pour une raison quelconque, le projet n'est pas défini, exécutez simplement la commande suivante :
gcloud config set project <PROJECT_ID>
Vous recherchez votre PROJECT_ID
? Vérifiez l'ID que vous avez utilisé pendant les étapes de configuration ou recherchez-le dans le tableau de bord Cloud Console :
Par défaut, Cloud Shell définit certaines variables d'environnement qui pourront s'avérer utiles pour exécuter certaines commandes dans le futur.
echo $GOOGLE_CLOUD_PROJECT
Résultat de la commande
<PROJECT_ID>
- Pour finir, définissez la configuration du projet et de la zone par défaut :
gcloud config set compute/zone us-central1-f
Vous pouvez choisir parmi différentes zones. Pour en savoir plus, consultez la page Régions et zones.
5. Créer un cluster Cloud Dataproc
Après le lancement de Cloud Shell, vous pouvez utiliser la ligne de commande pour appeler la commande gcloud de Cloud SDK ou d'autres outils disponibles sur l'instance de machine virtuelle.
Choisissez un nom de cluster à utiliser dans cet atelier:
$ CLUSTERNAME=${USER}-dplab
Commençons par créer un cluster:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
Les paramètres de cluster par défaut, qui incluent deux nœuds de calcul, devraient suffire pour ce tutoriel. La commande ci-dessus inclut l'option --zone
qui permet de spécifier la zone géographique dans laquelle le cluster sera créé, ainsi que deux options avancées, --scopes
et --tags
, qui sont expliquées ci-dessous lorsque vous utilisez les fonctionnalités qu'elles activent. Consultez la commande gcloud dataproc clusters create
du SDK Cloud pour savoir comment personnaliser les paramètres de cluster à l'aide des options de ligne de commande.
6. Envoyer un job Spark à votre cluster
Vous pouvez envoyer une tâche via une requête jobs.submit
de l'API Cloud Dataproc, à l'aide de l'outil de ligne de commande gcloud
ou de la console Google Cloud Platform. Vous pouvez également vous connecter à une instance de machine de votre cluster à l'aide de SSH, puis exécuter un job à partir de cette instance.
Envoyez une tâche à l'aide de l'outil gcloud
à partir de la ligne de commande Cloud Shell:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
Pendant l'exécution du job, le résultat s'affiche dans votre fenêtre Cloud Shell.
Appuyez sur Ctrl+C pour interrompre la sortie. Cette opération arrêtera la commande gcloud
, mais le job continuera de s'exécuter sur le cluster Dataproc.
7. Répertorier les jobs et se reconnecter
Imprimer une liste de tâches:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
Le job envoyé en dernier apparaît en haut de la liste. Copiez l'ID de tâche et collez-le à la place de "jobId
". dans la commande ci-dessous. La commande se reconnecte à la tâche spécifiée et affiche le résultat:
$ gcloud dataproc jobs wait jobId
Une fois la tâche terminée, le résultat inclut une approximation de la valeur de pi.
8. Redimensionner le cluster
Si vous souhaitez effectuer des calculs plus importants, vous pouvez ajouter des nœuds à votre cluster afin d'accélérer le processus. Dataproc vous permet d'ajouter des nœuds à votre cluster et d'en supprimer à tout moment.
Examinez la configuration du cluster:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Agrandissez le cluster en ajoutant des nœuds préemptifs:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
Examinez à nouveau le cluster:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Notez qu'en plus du workerConfig
de la description d'origine du cluster, il existe désormais un secondaryWorkerConfig
qui inclut deux instanceNames
pour les nœuds de calcul préemptifs. Dataproc indique que le cluster est prêt pendant le démarrage des nouveaux nœuds.
Comme vous avez commencé avec deux nœuds et que vous en avez maintenant quatre, vos jobs Spark devraient s'exécuter environ deux fois plus vite.
9. Se connecter en SSH au cluster
Connectez-vous via SSH au nœud maître, dont le nom de l'instance est toujours le nom du cluster suivi de -m
:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
La première fois que vous exécutez une commande SSH sur Cloud Shell, elle génère des clés SSH pour votre compte. Vous pouvez choisir une phrase secrète, ou utiliser une phrase secrète vide pour le moment et la modifier plus tard en utilisant ssh-keygen
si vous le souhaitez.
Sur l'instance, vérifiez le nom d'hôte:
$ hostname
Comme vous avez spécifié --scopes=cloud-platform
lors de la création du cluster, vous pouvez exécuter des commandes gcloud
sur celui-ci. Répertoriez les clusters de votre projet:
$ gcloud dataproc clusters list
Lorsque vous avez terminé, déconnectez-vous de la connexion SSH:
$ logout
10. Examiner les tags
Lors de la création de votre cluster, vous avez inclus une option --tags
permettant d'ajouter un tag à chaque nœud du cluster. Les tags permettent d'associer des règles de pare-feu à chaque nœud. Vous n'avez créé aucune règle de pare-feu correspondante dans cet atelier de programmation, mais vous pouvez quand même examiner les tags sur un nœud et les règles de pare-feu sur le réseau.
Imprimez la description du nœud maître:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
Recherchez tags:
vers la fin du résultat et vérifiez qu'il inclut codelab
.
Affichez les règles de pare-feu:
$ gcloud compute firewall-rules list
Notez les colonnes SRC_TAGS
et TARGET_TAGS
. En associant un tag à une règle de pare-feu, vous pouvez spécifier qu'il doit être utilisé sur tous les nœuds portant ce tag.
11. Arrêter votre cluster
Vous pouvez arrêter un cluster via une requête clusters.delete
de l'API Cloud Dataproc, depuis la ligne de commande à l'aide de l'exécutable gcloud dataproc clusters delete
ou depuis la console Google Cloud Platform.
Arrêtons le cluster à l'aide de la ligne de commande Cloud Shell:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. Félicitations !
Vous avez appris à créer un cluster Dataproc, à envoyer un job Spark, à redimensionner un cluster, à utiliser SSH pour vous connecter à votre nœud maître, à utiliser gcloud pour examiner les clusters, les jobs et les règles de pare-feu, et à arrêter votre cluster avec gcloud.
En savoir plus
- Documentation Dataproc: https://cloud.google.com/dataproc/overview
- Atelier de programmation Premiers pas avec Dataproc avec la console
Licence
Ce contenu est concédé sous licence générique Attribution 3.0 Creative Commons et licence Apache 2.0.