SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Prof. Dr. Jens Albrecht
TH Nürnberg
Einführung in
Prof. Dr. Jens Albrecht Einführung in Apache Spark 3
Hybride BI-/Big-Data-Architektur
AnalyseDatenhaltungDatenquellen
Klassische Datenquellen
OLTP-Systeme
Big-Data-Quellen
Dokumente, Server Logs, Sensor Daten,
Social, Clickstream, GPS,
Business
Intelligence
Enterprise
DWH
Data
Marts
Predictive
Analytics
Operational
Analytics
Explorative
Analyse
Data Lake
Prof. Dr. Jens Albrecht Einführung in Apache Spark 4
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 5
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 6
Hadoop: Pro & Contra
Stärken von Hadoop
• Verteilte Speicherung
(HDFS)
• Verteilte Verarbeitung
(MapReduce)
• Fehlertoleranz
• Open Source
• Professionelle
Distributionen
• Umfangreiches
Ökosystem
Schwächen von Hadoop
• Hohe Latenz bei
Verarbeitung (träge)
• Komplexe API
• Machine Learning
problematisch
• Kein Streaming
Prof. Dr. Jens Albrecht Einführung in Apache Spark 7
Hadoop Environment
Distributed Job Processing
MapReduce
(Hive, Sqoop, Pig, Mahout)
Distributed Storage (HDFS)
Resource Management
YARN
Hadoop+ Ecosystem
Admin: Ambari, Cloudera Manager
FileFormat: Avro, Parquet, ORC, …
DB: HBase, Cassandra, Acummulo, …
Security: Ranger, Sentry, Kerberos, …
Prof. Dr. Jens Albrecht Einführung in Apache Spark 8
Hadoop Environment mit Spark
Distributed Job Processing
Spark MapReduce
(Hive, Sqoop, Pig, Mahout)
Distributed Storage (HDFS)
Resource Management
YARN
Hadoop+ Ecosystem
Admin: Ambari, Cloudera Manager
FileFormat: Avro, Parque, ORC, …
DB: HBase, Cassandra, Acummulo, …
Security: Ranger, Sentry, …
Prof. Dr. Jens Albrecht Einführung in Apache Spark 9
Hadoop MapReduce vs. Spark
HDFS
Hadoop MapReduce: Schreiben nach jeder Map- oder Reduce-Operation
HDFSSchritt 1 HDFSSchritt 2 HDFSSchritt 3
HDFS
Spark: Arbeitet im Hauptspeicher und optimiert Einzelschritte
RAMSchritt 1 HDFS
Schritt
2+3
Prof. Dr. Jens Albrecht Einführung in Apache Spark 10
Spark Infrastruktur
Cluster Manager (Master)
▸ Local
▸ YARN (Hadoop)
▸ Mesos
▸ Standalone
Driver Program
SparkSession
Executor
Worker Node
Cache
Tasks
Cluster Manager
Executor
Worker Node
Cache
Tasks
Prof. Dr. Jens Albrecht Einführung in Apache Spark 11
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 12
Apache Spark – Swiss Army Knife of Big Data
☛ Skalierbare, performante, funktionale Engine für Big Data Processing
▸ Skalierbar durch Verteilung
▸ Performance: InMemory-Verarbeitung und Query Optimization
▸ Funktionalität: Einfache, einheitliche API; mächtige Funktionen
Batch Processing
Interactive Data Discovery
Java
Python
Scala R
Data Streaming
Graph Processing
SQL
Apache Spark
Machine Learning
Prof. Dr. Jens Albrecht Einführung in Apache Spark 13
Anwendungsfälle für Apache Spark
Datenintegration und –aufbereitung (ETL)
▸ Verknüpfung verschiedenster Datenquellen
▸ Komplexe Transformationen mit relationalen und nicht-relationalen Operatoren über DataFrame API
▸ Ergebnisse als Tabelle (Hive, JDBC) oder Datei
Interaktive Analyse und Data Discovery
▸ Interaktive Anfragen direkt auf Rohdaten möglich
▸ Zugriff mit SQL, Python, R sowie über JDBC/ODBC
▸ Datenanalyse und -visualisierung mit Data-Science-Notebooks wie Apache Zeppelin
Near Real-Time Data Processing
▸ Kontinierliche Verarbeitung von Datenströmen für IoT-Anwendungen, Betrugserkennung u.v.m.
Machine Learning und Data Science
▸ Einsatz von ML-Verfahren für Vorhersagen, Betrugserkennung, Empfehlungssysteme u.v.m
High-Performance Computing
▸ Parallelisierung aufwändiger Berechnungen im Cluster für rechenintensive Simulationen
Prof. Dr. Jens Albrecht Einführung in Apache Spark 14
Spark Historie
2009 Start der Entwicklung am AMPLab der Universität
Berkeley durch Matei Zaharia
2013 Gründung der Firma Databricks
Juni 2013 Apache Incubation
Feb. 2014 Apache Top-Level
Mai 2014 Spark 1.0: SparkSQL, MLlib, GraphX, Streaming
März 2015 Spark 1.3: DataFrame API
Jan. 2016 Spark 1.6: Dataset API
Juli 2016 Spark 2.0: überarbeite API für DataFrames und Datasets,
Performance Optimierungen, SparkSQL erweitert
Dez. 2016 Spark 2.1: Verbesserungen bei Streaming und Machine
Learning
Mai 2017 Spark 2.1.1
Prof. Dr. Jens Albrecht Einführung in Apache Spark 15
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 16
RDD
Worker Worker Worker Worker
Partition
RDDs
Verteilte Collections:
▸ Alle Operationen werden parallel ausgeführt
Partitionierung
▸ HDFS-Blöcke werden zu Partitionen
Prof. Dr. Jens Albrecht Einführung in Apache Spark 4
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 18
Beispielanalyse mit RDDs
Variante 1
Variante 2
mintemp_rdd = sc.textFile(hdfs_path + "weather.csv")
.map(lambda line: [line.split(';')[i] for i in (0, 2, 4)])
.filter(lambda (id, temp, status): status == "OK")
.map(lambda (id, temp, status): (int(id), float(temp)))
.reduceByKey(min)
mintemp_rdd.collect()
file_rdd = sc.textFile(hdfs_path + "weather.csv")
tuple_rdd = file_rdd.map(lambda line: [line.split(';')[i] for i in (0, 2, 4)])
filtered_rdd = tuple_rdd.filter(lambda (id, temp, status): status == "OK")
pair_rdd = filtered_rdd.map(lambda (id, temp, status): (int(id), float(temp)))
mintemp_rdd = pair_rdd.reduceByKey(min)
mintemp_rdd.collect()
Prof. Dr. Jens Albrecht Einführung in Apache Spark 19
Operationen auf RDDs
Transformations: Erzeugung eines neuen RDD aus bestehendem
▸ Lazy evaluation – Ergebnisse nicht materialisiert
▸ Deutlich mehr Funktionalität als Map-Reduce
Actions: Geben einen Wert oder ein Dataset an Aufrufer zurück
map filter sample
groupByKey sortByKey reduceByKey
union pipe repartition
join leftOuterJoin rightOuterJoin
…
reduce collect count
first take(n) saveAsTextFile
…
Prof. Dr. Jens Albrecht Einführung in Apache Spark 20
RDDs: Operatorengraph (DAG)
CSV File
map
csv RDD
Result
reduce
RDD
Join
RDD
Action
joined RDD
JSON File
map
JSON RDD
RDD
RDD Lineage
Prof. Dr. Jens Albrecht Einführung in Apache Spark 21
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 22
DataFrames
ID: Integer Temp: Double Status: String
403 15.6 OK
3668 16.6 OK
3379 14.6 OK
3379 -999.0 ERROR
3668 13.9 OK
[403, 15.6, "OK"]
[3668, 16.6, "OK"]
[3379, 14.8, "OK"]
[3379, -999.0, "ERROR"]
[3668, 13.9, "OK"]
RDD: Schemafrei
• verteilte Liste
von Objekten
• Spark kennt innere
Struktur nicht
DataFrame: mit Schema
• verteilte Tabelle mit benannten,
typisierten Spalten
• Basis für Spark SQL
Prof. Dr. Jens Albrecht Einführung in Apache Spark 23
DataFrames
DataFrames
▸ Konzept übernommen aus R und Python (Pandas)
▸ Verteilte Collection tabellen-strukturierter Daten:
Datensätze mit typisierten, benannten Spalten
▸ RDD mit Schema
▸ APIs für Scala, Java, Python, R
Schema Definition:
▸ Explizit: Case Class, StructType
▸ Implizit: automatische Erkennung durch Sampling
Unterstützung vielder Datenquellen
▸ Nativ: RDD, JSON, JDBC, Parquet
▸ 3rd Party: CSV, Cassandra uvm.
Prof. Dr. Jens Albrecht Einführung in Apache Spark 5
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 25
Beispiel-Schema
id;timestamp;temp;humid;status
403;2016090723;15.6;94.0;OK
3668;2016090800;16.6;90.0;OK
3379;2016090801;14.8;95.0;OK
403;2016090801;-999;-999;ERROR
3379;2016090802;14.2;95.0;OK
3668;2016090802;13.9;96.0;OK
RDBMS Quelle CSV Quelle: weather.csv
Prof. Dr. Jens Albrecht Einführung in Apache Spark 26
Definition von DataFrames
# Erzeuge DateFrame aus csv mit automatischer Schema-Erkennung
weather_df = spark.read.format("com.databricks.spark.csv") 
.option("header", "true") 
.option("inferSchema", "true") 
.load("weather.csv")
# Erzeuge DataFrame aus JDBC-Quelle
stations_df = spark.read.format('jdbc') 
.option('url', 'jdbc:mysql://host/db') 
.option('dbtable', 'stations')
Prof. Dr. Jens Albrecht Einführung in Apache Spark 27
Data Frames und Spark SQL
# DataFrames als temporäre Tabellen registrieren
weather_df.createOrReplaceTempView("weather_csv")
stations_df.createOrReplaceTempView("stations_jdbc")
# Anfrage
query = """
SELECT name, timestamp, temp
FROM stations_jdbc s JOIN weather_csv w ON s.id = w.id
WHERE temp > 33 AND state = 'Bayern'
"""
# Spark SQL erzeugt neuen DataFrame basierend auf Anfrage
result_df = spark.sql(query)
# Mögliche Actions
result_df.show()
result_df.collect()
result_df.write.saveAsTable('weather_report', mode='overwrite')
Prof. Dr. Jens Albrecht Einführung in Apache Spark 28
DataFrame DSL
SQL
DataFrame API
SELECT name, timestamp, temp
FROM stations_jdbc s JOIN weather_csv w ON s.id = w.id
WHERE temp > 33 AND state = 'Bayern'
result_df = stations_df 
.join(weather_df, stations_df.id == weather_df.id) 
.filter("temp > 33 AND state = 'Bayern'") 
.select("name", "timestamp", "temp")
result_df.show()
Prof. Dr. Jens Albrecht Einführung in Apache Spark 29
DataFrames:
Motivation: Wissen über Strukturen hat viele Vorteile
Einfachheit: Einfache API für strukturierte Datenformate wie
relationale Tabellen, CSV, JSON etc.
▸ SQL-ähnliche Transformationen in DataFrame API
▸ SQL-Zugriff auf DataFrames mit SparkSQL
▸ Unterstützung verschiedener DSLs (Domain Specific Languages)
Effiziente Serialisierung und Speicherorganisation
▸ Bei Serialisierung von RDDs enthält jedes Element sein eigenes
Schema, bei DataFrames nicht erforderlich
▸ Datentransfers zwischen Knoten deutlich effizienter realisierbar
Bessere Optimierungsmöglichkeiten (Catalyst Optimizer)
▸ Generische Abstraktionsebene für Anfrage-Optimierung
Prof. Dr. Jens Albrecht Einführung in Apache Spark 31
weather
HDFS file
Datasource
project
join
filter
stations
JDBC
Datasource weather
HDFS file
Datasource
project
join
stations
JDBC
Datasource
project
filter
project
filter
Nicht-optimierter Plan Optimierter Plan
Spark SQL Optimizer: Filter Push-Down
Predicate
Pushdown
temp > 33
AND
state = 'By'
temp > 33 state = 'By'
Prof. Dr. Jens Albrecht Einführung in Apache Spark 32
Spark SQL
Unterstützung aller 99 TPC-DS-Anfragen
▸ Subqueries
▸ With-Klausel
▸ Left, Right, Outer Join
OLAP Erweiterungen
▸ SQL 2003: Grouping, Windowing (Partition By …)
▸ Crosstab: Explode, Pivot….
Zusätzliche Funktionen
▸ User-Defined Functions
▸ Geschachtelte Datentypen (Map, Array, StructFiled)
Prof. Dr. Jens Albrecht Einführung in Apache Spark 33
MapReduce/Tez
Hive
Spark SQL vs. Hive
HDFS
Hive
Meta
Store
SQL Processor
Spark
Distributed
SQL Engine
RDD/DataFrame
Hive on Spark
Prof. Dr. Jens Albrecht Einführung in Apache Spark 6
Hadoop: Pro & Contra
Stärken von Hadoop
• Verteilte Speicherung
(HDFS)
• Verteilte Verarbeitung
(MapReduce)
• Fehlertoleranz
• Open Source
• Professionelle
Distributionen
• Umfangreiches
Ökosystem
Schwächen von Hadoop
• Hohe Latenz bei
Verarbeitung (träge)
• Komplexe API
• Machine Learning
problematisch
• Kein Streaming
Prof. Dr. Jens Albrecht Einführung in Apache Spark 35
Spark SQL als ETL Engine: Live Demo
Prof. Dr. Jens Albrecht Einführung in Apache Spark 36
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 37
Batch vs. Stream
Clickstream
Transactions
Machine Logs
Sensor Data
Data Producers Batches of Data Batch Processing
Clickstream
Transactions
Machine Logs
Sensor Data
Stream ProcessingStreams of Data
Prof. Dr. Jens Albrecht Einführung in Apache Spark 38
Streaming – Continuous / Repeated Queries
Wie viele Leute waren in den letzten 5 Minuten auf meiner
Web-Seite?
Wieviele Systemfehler sind in der letzten halben Stunde
aufgetreten?
Wie viele Requests sind pro IP-Adresse in der letzten Minute
aufgetreten?
Was ist der Durchschnittswert der Temperatur-Sensoren pro
Maschine in den letzten zwei Minuten?
Prof. Dr. Jens Albrecht Einführung in Apache Spark 39
Static Data
Continuous Applications
Continuous Data
Processing
NoSQLHDFS RDBMS
Data Streams
Batches of Data
Read & Join with
stream and batch
Write Output
Real-time
Dashboard
Event
Processing
Real-time ETL
Real-time
ML
Event-based
Application
(Fraud Detection, Alert,
Recommendation, …)
Dashboard
Database
Based on: https://databricks.com/blog/2016/07/28/continuous-applications-evolving-streaming-in-apache-spark-2-0.html
Prof. Dr. Jens Albrecht Einführung in Apache Spark 40
Spark Streaming
Micro Batches
gemäß Zeitfenster
(Trigger Intervall)
Spark Streaming
• RDD-basiert
• kein Exactly-Once
• Batch-Time Windows
Kafka
Streams
Structured Streaming
• seit Version 2.0 (Alpha)
• DataFrame-basiert
• API identisch zu Batch-API
• Event-Time-Windows
• End-to-End Exactly-Once
durch WAL und Checkpoints
Infinite DataFrames bzw.
Unbounded Tables
Prof. Dr. Jens Albrecht Einführung in Apache Spark 7
Hadoop Environment
Distributed Job Processing
MapReduce
(Hive, Sqoop, Pig, Mahout)
Distributed Storage (HDFS)
Resource Management
YARN
Hadoop+ Ecosystem
Admin: Ambari, Cloudera Manager
FileFormat: Avro, Parquet, ORC, …
DB: HBase, Cassandra, Acummulo, …
Security: Ranger, Sentry, Kerberos, …
Prof. Dr. Jens Albrecht Einführung in Apache Spark 42
Input
Source
Sink
Structured Streaming
Output Modes (writeStream)
▸ Append: Nur an Result-Table neu angefügte Sätze werden geschrieben
(für Einzelsatzverarbeitung ohne Aggregation)
▸ Complete: Vollständige Result-Table wird geschrieben
(für Aggregationen)
▸ Update: Nur durch letzten Microbatch geänderte Sätze werden geschrieben
(mit und ohne Aggregation möglich)
Spark StreamingKafka
File
Socket
….
File
Foreach
Console
Memory
….
readStream writeStream
Result
Table
Prof. Dr. Jens Albrecht Einführung in Apache Spark 43
Probleme in verteilten Streaming-Systemen
Exactly-Once
vs. At-most/At-least Once
Late Data / Out of Order
Latency
Usability of API
Streaming
Server
Streaming
Server
Streaming
Server
Streaming Cluster
Prof. Dr. Jens Albrecht Einführung in Apache Spark 44
Fehlertoleranz
Voraussetzungen für Exactly Once
▸ Alle Sources und Sinks sowie die Execution Engine müssen den
Verarbeitungsfortschritt protokollieren
▸ Funktioniert nur mit Sources, die welche eine Leseposition
mitführen (Kafka Offsets, Kinesis Sequence Numbers)
▸ Engine nutzt Checkpoints und Write-Ahead-Log
▸ Sinks müssen idempotent für Re-Processing nach Fehler sein.
Behandlung verspäteter Daten mit Watermarks
▸ Structured Streaming puffert Daten eines Zeitfensters, so dass
verspätete Datensätze korrekt verarbeitet werden
▸ Watermark ("allowed lateness": definiert den bisher erreichten
Zeitpegel, z.B. "aktueller Zeitpunkt – 10 Minuten"; alles davor
gilt als abgeschlossen.
https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#handling-late-data-and-watermarking
Prof. Dr. Jens Albrecht Einführung in Apache Spark 45
Trigger
Mögliche Trigger
▸ Verarbeitungszeit (Microbatch): z.B. 1 Minute
▸ Eventzahl: Alle 10 Events
▸ Spezielle Events: Dateiende, Flush, vorausgehendes Event
▸ Kombination: mindestens nach 1 Minute oder nach 10 Events
Trigger in Spark: Nur Verarbeitungszeit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 46
Spark Machine Learning
MLlib – Machine Learning Library
▸ spark.mllib: RDD-basiert (Wartungsmodus, läuft aus)
▸ spark.ml: DataFrame-basiert, Basis für zukünftige Entwicklung
Abb.: Fiedler, Albrecht: Machine Learning mit Apache Spark, iX 5/2017
Prof. Dr. Jens Albrecht Einführung in Apache Spark 47
Spark Machine Learning
Feature Extraction, Transformation
▸ Extract: TF-IDF, Word2Vec
▸ Transform: Tokenizer, n-gram, PCA, Scaling, Bucketing, …
Verfügbare Algorithmen (Auszug)
▸ Regression
▸ Decision Tree, Random Fores
▸ Multilayer Perceptron
▸ Naive Bayes
▸ K-Means
▸ Gaussion Mixture Model
Prof. Dr. Jens Albrecht Einführung in Apache Spark 48
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big Data
Verteilte Verarbeitung mit RDDs
DataFrames und Spark SQL
Streaming und Machine Learning
Fazit
Prof. Dr. Jens Albrecht Einführung in Apache Spark 50
Big Data Architektur mit Spark
Storage and
Processing
Layer
Data
Analytics
Layer
Data
Ingestion
Layer
Spark Core
DWH
RDBMS
Data Lake
Hadoop, NoSQL
Spark SQL
Spark
Streaming
Graph
Analytics
Machine
Learning
Scala Java Python R
DataFrame / Dataset API
RDD API
Data Sources API
ParquetJSONCSV Hive JDBC MongoDB Cassandra …
Reporting
Near Real-time
Processing Machine Learning
Data Discovery
Visual Analytics
Kafka
Files SQL and NoSQL Databases Data Streams
Prof. Dr. Jens Albrecht Einführung in Apache Spark 51
Bewertung
Stärken
▸ Performance durch In-Memory und SQL-ähnliche Anfrageoptimierung
▸ Effiziente Entwicklung durch mächtige API (identisch für Scala, Java, Python)
▸ Machine Learning, interaktive Abfragen
▸ Einheitliches System für Batch- und Stream-Processing
▸ Viele Schnittstellen zu kommerziellen und Open-Source-Produkten
▸ Aktuell größte Aufmerksamkeit in Open Source Community
Grenzen
▸ interaktive Performance nicht vergleichbar mit In-Memory-Datenbanken
▸ Mittlere Latenz bei Streaming aufgrund Micro-Batching
▸ Benötigt viele Ressourcen im Cluster
Zukunftssicherheit
▸ APIs werden stabiler
▸ Entwicklung durch Databricks auf längere Zeit gesichert

Contenu connexe

Tendances

Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...
Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...
Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...
Simplilearn
 
Polyglot Processing - An Introduction 1.0
Polyglot Processing - An Introduction 1.0 Polyglot Processing - An Introduction 1.0
Polyglot Processing - An Introduction 1.0
Dr. Mohan K. Bavirisetty
 
Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databases
ArangoDB Database
 

Tendances (20)

When to Use MongoDB
When to Use MongoDBWhen to Use MongoDB
When to Use MongoDB
 
Large-Scale Text Processing Pipeline with Spark ML and GraphFrames: Spark Sum...
Large-Scale Text Processing Pipeline with Spark ML and GraphFrames: Spark Sum...Large-Scale Text Processing Pipeline with Spark ML and GraphFrames: Spark Sum...
Large-Scale Text Processing Pipeline with Spark ML and GraphFrames: Spark Sum...
 
Introduction au big data
Introduction au big dataIntroduction au big data
Introduction au big data
 
Big data architectures and the data lake
Big data architectures and the data lakeBig data architectures and the data lake
Big data architectures and the data lake
 
Neo4j Graph Data Science - Webinar
Neo4j Graph Data Science - WebinarNeo4j Graph Data Science - Webinar
Neo4j Graph Data Science - Webinar
 
Data warehouse,data mining & Big Data
Data warehouse,data mining & Big DataData warehouse,data mining & Big Data
Data warehouse,data mining & Big Data
 
The Business Case for Semantic Web Ontology & Knowledge Graph
The Business Case for Semantic Web Ontology & Knowledge GraphThe Business Case for Semantic Web Ontology & Knowledge Graph
The Business Case for Semantic Web Ontology & Knowledge Graph
 
Debunking some “RDF vs. Property Graph” Alternative Facts
Debunking some “RDF vs. Property Graph” Alternative FactsDebunking some “RDF vs. Property Graph” Alternative Facts
Debunking some “RDF vs. Property Graph” Alternative Facts
 
Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...
Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...
Hadoop Architecture | HDFS Architecture | Hadoop Architecture Tutorial | HDFS...
 
Iris data analysis example in R
Iris data analysis example in RIris data analysis example in R
Iris data analysis example in R
 
CRISP-DM - Agile Approach To Data Mining Projects
CRISP-DM - Agile Approach To Data Mining ProjectsCRISP-DM - Agile Approach To Data Mining Projects
CRISP-DM - Agile Approach To Data Mining Projects
 
Polyglot Processing - An Introduction 1.0
Polyglot Processing - An Introduction 1.0 Polyglot Processing - An Introduction 1.0
Polyglot Processing - An Introduction 1.0
 
Vertica
VerticaVertica
Vertica
 
Cassandra Database
Cassandra DatabaseCassandra Database
Cassandra Database
 
Near Real-Time Analytics with Apache Spark: Ingestion, ETL, and Interactive Q...
Near Real-Time Analytics with Apache Spark: Ingestion, ETL, and Interactive Q...Near Real-Time Analytics with Apache Spark: Ingestion, ETL, and Interactive Q...
Near Real-Time Analytics with Apache Spark: Ingestion, ETL, and Interactive Q...
 
NoSQL Now! NoSQL Architecture Patterns
NoSQL Now! NoSQL Architecture PatternsNoSQL Now! NoSQL Architecture Patterns
NoSQL Now! NoSQL Architecture Patterns
 
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
 
Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databases
 
Data Science Across Data Sources with Apache Arrow
Data Science Across Data Sources with Apache ArrowData Science Across Data Sources with Apache Arrow
Data Science Across Data Sources with Apache Arrow
 
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
 

Similaire à Einfuehrung in Apache Spark

The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connection
inovex GmbH
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
AWS Germany
 
Analytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und rAnalytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und r
Marcel Franke
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
Ramon Wartala
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
nwilbert
 

Similaire à Einfuehrung in Apache Spark (20)

Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
 
Hadoop Einführung @codecentric
Hadoop Einführung @codecentricHadoop Einführung @codecentric
Hadoop Einführung @codecentric
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connection
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connection
 
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebenFusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
 
Warum sap hana sql data warehousing
Warum sap hana sql data warehousingWarum sap hana sql data warehousing
Warum sap hana sql data warehousing
 
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
 
Webinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit HadoopWebinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit Hadoop
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
 
REST in Peace - Mit ORDS, Node.JS, ADF, Java oder OSB?
REST in Peace  - Mit ORDS, Node.JS, ADF, Java oder OSB?REST in Peace  - Mit ORDS, Node.JS, ADF, Java oder OSB?
REST in Peace - Mit ORDS, Node.JS, ADF, Java oder OSB?
 
Oracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpiOracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpi
 
Analytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und rAnalytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und r
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
 
LinkedGeodata (Deutsch)
LinkedGeodata (Deutsch)LinkedGeodata (Deutsch)
LinkedGeodata (Deutsch)
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
APEX für den Oracle DBA
APEX für den Oracle DBAAPEX für den Oracle DBA
APEX für den Oracle DBA
 
Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data Konnektivität
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 

Einfuehrung in Apache Spark

  • 1. Prof. Dr. Jens Albrecht TH Nürnberg Einführung in
  • 2. Prof. Dr. Jens Albrecht Einführung in Apache Spark 3 Hybride BI-/Big-Data-Architektur AnalyseDatenhaltungDatenquellen Klassische Datenquellen OLTP-Systeme Big-Data-Quellen Dokumente, Server Logs, Sensor Daten, Social, Clickstream, GPS, Business Intelligence Enterprise DWH Data Marts Predictive Analytics Operational Analytics Explorative Analyse Data Lake
  • 3. Prof. Dr. Jens Albrecht Einführung in Apache Spark 4 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 4. Prof. Dr. Jens Albrecht Einführung in Apache Spark 5 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 5. Prof. Dr. Jens Albrecht Einführung in Apache Spark 6 Hadoop: Pro & Contra Stärken von Hadoop • Verteilte Speicherung (HDFS) • Verteilte Verarbeitung (MapReduce) • Fehlertoleranz • Open Source • Professionelle Distributionen • Umfangreiches Ökosystem Schwächen von Hadoop • Hohe Latenz bei Verarbeitung (träge) • Komplexe API • Machine Learning problematisch • Kein Streaming
  • 6. Prof. Dr. Jens Albrecht Einführung in Apache Spark 7 Hadoop Environment Distributed Job Processing MapReduce (Hive, Sqoop, Pig, Mahout) Distributed Storage (HDFS) Resource Management YARN Hadoop+ Ecosystem Admin: Ambari, Cloudera Manager FileFormat: Avro, Parquet, ORC, … DB: HBase, Cassandra, Acummulo, … Security: Ranger, Sentry, Kerberos, …
  • 7. Prof. Dr. Jens Albrecht Einführung in Apache Spark 8 Hadoop Environment mit Spark Distributed Job Processing Spark MapReduce (Hive, Sqoop, Pig, Mahout) Distributed Storage (HDFS) Resource Management YARN Hadoop+ Ecosystem Admin: Ambari, Cloudera Manager FileFormat: Avro, Parque, ORC, … DB: HBase, Cassandra, Acummulo, … Security: Ranger, Sentry, …
  • 8. Prof. Dr. Jens Albrecht Einführung in Apache Spark 9 Hadoop MapReduce vs. Spark HDFS Hadoop MapReduce: Schreiben nach jeder Map- oder Reduce-Operation HDFSSchritt 1 HDFSSchritt 2 HDFSSchritt 3 HDFS Spark: Arbeitet im Hauptspeicher und optimiert Einzelschritte RAMSchritt 1 HDFS Schritt 2+3
  • 9. Prof. Dr. Jens Albrecht Einführung in Apache Spark 10 Spark Infrastruktur Cluster Manager (Master) ▸ Local ▸ YARN (Hadoop) ▸ Mesos ▸ Standalone Driver Program SparkSession Executor Worker Node Cache Tasks Cluster Manager Executor Worker Node Cache Tasks
  • 10. Prof. Dr. Jens Albrecht Einführung in Apache Spark 11 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 11. Prof. Dr. Jens Albrecht Einführung in Apache Spark 12 Apache Spark – Swiss Army Knife of Big Data ☛ Skalierbare, performante, funktionale Engine für Big Data Processing ▸ Skalierbar durch Verteilung ▸ Performance: InMemory-Verarbeitung und Query Optimization ▸ Funktionalität: Einfache, einheitliche API; mächtige Funktionen Batch Processing Interactive Data Discovery Java Python Scala R Data Streaming Graph Processing SQL Apache Spark Machine Learning
  • 12. Prof. Dr. Jens Albrecht Einführung in Apache Spark 13 Anwendungsfälle für Apache Spark Datenintegration und –aufbereitung (ETL) ▸ Verknüpfung verschiedenster Datenquellen ▸ Komplexe Transformationen mit relationalen und nicht-relationalen Operatoren über DataFrame API ▸ Ergebnisse als Tabelle (Hive, JDBC) oder Datei Interaktive Analyse und Data Discovery ▸ Interaktive Anfragen direkt auf Rohdaten möglich ▸ Zugriff mit SQL, Python, R sowie über JDBC/ODBC ▸ Datenanalyse und -visualisierung mit Data-Science-Notebooks wie Apache Zeppelin Near Real-Time Data Processing ▸ Kontinierliche Verarbeitung von Datenströmen für IoT-Anwendungen, Betrugserkennung u.v.m. Machine Learning und Data Science ▸ Einsatz von ML-Verfahren für Vorhersagen, Betrugserkennung, Empfehlungssysteme u.v.m High-Performance Computing ▸ Parallelisierung aufwändiger Berechnungen im Cluster für rechenintensive Simulationen
  • 13. Prof. Dr. Jens Albrecht Einführung in Apache Spark 14 Spark Historie 2009 Start der Entwicklung am AMPLab der Universität Berkeley durch Matei Zaharia 2013 Gründung der Firma Databricks Juni 2013 Apache Incubation Feb. 2014 Apache Top-Level Mai 2014 Spark 1.0: SparkSQL, MLlib, GraphX, Streaming März 2015 Spark 1.3: DataFrame API Jan. 2016 Spark 1.6: Dataset API Juli 2016 Spark 2.0: überarbeite API für DataFrames und Datasets, Performance Optimierungen, SparkSQL erweitert Dez. 2016 Spark 2.1: Verbesserungen bei Streaming und Machine Learning Mai 2017 Spark 2.1.1
  • 14. Prof. Dr. Jens Albrecht Einführung in Apache Spark 15 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 15. Prof. Dr. Jens Albrecht Einführung in Apache Spark 16 RDD Worker Worker Worker Worker Partition RDDs Verteilte Collections: ▸ Alle Operationen werden parallel ausgeführt Partitionierung ▸ HDFS-Blöcke werden zu Partitionen
  • 16. Prof. Dr. Jens Albrecht Einführung in Apache Spark 4 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 17. Prof. Dr. Jens Albrecht Einführung in Apache Spark 18 Beispielanalyse mit RDDs Variante 1 Variante 2 mintemp_rdd = sc.textFile(hdfs_path + "weather.csv") .map(lambda line: [line.split(';')[i] for i in (0, 2, 4)]) .filter(lambda (id, temp, status): status == "OK") .map(lambda (id, temp, status): (int(id), float(temp))) .reduceByKey(min) mintemp_rdd.collect() file_rdd = sc.textFile(hdfs_path + "weather.csv") tuple_rdd = file_rdd.map(lambda line: [line.split(';')[i] for i in (0, 2, 4)]) filtered_rdd = tuple_rdd.filter(lambda (id, temp, status): status == "OK") pair_rdd = filtered_rdd.map(lambda (id, temp, status): (int(id), float(temp))) mintemp_rdd = pair_rdd.reduceByKey(min) mintemp_rdd.collect()
  • 18. Prof. Dr. Jens Albrecht Einführung in Apache Spark 19 Operationen auf RDDs Transformations: Erzeugung eines neuen RDD aus bestehendem ▸ Lazy evaluation – Ergebnisse nicht materialisiert ▸ Deutlich mehr Funktionalität als Map-Reduce Actions: Geben einen Wert oder ein Dataset an Aufrufer zurück map filter sample groupByKey sortByKey reduceByKey union pipe repartition join leftOuterJoin rightOuterJoin … reduce collect count first take(n) saveAsTextFile …
  • 19. Prof. Dr. Jens Albrecht Einführung in Apache Spark 20 RDDs: Operatorengraph (DAG) CSV File map csv RDD Result reduce RDD Join RDD Action joined RDD JSON File map JSON RDD RDD RDD Lineage
  • 20. Prof. Dr. Jens Albrecht Einführung in Apache Spark 21 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 21. Prof. Dr. Jens Albrecht Einführung in Apache Spark 22 DataFrames ID: Integer Temp: Double Status: String 403 15.6 OK 3668 16.6 OK 3379 14.6 OK 3379 -999.0 ERROR 3668 13.9 OK [403, 15.6, "OK"] [3668, 16.6, "OK"] [3379, 14.8, "OK"] [3379, -999.0, "ERROR"] [3668, 13.9, "OK"] RDD: Schemafrei • verteilte Liste von Objekten • Spark kennt innere Struktur nicht DataFrame: mit Schema • verteilte Tabelle mit benannten, typisierten Spalten • Basis für Spark SQL
  • 22. Prof. Dr. Jens Albrecht Einführung in Apache Spark 23 DataFrames DataFrames ▸ Konzept übernommen aus R und Python (Pandas) ▸ Verteilte Collection tabellen-strukturierter Daten: Datensätze mit typisierten, benannten Spalten ▸ RDD mit Schema ▸ APIs für Scala, Java, Python, R Schema Definition: ▸ Explizit: Case Class, StructType ▸ Implizit: automatische Erkennung durch Sampling Unterstützung vielder Datenquellen ▸ Nativ: RDD, JSON, JDBC, Parquet ▸ 3rd Party: CSV, Cassandra uvm.
  • 23. Prof. Dr. Jens Albrecht Einführung in Apache Spark 5 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 24. Prof. Dr. Jens Albrecht Einführung in Apache Spark 25 Beispiel-Schema id;timestamp;temp;humid;status 403;2016090723;15.6;94.0;OK 3668;2016090800;16.6;90.0;OK 3379;2016090801;14.8;95.0;OK 403;2016090801;-999;-999;ERROR 3379;2016090802;14.2;95.0;OK 3668;2016090802;13.9;96.0;OK RDBMS Quelle CSV Quelle: weather.csv
  • 25. Prof. Dr. Jens Albrecht Einführung in Apache Spark 26 Definition von DataFrames # Erzeuge DateFrame aus csv mit automatischer Schema-Erkennung weather_df = spark.read.format("com.databricks.spark.csv") .option("header", "true") .option("inferSchema", "true") .load("weather.csv") # Erzeuge DataFrame aus JDBC-Quelle stations_df = spark.read.format('jdbc') .option('url', 'jdbc:mysql://host/db') .option('dbtable', 'stations')
  • 26. Prof. Dr. Jens Albrecht Einführung in Apache Spark 27 Data Frames und Spark SQL # DataFrames als temporäre Tabellen registrieren weather_df.createOrReplaceTempView("weather_csv") stations_df.createOrReplaceTempView("stations_jdbc") # Anfrage query = """ SELECT name, timestamp, temp FROM stations_jdbc s JOIN weather_csv w ON s.id = w.id WHERE temp > 33 AND state = 'Bayern' """ # Spark SQL erzeugt neuen DataFrame basierend auf Anfrage result_df = spark.sql(query) # Mögliche Actions result_df.show() result_df.collect() result_df.write.saveAsTable('weather_report', mode='overwrite')
  • 27. Prof. Dr. Jens Albrecht Einführung in Apache Spark 28 DataFrame DSL SQL DataFrame API SELECT name, timestamp, temp FROM stations_jdbc s JOIN weather_csv w ON s.id = w.id WHERE temp > 33 AND state = 'Bayern' result_df = stations_df .join(weather_df, stations_df.id == weather_df.id) .filter("temp > 33 AND state = 'Bayern'") .select("name", "timestamp", "temp") result_df.show()
  • 28. Prof. Dr. Jens Albrecht Einführung in Apache Spark 29 DataFrames: Motivation: Wissen über Strukturen hat viele Vorteile Einfachheit: Einfache API für strukturierte Datenformate wie relationale Tabellen, CSV, JSON etc. ▸ SQL-ähnliche Transformationen in DataFrame API ▸ SQL-Zugriff auf DataFrames mit SparkSQL ▸ Unterstützung verschiedener DSLs (Domain Specific Languages) Effiziente Serialisierung und Speicherorganisation ▸ Bei Serialisierung von RDDs enthält jedes Element sein eigenes Schema, bei DataFrames nicht erforderlich ▸ Datentransfers zwischen Knoten deutlich effizienter realisierbar Bessere Optimierungsmöglichkeiten (Catalyst Optimizer) ▸ Generische Abstraktionsebene für Anfrage-Optimierung
  • 29. Prof. Dr. Jens Albrecht Einführung in Apache Spark 31 weather HDFS file Datasource project join filter stations JDBC Datasource weather HDFS file Datasource project join stations JDBC Datasource project filter project filter Nicht-optimierter Plan Optimierter Plan Spark SQL Optimizer: Filter Push-Down Predicate Pushdown temp > 33 AND state = 'By' temp > 33 state = 'By'
  • 30. Prof. Dr. Jens Albrecht Einführung in Apache Spark 32 Spark SQL Unterstützung aller 99 TPC-DS-Anfragen ▸ Subqueries ▸ With-Klausel ▸ Left, Right, Outer Join OLAP Erweiterungen ▸ SQL 2003: Grouping, Windowing (Partition By …) ▸ Crosstab: Explode, Pivot…. Zusätzliche Funktionen ▸ User-Defined Functions ▸ Geschachtelte Datentypen (Map, Array, StructFiled)
  • 31. Prof. Dr. Jens Albrecht Einführung in Apache Spark 33 MapReduce/Tez Hive Spark SQL vs. Hive HDFS Hive Meta Store SQL Processor Spark Distributed SQL Engine RDD/DataFrame Hive on Spark
  • 32. Prof. Dr. Jens Albrecht Einführung in Apache Spark 6 Hadoop: Pro & Contra Stärken von Hadoop • Verteilte Speicherung (HDFS) • Verteilte Verarbeitung (MapReduce) • Fehlertoleranz • Open Source • Professionelle Distributionen • Umfangreiches Ökosystem Schwächen von Hadoop • Hohe Latenz bei Verarbeitung (träge) • Komplexe API • Machine Learning problematisch • Kein Streaming
  • 33. Prof. Dr. Jens Albrecht Einführung in Apache Spark 35 Spark SQL als ETL Engine: Live Demo
  • 34. Prof. Dr. Jens Albrecht Einführung in Apache Spark 36 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 35. Prof. Dr. Jens Albrecht Einführung in Apache Spark 37 Batch vs. Stream Clickstream Transactions Machine Logs Sensor Data Data Producers Batches of Data Batch Processing Clickstream Transactions Machine Logs Sensor Data Stream ProcessingStreams of Data
  • 36. Prof. Dr. Jens Albrecht Einführung in Apache Spark 38 Streaming – Continuous / Repeated Queries Wie viele Leute waren in den letzten 5 Minuten auf meiner Web-Seite? Wieviele Systemfehler sind in der letzten halben Stunde aufgetreten? Wie viele Requests sind pro IP-Adresse in der letzten Minute aufgetreten? Was ist der Durchschnittswert der Temperatur-Sensoren pro Maschine in den letzten zwei Minuten?
  • 37. Prof. Dr. Jens Albrecht Einführung in Apache Spark 39 Static Data Continuous Applications Continuous Data Processing NoSQLHDFS RDBMS Data Streams Batches of Data Read & Join with stream and batch Write Output Real-time Dashboard Event Processing Real-time ETL Real-time ML Event-based Application (Fraud Detection, Alert, Recommendation, …) Dashboard Database Based on: https://databricks.com/blog/2016/07/28/continuous-applications-evolving-streaming-in-apache-spark-2-0.html
  • 38. Prof. Dr. Jens Albrecht Einführung in Apache Spark 40 Spark Streaming Micro Batches gemäß Zeitfenster (Trigger Intervall) Spark Streaming • RDD-basiert • kein Exactly-Once • Batch-Time Windows Kafka Streams Structured Streaming • seit Version 2.0 (Alpha) • DataFrame-basiert • API identisch zu Batch-API • Event-Time-Windows • End-to-End Exactly-Once durch WAL und Checkpoints Infinite DataFrames bzw. Unbounded Tables
  • 39. Prof. Dr. Jens Albrecht Einführung in Apache Spark 7 Hadoop Environment Distributed Job Processing MapReduce (Hive, Sqoop, Pig, Mahout) Distributed Storage (HDFS) Resource Management YARN Hadoop+ Ecosystem Admin: Ambari, Cloudera Manager FileFormat: Avro, Parquet, ORC, … DB: HBase, Cassandra, Acummulo, … Security: Ranger, Sentry, Kerberos, …
  • 40. Prof. Dr. Jens Albrecht Einführung in Apache Spark 42 Input Source Sink Structured Streaming Output Modes (writeStream) ▸ Append: Nur an Result-Table neu angefügte Sätze werden geschrieben (für Einzelsatzverarbeitung ohne Aggregation) ▸ Complete: Vollständige Result-Table wird geschrieben (für Aggregationen) ▸ Update: Nur durch letzten Microbatch geänderte Sätze werden geschrieben (mit und ohne Aggregation möglich) Spark StreamingKafka File Socket …. File Foreach Console Memory …. readStream writeStream Result Table
  • 41. Prof. Dr. Jens Albrecht Einführung in Apache Spark 43 Probleme in verteilten Streaming-Systemen Exactly-Once vs. At-most/At-least Once Late Data / Out of Order Latency Usability of API Streaming Server Streaming Server Streaming Server Streaming Cluster
  • 42. Prof. Dr. Jens Albrecht Einführung in Apache Spark 44 Fehlertoleranz Voraussetzungen für Exactly Once ▸ Alle Sources und Sinks sowie die Execution Engine müssen den Verarbeitungsfortschritt protokollieren ▸ Funktioniert nur mit Sources, die welche eine Leseposition mitführen (Kafka Offsets, Kinesis Sequence Numbers) ▸ Engine nutzt Checkpoints und Write-Ahead-Log ▸ Sinks müssen idempotent für Re-Processing nach Fehler sein. Behandlung verspäteter Daten mit Watermarks ▸ Structured Streaming puffert Daten eines Zeitfensters, so dass verspätete Datensätze korrekt verarbeitet werden ▸ Watermark ("allowed lateness": definiert den bisher erreichten Zeitpegel, z.B. "aktueller Zeitpunkt – 10 Minuten"; alles davor gilt als abgeschlossen. https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#handling-late-data-and-watermarking
  • 43. Prof. Dr. Jens Albrecht Einführung in Apache Spark 45 Trigger Mögliche Trigger ▸ Verarbeitungszeit (Microbatch): z.B. 1 Minute ▸ Eventzahl: Alle 10 Events ▸ Spezielle Events: Dateiende, Flush, vorausgehendes Event ▸ Kombination: mindestens nach 1 Minute oder nach 10 Events Trigger in Spark: Nur Verarbeitungszeit
  • 44. Prof. Dr. Jens Albrecht Einführung in Apache Spark 46 Spark Machine Learning MLlib – Machine Learning Library ▸ spark.mllib: RDD-basiert (Wartungsmodus, läuft aus) ▸ spark.ml: DataFrame-basiert, Basis für zukünftige Entwicklung Abb.: Fiedler, Albrecht: Machine Learning mit Apache Spark, iX 5/2017
  • 45. Prof. Dr. Jens Albrecht Einführung in Apache Spark 47 Spark Machine Learning Feature Extraction, Transformation ▸ Extract: TF-IDF, Word2Vec ▸ Transform: Tokenizer, n-gram, PCA, Scaling, Bucketing, … Verfügbare Algorithmen (Auszug) ▸ Regression ▸ Decision Tree, Random Fores ▸ Multilayer Perceptron ▸ Naive Bayes ▸ K-Means ▸ Gaussion Mixture Model
  • 46. Prof. Dr. Jens Albrecht Einführung in Apache Spark 48 Agenda Apache Hadoop vs. Apache Spark Schweizer Taschenmesser für Big Data Verteilte Verarbeitung mit RDDs DataFrames und Spark SQL Streaming und Machine Learning Fazit
  • 47. Prof. Dr. Jens Albrecht Einführung in Apache Spark 50 Big Data Architektur mit Spark Storage and Processing Layer Data Analytics Layer Data Ingestion Layer Spark Core DWH RDBMS Data Lake Hadoop, NoSQL Spark SQL Spark Streaming Graph Analytics Machine Learning Scala Java Python R DataFrame / Dataset API RDD API Data Sources API ParquetJSONCSV Hive JDBC MongoDB Cassandra … Reporting Near Real-time Processing Machine Learning Data Discovery Visual Analytics Kafka Files SQL and NoSQL Databases Data Streams
  • 48. Prof. Dr. Jens Albrecht Einführung in Apache Spark 51 Bewertung Stärken ▸ Performance durch In-Memory und SQL-ähnliche Anfrageoptimierung ▸ Effiziente Entwicklung durch mächtige API (identisch für Scala, Java, Python) ▸ Machine Learning, interaktive Abfragen ▸ Einheitliches System für Batch- und Stream-Processing ▸ Viele Schnittstellen zu kommerziellen und Open-Source-Produkten ▸ Aktuell größte Aufmerksamkeit in Open Source Community Grenzen ▸ interaktive Performance nicht vergleichbar mit In-Memory-Datenbanken ▸ Mittlere Latenz bei Streaming aufgrund Micro-Batching ▸ Benötigt viele Ressourcen im Cluster Zukunftssicherheit ▸ APIs werden stabiler ▸ Entwicklung durch Databricks auf längere Zeit gesichert