Google PDE: Spark, Dataproc en Gedistribueerde Dataverwerking — Studiegids

Onderdeel van de Google Professional Data Engineer — Studiegids. Oefen met geverifieerde antwoorden in het Google-examencentrum, of doe getimede oefentests op ExamRoll.io.

Overzicht

Apache Spark op Google Cloud Dataproc biedt een beheerd, elastisch platform voor gedistribueerde dataverwerking. U kunt kiezen tussen langlopende of kortstondige (ephemeral) Dataproc-clusters en Dataproc Serverless for Spark, afhankelijk van de behoefte aan controle, variabiliteit in runtime en de hoeveelheid beheer. Spark biedt veerkrachtige abstracties (RDDs), relationele API’s (DataFrames en Spark SQL) en een fouttolerante DAG-execution-engine die is geoptimaliseerd voor iteratieve en batch-ETL op grote schaal. Op Google Cloud vervangt Cloud Storage HDFS voor duurzame, goedkope opslag; de BigQuery-connector maakt directe analytische offload mogelijk; en Dataproc Metastore centraliseert het schemabeheer. Effectieve oplossingen stemmen de levenscycli van opslag en compute op elkaar af, stemmen Spark af op de workload, implementeren observability en passen beveiliging toe met het ’least privilege’-principe en netwerkisolatie.

Dataproc-architectuur: Clusters, Serverless, Storage en Metastore

    --conf mapreduce.fileoutputcommitter.algorithm.version=2
    ```

  - Gebruik Parquet/ORC met 'column pruning' en 'predicate pushdown'. Beheer kleine bestanden via compactie om te streven naar 128–512 MiB per bestand voor een efficiënte scan.
- Hive metastore
  - Centraliseer schema's en tabelmetadata in Dataproc Metastore (een beheerde Apache Hive Metastore) of een door Cloud SQL ondersteunde metastore om catalogi te delen tussen clusters.
  - Gebruik externe tabellen die naar GCS verwijzen voor duurzaamheid; partitioneer op datum/uur om de scankosten te beperken.
- Jobs, initialisatie en workflows
  - Submit spark-, pyspark-, spark-sql- of hadoop-jobs. Initialisatie-acties installeren extra libraries of agents bij het aanmaken van het cluster (bijvoorbeeld connectors, Python-libs).
  - Workflow-templates parametriseren pipelines die uit meerdere stappen bestaan; ze kunnen per workflow kortstondige (ephemeral) clusters aanmaken en deze vervolgens weer verwijderen. Dit verbetert de isolatie en verlaagt de kosten voor ongebruikte resources.
  - Kortstondige (ephemeral) clusters worden aanbevolen voor batch-ETL; data en de metastore bevinden zich buiten het cluster (GCS, Dataproc Metastore, BigQuery).
- BigQuery-integratie
  - De Spark BigQuery-connector leest en schrijft rechtstreeks naar BigQuery; overweeg de BigQuery Storage Read API voor doorvoersnelheid en de Write API voor streaming inserts met lagere latentie en 'exactly-once'-garanties.
  - Voer voor tabelonderhoud downstream MERGE-operaties of partitie-overschrijvingen uit in BigQuery om laadacties atomair af te ronden.
### Spark-model, prestatie-tuning en betrouwbaarheid

- API's en uitvoering
  - RDDs: low-level, onveranderlijk (immutable), type-safe in Scala/Java; je beheert zelf partitionering en persistentie.
  - DataFrames/Datasets: relationeel, geoptimaliseerd door Catalyst; geef hier de voorkeur aan voor ETL vanwege query-optimalisatie en codegeneratie.
  - Transformaties zijn lazy (map, filter, join); actions activeren de uitvoering (count, collect, save). Spark bouwt een DAG van stages die worden gesplitst door shuffles; taken worden per partitie uitgevoerd.
- Partitionering en shuffle
  - Inputpartitionering: genoeg partities om alle cores te benutten; begin met 2–4x het totale aantal executor-cores. Beheer via spark.default.parallelism (voor RDDs) en reader-opties (voor DataFrames).
  - Shuffle-partities: de standaardwaarde van 200 is vaak te weinig of te veel. Pas aan:
--conf spark.sql.shuffle.partitions= {total_executor_cores * 2 to 3}
```
      --conf spark.sql.autoBroadcastJoinThreshold=64m
      ```

    - Salt keys voor 'hot' partities; pas map-side pre-aggregatie toe; filter vroegtijdig.
    - Schakel Adaptive Query Execution (AQE) in om partities na de shuffle samen te voegen (coalesce) en skewed joins te verwerken:
  --conf spark.sql.adaptive.enabled=true
  ```
      --conf spark.dynamicAllocation.enabled=true
      --conf spark.shuffle.service.enabled=true
      --conf spark.dynamicAllocation.minExecutors=0
      --conf spark.dynamicAllocation.maxExecutors=200
      ```

- Fouttolerantiepatronen voor batch-ETL
  - Idempotente schrijfacties: schrijf naar een tijdelijk/staging-pad en promoveer dit vervolgens atomisch met een commit op directory-niveau; voor BigQuery, schrijf naar een staging-tabel en gebruik MERGE:
MERGE target t USING staging s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET ...
WHEN NOT MATCHED THEN INSERT (...)
```

Beveiliging, Waarneembaarheid en Kosten

    --conf spark.eventLog.enabled=true
    --conf spark.eventLog.dir=gs://bucket/spark-events/
    ```

  - Dataproc streamt driver- en YARN-logs naar Cloud Logging; exporteer naar sinks voor retentie/forensisch onderzoek.
  - Monitor met Cloud Monitoring-statistieken: YARN pending containers, CPU, geheugen, HDFS-status (indien gebruikt), GCS-doorvoer. Stel alerts in voor langdurige stage-retries, verlies van executors en pieken in speculatieve uitvoering.
  - Foutanalyse: veelvoorkomende oorzaken zijn door skew veroorzaakte 'stragglers' (achterblijvers), executor OOM tijdens shuffle, fouten bij het committen naar object storage en verlies van preemptible/spot nodes. Verhoog het aantal retries oordeelkundig; overmatige retries kunnen de kosten en vertraging vergroten.
- Kostenoptimalisatie
  - Gebruik 'ephemeral' (tijdelijke) clusters of Dataproc Serverless om kosten voor inactiviteit te vermijden; bewaar data in GCS om het gebruik van persistent disk te minimaliseren.
  - Voeg preemptible/spot secundaire workers toe om piekbelasting op te vangen; ontwerp voor herberekening, aangezien taken op verloren nodes opnieuw worden geprobeerd. Plaats geen masters op preemptible nodes.
  - Kies de juiste machine types ('right-sizing') en gebruik autoscaling om de capaciteit te verkleinen wanneer wachtrijen leeg zijn. Geef de voorkeur aan Parquet/ORC met 'partition pruning' om scankosten en CPU-gebruik te verminderen.
  - Vermijd kleine bestanden door outputs te compacteren; minder, grotere bestanden verminderen de metadata-overhead en de uitvoertijd van de job.
  - Voor korte, periodieke jobs (bijvoorbeeld wekelijkse 30-minuten Spark ETL), bieden preemptible workers of serverless vaak het beste kostenprofiel.

#### Praktijkscenario

Acme Retail migreert een on-premise Hadoop-cluster van 30 nodes dat nachtelijke Spark- en Hive-ETL-processen uitvoert voor downstream analytics. Ze willen bestaande jobs hergebruiken met minimale aanpassingen, het fulltime beheren van clusters vermijden, data langer bewaren dan de levensduur van een cluster en de opslagkosten verlagen.

Aanpak:
1) Plaats data en metadata in managed services
   - Sla alle ruwe en gecureerde data op in Cloud Storage met Parquet en partitionering (bijvoorbeeld, dt=JJJJ-MM-DD).
   - Rationale: GCS is duurzaam, goedkoop en ontkoppelt compute van storage, zodat 'ephemeral' clusters en serverless jobs kunnen draaien zonder persistent disks. Gepartitioneerde Parquet maakt 'predicate pushdown' en efficiënte scans mogelijk.

2) Centraliseer de catalogus met Dataproc Metastore
   - Migreer de Hive metastore naar Dataproc Metastore. Maak externe Hive-tabellen aan die verwijzen naar GCS-paden en behoud de bestaande schema- en partitielogica.
   - Rationale: Een beheerde metastore stelt meerdere 'ephemeral' clusters en serverless jobs in staat om tabeldefinities te delen zonder een HA MySQL/PostgreSQL-instantie te hoeven draaien.

3) Gebruik 'ephemeral' Dataproc-clusters voor batch-ETL en workflow templates voor orkestratie
   - Definieer een workflow template die een cluster aanmaakt met de vereiste image (bijvoorbeeld 2.1-debian11), Spark-jobs uitvoert (spark-sql en pyspark) en het cluster na voltooiing verwijdert. Voeg initialisatieacties toe om eventuele custom libraries te installeren.
   - Rationale: 'Ephemeral' clusters elimineren kosten voor inactiviteit en isoleren job-afhankelijkheden. Workflow templates bieden herhaalbaarheid en parametrisering (datums, input-paden).

4) Schakel autoscaling en preemptible workers in
   - Koppel een autoscaling policy met een kleine groep core workers en een grotere pool van preemptible secundaire workers; stem de 'cooldowns' af om direct na uitvoering terug te schalen.
   - Rationale: Core workers handhaven de clusterstabiliteit; preemptible workers vangen shuffles en 'wide transformations' op tegen lagere kosten. Spark/YARN-retries verwerken verloren taken na preemption.

5) Integreer met BigQuery via de Spark BigQuery connector
   - Voor het laden van dimensie-/feitentabellen, schrijf Spark-resultaten naar staging BigQuery-tabellen en voer vervolgens MERGE-statements uit om doeltabellen atomair bij te werken. Waar direct overschrijven veilig is, schrijf naar gepartitioneerde tabellen met de 'partition overwrite'-modus.
   - Rationale: BigQuery dient analytics en BI op grote schaal; staging+MERGE levert transactioneel-achtige 'upserts' vanuit batch Spark, wat inconsistentie downstream vermindert.

6) Optimaliseer Spark voor prestaties en betrouwbaarheid
   - Stel shuffle-partities in relatief aan het aantal executor cores en schakel AQE in:
 --conf spark.sql.shuffle.partitions=600
 --conf spark.sql.adaptive.enabled=true
 ```
  1. Versterk de beveiliging en het netwerk

    • Voer clusters uit met toegewijde serviceaccounts die alleen de benodigde rollen voor GCS-paden, de metastore en BigQuery-datasets hebben. Maak private IP-clusters in een beperkt subnet met Private Google Access en beperk de toegang tot de UI via firewallregels.
    • Rationale: ‘Least privilege’ en netwerkisolatie verkleinen het aanvalsoppervlak; private control-plane egress voorkomt blootstelling aan het publieke internet.
  2. Implementeer logging, geschiedenis en alerts

    • Schakel Spark event logs naar GCS in en implementeer de History Server; stuur driver-/YARN-logs naar Cloud Logging met retentie. Voeg Monitoring-alerts toe voor lang wachtende containers, herhaalde taakfouten of een buitensporige jobduur.
    • Rationale: Gecentraliseerde logs ondersteunen ‘root-cause analysis’; proactieve alerts detecteren skew, OOM’s of verminderde I/O-prestaties in een vroeg stadium.
  3. Moderniseer selectief met Dataproc Serverless voor ad-hoc en elastische pieken

    • Verplaats sporadische of verkennende Spark SQL-workloads naar Dataproc Serverless; behoud de nachtelijke pipelines op ’ephemeral’ clusters totdat ze volledig gevalideerd zijn op serverless.
    • Rationale: Serverless elimineert clusterbeheer en schaalt automatisch, ideaal voor onvoorspelbare workloads; bestaande workflows kunnen doorgaan met minimale codewijzigingen.
  4. Valideer object-store committers en het beheer van kleine bestanden

    • Stel het FileOutputCommitter-algoritme in op v2 en compacteer outputs naar 256–512 MiB per bestand via repartition/coalesce vóór het schrijven.
    • Rationale: Object stores missen atomaire ‘rename’-operaties; geoptimaliseerde committers verminderen de copy/rename-overhead. Compactie beperkt het ‘small-files’-probleem voor betere prestaties en lagere kosten.

Dit ontwerp hergebruikt bestaande Spark- en Hive-jobs met minimale refactoring, garandeert de duurzaamheid van data in GCS, centraliseert schema’s, beperkt de ‘blast radius’ van beveiligingsincidenten, biedt robuuste waarneembaarheid en optimaliseert de kosten door middel van ’ephemeral’ clusters, autoscaling, preemptible capaciteit en gericht gebruik van serverless uitvoering.


Messaging · Alle domeinen · Data-ingestie

Oefen deze vragen → · Getimede oefening op ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Slaag voor je examen →

Blader door Google →

Related guides

Alles-in-één toegang

Eén abonnement. Elk examen.

Elk plan ontgrendelt onbeperkt zoeken naar antwoorden, oefentests, AI-uitleg en de volledige bronnenbibliotheek — in meer dan 20 talen.

Maandelijks
24.87
Just €0.83/day
Alles inbegrepen:
  • Onbeperkt zoeken naar antwoorden
  • Onbeperkte oefentests
  • AI-gestuurde uitleg
  • Volledige bronnenbibliotheek
  • 20+ talen
  • Wekelijkse contentupdates
  • Beloningen & verwijzingen
  • Prioriteitsondersteuning
Start gratis proefperiode

Geen creditcard vereist*

Beste waarde
12 maanden
179.87
Just €0.49/daySave 40%
Alles inbegrepen:
  • Onbeperkt zoeken naar antwoorden
  • Onbeperkte oefentests
  • AI-gestuurde uitleg
  • Volledige bronnenbibliotheek
  • 20+ talen
  • Wekelijkse contentupdates
  • Beloningen & verwijzingen
  • Prioriteitsondersteuning
Start gratis proefperiode

Geen creditcard vereist*

✓ Gratis plan inbegrepen · ✓ Annuleer op elk moment · ✓ Alle plannen ontgrendelen het volledige product