Managed Service for Apache Spark

1. Introduzione - Managed Service for Apache Spark

Managed Service for Apache Spark è un servizio completamente gestito e a scalabilità elevata per l'esecuzione di Apache Spark, Apache Flink, Presto e molti altri strumenti e framework open source. Utilizza Managed Service for Apache Spark per la modernizzazione dei data lake, l'ETL / ELT e la data science sicura su scala planetaria. Managed Service for Apache Spark è anche completamente integrato con diversi servizi Google Cloud, tra cui BigQuery, Cloud Storage, Gemini Enterprise Agent Engine e Knowledge Catalog.

Managed Service for Apache Spark è disponibile in due modalità di deployment:

  • Managed Apache Spark serverless consente di eseguire job PySpark senza dover configurare l'infrastruttura e la scalabilità automatica. Managed Apache Spark supporta i workload batch PySpark e le sessioni / i notebook.
  • I cluster Managed Apache Spark consentono di gestire un cluster Hadoop YARN per i workload Spark basati su YARN, oltre a strumenti open source come Flink e Presto. Puoi personalizzare i cluster basati su cloud con la scalabilità verticale o orizzontale che preferisci, inclusa la scalabilità automatica.

2. Creare un cluster Managed Apache Spark su un VPC Google Cloud

In questo passaggio creerai un cluster Managed Apache Spark su Google Cloud utilizzando la console Google Cloud.

Come primo passo, abilita l'API del servizio Managed Apache Spark nella console. Una volta abilitata, cerca "Managed Apache Spark" nella barra di ricerca e fai clic su Crea cluster.

Seleziona Cluster su Compute Engine per utilizzare le VM Google Compute Engine(GCE) come infrastruttura sottostante per l'esecuzione dei cluster Managed Apache Spark.

a961b2e8895e88da.jpeg

Ora ti trovi nella pagina Creazione cluster.

9583c91204a09c12.jpeg

In questa pagina:

  • Fornisci un nome univoco per il cluster.
  • Seleziona la regione specifica regione. Puoi anche selezionare una zona, ma Managed Apache Spark offre la possibilità di sceglierne una automaticamente. Per questo codelab, seleziona "us-central1" e "us-central1-c"..
  • Seleziona il tipo di cluster "Standard". In questo modo, è presente un nodo master.
  • Nella scheda Configura nodi, verifica che il numero di worker creati sia due.
  • Nella sezione Personalizza cluster, seleziona la casella accanto a Attiva gateway dei componenti. In questo modo, puoi accedere alle interfacce web sul cluster, tra cui l'interfaccia utente di Spark, Yarn Node Manager e i notebook Jupyter.
  • In Componenti facoltativi, seleziona Blocco note Jupyter. In questo modo, il cluster viene configurato con un server di notebook Jupyter.
  • Lascia invariato tutto il resto e fai clic su Crea cluster.

Verrà avviato un cluster Managed Apache Spark.

3. Avviare il cluster e connettersi tramite SSH

Una volta che lo stato del cluster diventa In esecuzione, fai clic sul nome del cluster dalla console Managed Apache Spark.

7332f1c2cb25807d.jpeg

Fai clic sulla scheda Istanza VM per visualizzare il nodo master e i due nodi worker del cluster.

25be1578e00f669f.jpeg

Fai clic su SSH accanto al nodo master per accedere al nodo master.

2810ffd97f315bdb.jpeg

Esegui i comandi hdfs per visualizzare la struttura delle directory.

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. Interfacce web e gateway dei componenti

Dalla console del cluster Managed Apache Spark, fai clic sul nome del cluster, quindi sulla scheda INTERFACCE WEB.

6398f71d6293d6ff.jpeg

Vengono visualizzate le interfacce web disponibili, tra cui Jupyter. Fai clic su Jupyter per aprire un notebook Jupyter. Puoi utilizzarlo per creare notebook in PySpark archiviati in GCS. per archiviare il notebook in Google Cloud Storage e aprire un notebook PySpark da utilizzare in questo codelab.

5. Monitorare e osservare i job Spark

Con il cluster Managed Apache Spark in esecuzione, crea un job batch PySpark e invialo al cluster Managed Apache Spark.

Crea un bucket Google Cloud Storage (GCS) per archiviare lo script PySpark. Assicurati di creare il bucket nella stessa regione del cluster Managed Apache Spark.

679fd2f76806f4e2.jpeg

Ora che hai creato il bucket GCS, copia il seguente file in questo bucket.

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

Questo script crea un DataFrame Spark di esempio e lo scrive come tabella 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 .....")

Invia questo script come job batch Spark in Managed Apache Spark. Fai clic su Job nel menu di navigazione a sinistra, quindi su Invia job.

5767fc7c50b706d3.jpeg

Fornisci unID job e una regione. Seleziona il cluster e fornisci la località GCS dello script Spark che hai copiato. Questo job verrà eseguito come job batch Spark in Managed Apache Spark.

In Proprietà , aggiungi la chiave spark.submit.deployMode e il valore client per assicurarti che il driver venga eseguito nel nodo master Managed Apache Spark e non nei nodi worker. Fai clic su Invia per inviare il job batch a Managed Apache Spark.

a7ca90f5132faa31.jpeg

Lo script Spark creerà un DataFrame e lo scriverà in una tabella Hive test_table_1.

Una volta eseguito correttamente il job, puoi visualizzare le istruzioni di stampa della console nella scheda Monitoraggio.

bdec2f3ae1055f9.jpeg

Ora che hai creato la tabella Hive, invia un altro job di query Hive per selezionare i contenuti della tabella e visualizzarli nella console.

Crea un altro job con le seguenti proprietà:

c16f02d1b3afaa27.jpeg

Tieni presente che Tipo di job è impostato su Hive e il tipo di origine della query è Testo query, il che significa che scriveremo l'intera istruzione HiveQL nella casella di testo Testo query.

Invia il job, mantenendo i valori predefiniti per gli altri parametri.

e242e50bc2519bf4.jpeg

Nota come HiveQL seleziona tutti i record e li visualizza nella console.

6. Scalabilità automatica

La scalabilità automatica è l'attività di stimare il numero "corretto" di nodi worker del cluster per un workload.

L'API Managed Apache Spark AutoscalingPolicies fornisce un meccanismo per automatizzare la gestione delle risorse cluster e consente la scalabilità automatica delle VM worker del cluster. Un criterio di scalabilità automatica è una configurazione riutilizzabile che descrive in che modo i worker del cluster che utilizzano il criterio di scalabilità automatica devono essere scalati. Definisce i limiti, la frequenza e l'aggressività della scalabilità per fornire un controllo dettagliato sulle risorse del cluster nel corso del suo ciclo di vita.

I criteri di scalabilità automatica di Managed Apache Spark vengono scritti utilizzando file YAML e questi file YAML vengono passati nel comando CLI per la creazione del cluster o selezionati da un bucket GCS quando un cluster viene creato dalla console Cloud.

Ecco un esempio di criterio di scalabilità automatica di 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. Configurare i componenti facoltativi di Managed Apache Spark

Verrà avviato un cluster Managed Apache Spark.

Quando crei un cluster Managed Apache Spark, i componenti standard dell'ecosistema Apache Hadoop vengono installati automaticamente sul cluster (vedi Elenco delle versioni di Managed Apache Spark). Puoi installare componenti aggiuntivi, chiamati Componenti facoltativi , sul cluster durante la creazione.

e39cc34245af3f01.jpeg

Durante la creazione del cluster Managed Apache Spark dalla console, abbiamo abilitato i componenti facoltativi e selezionato Blocco note Jupyter come componente facoltativo.

8. Liberare spazio dalle risorse

Per eseguire la pulizia del cluster, fai clic su Arresta dopo aver selezionato il cluster dalla console Managed Apache Spark. Una volta arrestato il cluster, fai clic su Elimina per eliminarlo.

Dopo aver eliminato il cluster Managed Apache Spark, elimina i bucket GCS in cui è stato copiato il codice.

Per eseguire la pulizia delle risorse e interrompere qualsiasi fatturazione indesiderata, il cluster Managed Apache Spark deve essere prima arrestato e poi eliminato.

Prima di arrestare ed eliminare il cluster, assicurati che tutti i dati scritti nell'archiviazione HDFS vengano copiati in GCS per l'archiviazione permanente.

Per arrestare il cluster, fai clic su Arresta.

52065de928ab52e7.jpeg

Una volta arrestato il cluster, fai clic su Elimina per eliminarlo.

Nella finestra di dialogo di conferma, fai clic su Elimina per eliminare il cluster.

52065de928ab52e7.jpeg