1. Introduction à Managed Service pour Apache Spark
Managed Service pour Apache Spark 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 Managed Service pour Apache Spark 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. Managed Service pour Apache Spark est également entièrement intégré à plusieurs services Google Cloud, y compris BigQuery, Cloud Storage, Gemini Enterprise Agent Engine et Knowledge Catalog.
Managed Service pour Apache Spark est disponible dans deux modes de déploiement :
- Managed Apache Spark sans serveur vous permet d'exécuter des jobs PySpark sans avoir à configurer l'infrastructure ni l'autoscaling. Managed Apache Spark est compatible avec les charges de travail par lot et les sessions / notebooks PySpark.
- Les clusters Managed Apache Spark vous permettent de gérer un cluster Hadoop YARN pour les charges de travail Spark basées sur YARN, en plus 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.
2. Créer un cluster Managed Apache Spark sur un VPC Google Cloud
Dans cette étape, vous allez créer un cluster Managed Apache Spark sur Google Cloud à l'aide de la console Google Cloud.
Pour commencer, activez l'API du service Managed Apache Spark dans la console. Une fois l'API activée, recherchez "Managed Apache Spark" 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 Managed Apache Spark.

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, Managed Apache Spark vous permet d'en choisir une automatiquement. 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.
Un cluster Managed Apache Spark est alors créé.
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 Managed Apache Spark.

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 Managed Apache Spark, 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 jobs Spark
Une fois le cluster Managed Apache Spark opérationnel, créez un job par lot PySpark et envoyez-le au cluster Managed Apache Spark.
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 Managed Apache Spark.

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 en tant que 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 Managed Apache Spark. Cliquez sur Jobs dans le menu de navigation de gauche, puis sur Envoyer un job.

Indiquez unID de job et unerégion. Sélectionnez votre cluster et indiquez l'emplacement GCS du script Spark que vous avez copié. Ce job s'exécutera en tant que job par lot Spark sur Managed Apache Spark.
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 Managed Apache Spark et non dans les nœuds de calcul. Cliquez sur Envoyer pour envoyer le job par lot à Managed Apache Spark.

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

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

Notez que le type de job 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 le job 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 du cluster pour une charge de travail.
L'API AutoscalingPolicies de Managed Apache Spark 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 Managed Apache Spark sont écrites à l'aide de fichiers YAML. Ces fichiers YAML sont transmis dans la commande CLI permettant de 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 Managed Apache Spark :
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 Managed Apache Spark
Un cluster Managed Apache Spark est alors créé.
Lorsque vous créez un cluster Managed Apache Spark, les composants standard de l'écosystème Apache Hadoop sont automatiquement installés sur le cluster (consultez la section Liste des versions de Managed Apache Spark). 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 Managed Apache Spark à 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 Managed Apache Spark. Une fois le cluster arrêté, cliquez sur Supprimer pour le supprimer.
Une fois le cluster Managed Apache Spark 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 Managed Apache Spark, 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.
