1. Introduction – Google Dataproc
Dataproc est un service entièrement géré et hautement évolutif qui permet d'exécuter Apache Spark, Apache Flink, Presto et de nombreux autres outils et frameworks Open Source. Utilisez Dataproc pour la modernisation de lacs de données, les tâches d'ETL / ELT et les opérations de data science sécurisée à l'échelle mondiale. Dataproc est également entièrement intégré à plusieurs services Google Cloud, parmi lesquels 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 des charges de travail Spark basées sur YARN, ainsi que d'utiliser des outils Open Source tels que Flink et Presto. Vous pouvez personnaliser vos clusters basés sur le 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 l'envoi de tâches Spark, PySpark, SparkR ou Spark SQL.
2. Créer un cluster Dataproc sur un VPC Google Cloud
Dans 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 dans la console. Une fois l'API activée, 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) comme infrastructure sous-jacente pour 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. Toutefois, Dataproc peut en choisir une automatiquement pour vous. Pour cet atelier de programmation, sélectionnez "us-central1" et "us-central1-c".
- Sélectionnez le type de cluster "Standard". Cela garantit qu'il existe 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 à côté de Activer la passerelle des composants. Cela permet d'accéder aux interfaces Web du cluster, y compris l'interface utilisateur Spark, Yarn Node Manager et les notebooks Jupyter.
- Dans Composants facultatifs, sélectionnez Notebook Jupyter. Cela configure le cluster avec un serveur de notebook Jupyter.
- Conservez les autres valeurs par défaut, puis cliquez sur Créer un cluster.
Cela lancera un cluster Dataproc.
3. Lancer le cluster et s'y connecter via SSH
Une fois que l'état du cluster passe à En cours d'exécution, cliquez sur le nom du cluster 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 y connecter.

Exécutez des commandes hdfs pour afficher la structure du répertoire.
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4. Interfaces Web et passerelles des composants
Dans la console du cluster Dataproc, cliquez sur le nom de votre cluster, puis sur l'onglet INTERFACES WEB.

Les interfaces Web disponibles s'affichent, y compris Jupyter. Cliquez sur Jupyter pour ouvrir un notebook Jupyter. Vous pouvez l'utiliser pour créer des notebooks en PySpark stockés sur GCS. Pour stocker votre notebook sur Google Cloud Storage et ouvrir un notebook PySpark à utiliser dans cet atelier de programmation,
5. Surveiller et observer les tâches Spark
Une fois le cluster Dataproc opérationnel, créez une tâche par lot PySpark et envoyez-la 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.

Une fois le bucket GCS 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 tâche par lot Spark dans Dataproc. Cliquez sur Tâches dans le menu de navigation de gauche, puis sur Envoyer une tâche.

Indiquez unID de tâche et une région. Sélectionnez votre cluster et indiquez l'emplacement GCS du script Spark que vous avez copié. Cette tâche s'exécutera en tant que tâche par lot Spark sur Dataproc.
Sous 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 la tâche par lot à Dataproc.

Le script Spark crée un DataFrame et l'écrit dans une table Hive test_table_1.
Une fois la tâche exécutée, vous pouvez afficher les instructions d'impression de la console dans l'onglet Surveillance.

Une fois la table Hive créée, envoyez une autre tâche de requête Hive pour sélectionner le contenu de la table et l'afficher dans la console.
Créez une autre tâche avec les propriétés suivantes :

Notez que le type de tâche est défini sur Hive et que le type de source de requête est Texte de la requête, ce qui signifie que nous allons écrire l'intégralité de l'instruction HiveQL dans la zone de texte Texte de la requête.
Envoyez la tâche en conservant les autres paramètres par défaut.

Notez comment HiveQL sélectionne tous les enregistrements et les affiche dans la console.
6. Autoscaling
L'autoscaling consiste à estimer le nombre "correct" de nœuds de calcul de cluster pour une charge de travail.
L'API AutoscalingPolicies de Dataproc fournit un mécanisme permettant d'automatiser la gestion des ressources de cluster, et permet d'activer l'autoscaling des VM de nœud de calcul du cluster. Une règle d'autoscaling est une configuration réutilisable qui décrit la façon dont les nœuds de calcul du cluster qui utilisent cette règle doivent effectuer leur scaling. Elle définit des limites de scaling, des paramètres de fréquence et d'agressivité afin de fournir un contrôle ultraprécis sur les ressources du cluster tout au long de son existence.
Les règles d'autoscaling Dataproc sont écrites à l'aide de fichiers YAML. Ces fichiers YAML sont transmis dans la commande CLI pour créer le cluster ou sélectionnés dans un bucket GCS lorsqu'un cluster est créé à partir de 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 Dataproc
Cela lancera un cluster Dataproc.
Lorsque vous créez un cluster Dataproc, les composants standard de l'écosystème Apache Hadoop sont automatiquement installés sur le cluster (consultez la section Liste des versions de 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é les composants facultatifs et sélectionné Notebook Jupyter comme composant facultatif.
8. Effectuer un nettoyage des ressources
Pour nettoyer le cluster, cliquez sur Arrêter après avoir sélectionné le cluster 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, vous devez d'abord arrêter le cluster Dataproc, puis le supprimer.
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.
