1. Présentation : Google Dataproc
Dataproc est un service entièrement géré et hautement évolutif permettant d'exécuter Apache Spark, Apache Flink, Presto, ainsi que de nombreux autres outils et frameworks Open Source. Utilisez Dataproc pour moderniser vos lacs de données, effectuer des opérations d'ETL / ELT et sécuriser votre data science à l'échelle mondiale. Dataproc est aussi entièrement intégré à plusieurs services Google Cloud, tels que BigQuery, Cloud Storage, Vertex AI et Dataplex.
Dataproc est disponible en trois versions:
- Dataproc sans serveur vous permet d'exécuter des tâches PySpark sans avoir à configurer l'infrastructure ni l'autoscaling. Dataproc sans serveur est compatible avec les charges de travail par lot et les sessions / notebooks PySpark.
- Dataproc sur Google Compute Engine vous permet de gérer un cluster Hadoop YARN pour les charges de travail Spark basées sur YARN, en plus d'outils Open Source tels que Flink et Presto. Vous pouvez personnaliser vos clusters cloud avec autant de scaling vertical ou horizontal que vous le souhaitez, y compris l'autoscaling.
- Dataproc sur Google Kubernetes Engine vous permet de configurer des clusters virtuels Dataproc dans votre infrastructure GKE pour envoyer des tâches Spark, PySpark, SparkR ou Spark SQL.
2. Créer un cluster Dataproc sur un VPC Google Cloud
Au cours de cette étape, vous allez créer un cluster Dataproc sur Google Cloud à l'aide de la console Google Cloud.
Pour commencer, activez l'API du service Dataproc sur la console. Une fois qu'il est activé, recherchez "Dataproc". dans la barre de recherche, puis cliquez sur Créer un cluster.
Sélectionnez Cluster sur Compute Engine pour utiliser des VM Google Compute Engine(GCE) en tant qu'infrastructure sous-jacente afin d'exécuter des clusters Dataproc.
Vous êtes maintenant sur la page de création de cluster.
Sur cette page :
- Attribuez un nom unique au cluster.
- Sélectionnez la région spécifique. Vous pouvez également sélectionner une zone, mais Dataproc permet d'en choisir une automatiquement pour vous. Pour cet atelier de programmation, sélectionnez "us-central1". et "us-central1-c".
- Sélectionnez l'option "Standard". type de cluster. Cela garantit qu'il y a un nœud maître.
- Dans l'onglet Configurer les nœuds, vérifiez que le nombre de nœuds de calcul créés est de deux.
- Dans la section Personnaliser le cluster, cochez la case Activer la passerelle des composants. Cela permet d'accéder aux interfaces Web du cluster, y compris l'UI Spark, Yarn Node Manager et les notebooks Jupyter.
- Dans Composants facultatifs, sélectionnez Notebook Jupyter. Cette opération configure le cluster avec un serveur de notebooks Jupyter.
- Ne modifiez aucun autre élément et cliquez sur Créer un cluster.
Cette opération lance un cluster Dataproc.
3. Lancer le cluster et s'y connecter en SSH
Lorsque l'état du cluster passe à Running (En cours d'exécution), cliquez sur son nom dans la console Dataproc.
Cliquez sur l'onglet Instance de VM pour afficher le nœud maître et les deux nœuds de calcul du cluster.
Cliquez sur SSH à côté du nœud maître pour vous connecter au nœud maître.
Exécutez les commandes hdfs pour afficher la structure des répertoires.
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4. Interfaces Web et passerelles de composants
Dans la console de cluster Dataproc, cliquez sur le nom de votre cluster, puis sur l'onglet INTERFACES WEB.
Cette commande montre les interfaces Web disponibles, y compris Jupyter. Cliquez sur Jupyter pour ouvrir un notebook Jupyter. Vous pouvez l'utiliser pour créer des notebooks stockés dans GCS dans PySpark. pour stocker votre notebook sur Google Cloud Storage et ouvrir un notebook PySpark que vous utiliserez dans cet atelier de programmation.
5. Surveiller et observer des jobs Spark
Maintenant que le cluster Dataproc est opérationnel, créez un job par lot PySpark et envoyez-le au cluster Dataproc.
Créez un bucket Google Cloud Storage (GCS) pour stocker le script PySpark. Veillez à créer le bucket dans la même région que le cluster Dataproc.
Maintenant que le bucket GCS est créé, copiez-y le fichier suivant.
https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py
Ce script crée un exemple de DataFrame Spark et l'écrit sous forme de table Hive.
hive_job.py
from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row
spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()
df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
(2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")
Envoyez ce script en tant que job par lot Spark dans Dataproc. Cliquez sur Jobs (Tâches) dans le menu de navigation de gauche, puis sur Submit Job (Envoyer le job).
Indiquez un ID de job et une région. Sélectionnez votre cluster et indiquez l'emplacement GCS du script Spark que vous avez copié. Ce job sera exécuté en tant que job par lot Spark sur Dataproc.
Sous Properties (Propriétés), ajoutez la clé spark.submit.deployMode
et la valeur client
pour vous assurer que le pilote s'exécute dans le nœud maître Dataproc et non dans les nœuds de calcul. Cliquez sur Envoyer pour envoyer le job par lot à Dataproc.
Le script Spark va créer un DataFrame et écrire dans une table Hive test_table_1
.
Une fois la tâche exécutée, les instructions d'impression de la console s'affichent dans l'onglet Surveillance.
Maintenant que la table Hive est créée, envoyez un autre job de requête Hive pour sélectionner le contenu de la table et l'afficher sur la console.
Créez une autre tâche avec les propriétés suivantes:
Notez que Job Type (Type de tâche) est défini sur Hive et que le type de source de la requête est Query Text (Texte de requête), ce qui signifie que nous allons écrire l'instruction HiveQL complète dans la zone de texte Query Text (Texte de la requête).
Envoyez la tâche, en conservant les autres paramètres par défaut.
Notez que HiveQL sélectionne tous les enregistrements et s'affiche sur la console.
6. Autoscaling
L'autoscaling consiste à estimer la bonne nombre de nœuds de calcul du cluster pour une charge de travail.
L'API Autoscaling Autoscaling de Dataproc fournit un mécanisme assurant l'automatisation de la gestion des ressources de cluster et active l'autoscaling des VM de nœud de calcul de cluster. Une règle d'autoscaling est une configuration réutilisable décrivant comment les nœuds de calcul de cluster utilisant ces règles doivent évoluer. Il définit des limites de scaling, la fréquence et l'agressivité afin de fournir un contrôle ultraprécis sur les ressources du cluster tout au long de sa durée de vie.
Les règles d'autoscaling Dataproc sont écrites à l'aide de fichiers YAML. Ces fichiers sont soit transmis dans la commande CLI pour la création du cluster, soit sélectionnés à partir d'un bucket GCS lorsqu'un cluster est créé depuis la console Cloud.
Voici un exemple de règle d'autoscaling Dataproc :
policy.yaml
workerConfig:
minInstances: 10
maxInstances: 10
secondaryWorkerConfig:
maxInstances: 50
basicAlgorithm:
cooldownPeriod: 4m
yarnConfig:
scaleUpFactor: 0.05
scaleDownFactor: 1.0
gracefulDecommissionTimeout: 1h
7. Configurer les composants facultatifs de Dataproc
Cette opération lance un cluster Dataproc.
Lorsque vous créez un cluster Dataproc, les composants standards de l'écosystème Apache Hadoop sont automatiquement installés sur le cluster (consultez Liste des versions Dataproc). Vous pouvez installer des composants supplémentaires, appelés composants facultatifs, sur le cluster lors de sa création.
Lors de la création du cluster Dataproc à partir de la console, nous avons activé des composants facultatifs et sélectionné Jupyter Notebook comme composant facultatif.
8. Effectuer un nettoyage des ressources
Pour nettoyer le cluster, cliquez sur Arrêter après l'avoir sélectionné dans la console Dataproc. Une fois le cluster arrêté, cliquez sur Supprimer pour le supprimer.
Une fois le cluster Dataproc supprimé, supprimez les buckets GCS dans lesquels le code a été copié.
Pour nettoyer les ressources et éviter toute facturation indésirable, le cluster Dataproc doit d'abord être arrêté, puis supprimé.
Avant d'arrêter et de supprimer le cluster, assurez-vous que toutes les données écrites dans le stockage HDFS sont copiées dans GCS pour un stockage durable.
Pour arrêter le cluster, cliquez sur Arrêter.
Une fois le cluster arrêté, cliquez sur Supprimer pour le supprimer.
Dans la boîte de dialogue de confirmation, cliquez sur Supprimer pour supprimer le cluster.