Apache Airflow
Apache Airflow is een open-source orkestrator: je beschrijft je datapijplijnen als code in Python, in de vorm van een DAG, en Airflow plant ...
Lees meerCheckpointing slaat tussentoestand op, zodat een job, stream of algoritme na een fout kan hervatten zonder helemaal opnieuw te beginnen.
Checkpointing betekent dat een systeem tussentoestand opslaat. Als een job faalt, kan ze verdergaan vanaf zo'n checkpoint in plaats van helemaal opnieuw te beginnen.
Je ziet checkpointing vaak bij streaming data, lange Spark-jobs en iteratieve algoritmes. Het systeem bewaart bijvoorbeeld welke events al verwerkt zijn, welke state bij een aggregatie hoort of hoe ver een berekening geraakt is.
Een checkpoint is dus het geheugen van een lopend proces.
In Apache Spark kan checkpointing twee dingen doen. Bij streaming bewaart Spark metadata en state zodat een stream kan herstellen. Bij DataFrames kan een checkpoint de lineage afknippen: de lange keten van transformaties wordt vervangen door een opgeslagen tussenresultaat.
In PySpark ziet dat er bijvoorbeeld zo uit:
spark.sparkContext.setCheckpointDir("/mnt/checkpoints")
stable_df = transformed_df.checkpoint()De checkpointlocatie moet betrouwbaar zijn. Een lokale tijdelijke map is geen goed herstelpunt als de machine verdwijnt.
Cache bewaart data om hergebruik sneller te maken. Checkpointing bewaart toestand om herstel of kortere lineage mogelijk te maken.
Een cache mag verdwijnen. Dan rekent het systeem de data opnieuw uit. Een checkpoint gebruik je net omdat je een stabiel herstelpunt wil.
Stateful streaming. Je telt events per klant of houdt vensters bij doorheen de tijd.
Lange pipelines. Een fout op het einde mag niet betekenen dat alles opnieuw moet.
Iteratieve algoritmes. Lineage wordt anders lang en duur om te herstellen.
Exactly-once verwerking. Checkpoints helpen bijhouden wat al verwerkt is.
Checkpointing vraagt opslag en tijd. Te vaak checkpointen maakt elke run trager. Te weinig checkpointen maakt herstel zwaar. Het juiste interval hangt af van de kost van opnieuw verwerken, de foutkans en de grootte van de state.
In streaming is de keuze ook operationeel: checkpoints moeten blijven bestaan zolang je de stream met dezelfde state wil hervatten.
Gebruik betrouwbare opslag. Kies opslag die een worker- of nodefout overleeft.
Bewaar configuratie samen met de job. Een checkpoint hoort bij dezelfde query- en state-definitie.
Ruim oude checkpoints bewust op. Weggooien kan betekenen dat je opnieuw moet starten.
Verwar het niet met backup. Een checkpoint helpt een job herstellen, niet je volledige databron.
Apache Airflow is een open-source orkestrator: je beschrijft je datapijplijnen als code in Python, in de vorm van een DAG, en Airflow plant ...
Lees meerApache Hudi is een open tabelformaat dat een data lake op object storage transactioneel maakt. Het blinkt uit in snelle upserts, verwijderin...
Lees meerApache Kafka is een open-source platform dat stromen van events opslaat en doorgeeft: producenten schrijven berichten naar een topic, afneme...
Lees meerApache Spark is een open-source engine voor grootschalige data-analyse op een cluster. Je schrijft SQL of DataFrames in Python, Scala of Jav...
Lees meerAt-least-once delivery is de garantie dat elk bericht minstens één keer aankomt. Verloren gaat het niet, maar door een retry na een gemiste ...
Lees meer