Professional Documents
Culture Documents
Tema 2. Sessió 3. Tecnologies Big Data Ecosistema Apache Spark
Tema 2. Sessió 3. Tecnologies Big Data Ecosistema Apache Spark
Professor:
Lluís Echeverria Rovira
Data:
18/04/2023
Apache Spark
Apache Hadoop
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
Motor de processat i framework distribuït que facilita la manipulació i anàlisi de grans volums de dades.
Desenvolupat amb Scala, ofereix APIs per codificar amb Scala, Java, Python i R
Powered by:
https://spark.apache.org/powered-by.html
• 2013: El projecte Spark es dona a la fundació Apache, passa a nombrar-se Apache Spark i adopta la
llicència Apache 2.0.
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
• Hadoop és adequat per processar, en batch, grans fitxers mitjançant MapReduce. Spark va més enllà i permet el
processat en stream.
• Spark és més senzill d’utilitzar, donat que ofereix una API a més alt nivell.
• Hadoop, per si sol, no incorpora funcionalitats addicionals com ML. Les llibreries auxiliars que ho permeten
segueixen sent lentes ja que treballen sobre disc.
• Spark incorpora el servei DAG (Direct Acyclic Graph) Scheduler, que és responsable d’optimitzar les
aplicacions, dividint les operacions en stages i optimitzant la seva execució.
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
Arquitectura Master-Slave
Dos modes de llançament d’aplicacions:
• Mode client: El driver s’executa de forma remota, fins i tot fora
del clúster
• Mode clúster: El driver s’executa en un node worker del clúster
Pipeline d’inici:
1. SparkContext (driver) negocia recursos amb Resource Manager
2. Resource Manager li assigna executors als workers
3. SparkContext envia el codi als executors
4. Arranca l’aplicació
UAB, Grau d’Enginyeria. Arquitectura i Tecnologies Software 12
SparkContext Tema 2: Introducció al Big Data
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
Resilient Distributed Dataset (RDD): estructura de dades en memòria, distribuïda e immutable amb possibilitats de recuperació de
fallades. Proporciona una API per a realitzar transformacions i accions sobre les dades, així com per al control de la memòria i el
particionament d'elements per optimitzar la ubicació de les dades. Un RDD es pot crear des d'un emmagatzematge extern o des d'un
altre RDD i emmagatzema informació sobre els seus pares per optimitzar l'execució (mitjançant canalització d'operacions) i recomputar
la partició en cas de fallada.
Lazy evaluation
Accions: forcen el còmput i retornen un valor al driver després d'executar un càlcul al conjunt de dades. Alguns exemples:
Transformacions: Permeten crear nous RDDs a partir d’un altre RDD. Alguns exemples:
WordCount v2 WordCount v1
Error!
Estimació del valor de Pi
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
Spark SQL és un mòdul d’Apache Spark per al processat de dades estructurades. Afegit a la versió v1.6
A diferència de l'API bàsica Spark RDD, les interfícies proporcionades per Spark SQL proporcionen a més informació
sobre l'estructura de les dades i el càlcul que s'està realitzant i Apache Spark pot optimitzar, encara més, les
operacions.
Habilita l’API Dataset. Un Dataset és una col·lecció distribuïda de dades amb tipus.
Habilita l’API Dataframe. Un Dataframe és un Dataset organitzat per columnes, conceptualment equivalent a una
taula d’una base de dades relacionals. És un Dataset de Rows.
Afegeix un ampli ventall de funcionalitats i permet una codificació encara a més alt nivell.
SparkSession
Dataframe
Dataframe
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
Spark Streaming és una extensió de l’API Core d’Spark que permet un processament de flux de dades en temps
real, escalable, de gran rendiment i tolerant a fallades.
Spark Structured Streaming exten l’API SQL per al Exemple Spark Streaming
processar de flux de dades Exemple Spark Structured Streaming
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
I. Apache Spark
IV. RDD
VI. Streaming
VII. Mlib
VIII. GraphX
A un nivell alt, GraphX amplia l’Spark RDD introduint una nova abstracció de Graph: un multí graf dirigit amb propietats
connectades a cada vèrtex i aresta.