SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

Was ist angesagt?

MaxDB - Apply Patch
MaxDB - Apply PatchMaxDB - Apply Patch
MaxDB - Apply Patch
wlacaze
 
SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration)
SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration) SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration)
SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration)
Surendar S
 
Database Systems - Introduction (Chapter 1)
Database Systems - Introduction (Chapter 1)Database Systems - Introduction (Chapter 1)
Database Systems - Introduction (Chapter 1)
Vidyasagar Mundroy
 
Data cleansing and prep with synapse data flows
Data cleansing and prep with synapse data flowsData cleansing and prep with synapse data flows
Data cleansing and prep with synapse data flows
Mark Kromer
 
Implementing digital preservation strategy: collection profiling at the Briti...
Implementing digital preservation strategy: collection profiling at the Briti...Implementing digital preservation strategy: collection profiling at the Briti...
Implementing digital preservation strategy: collection profiling at the Briti...
Michael Day
 
Fast Start Failover DataGuard
Fast Start Failover DataGuardFast Start Failover DataGuard
Fast Start Failover DataGuard
Borsaniya Vaibhav
 
Introducing Delta Live Tables: Make Reliable ETL Easy on Delta Lake
Introducing Delta Live Tables: Make Reliable ETL Easy on Delta LakeIntroducing Delta Live Tables: Make Reliable ETL Easy on Delta Lake
Introducing Delta Live Tables: Make Reliable ETL Easy on Delta Lake
Databricks
 
Oracle-DB: Performance Analysis with Panorama
Oracle-DB: Performance Analysis with PanoramaOracle-DB: Performance Analysis with Panorama
Oracle-DB: Performance Analysis with Panorama
Peter Ramm
 
Semantic web technology
Semantic web technologySemantic web technology
Semantic web technology
Stanley Wang
 
Extended ECM for SAP Solutions
Extended ECM for SAP SolutionsExtended ECM for SAP Solutions
Extended ECM for SAP Solutions
OpenText
 
[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa Hanaki
[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa Hanaki[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa Hanaki
[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa HanakiInsight Technology, Inc.
 
Designing and Building Next Generation Data Pipelines at Scale with Structure...
Designing and Building Next Generation Data Pipelines at Scale with Structure...Designing and Building Next Generation Data Pipelines at Scale with Structure...
Designing and Building Next Generation Data Pipelines at Scale with Structure...
Databricks
 
Domain Driven Data: Apache Kafka® and the Data Mesh
Domain Driven Data: Apache Kafka® and the Data MeshDomain Driven Data: Apache Kafka® and the Data Mesh
Domain Driven Data: Apache Kafka® and the Data Mesh
confluent
 
Ch01 database-conceptsppt4207
Ch01 database-conceptsppt4207Ch01 database-conceptsppt4207
Ch01 database-conceptsppt4207
Burhan Chaudhry
 
Definitive Guide to Select Right Data Warehouse (2020)
Definitive Guide to Select Right Data Warehouse (2020)Definitive Guide to Select Right Data Warehouse (2020)
Definitive Guide to Select Right Data Warehouse (2020)
Sprinkle Data Inc
 
SAP HANA Cloud Data Lake.pdf
SAP HANA Cloud Data Lake.pdfSAP HANA Cloud Data Lake.pdf
SAP HANA Cloud Data Lake.pdf
AnkitSoni884458
 
New lessons in connection management
New lessons in connection managementNew lessons in connection management
New lessons in connection management
Toon Koppelaars
 
Dba
DbaDba
SAP S4HANA : Learn From Our Implementation Journey
SAP S4HANA : Learn From Our Implementation JourneySAP S4HANA : Learn From Our Implementation Journey
SAP S4HANA : Learn From Our Implementation Journey
Anup Lakra
 
Sap memory managerment
Sap memory managermentSap memory managerment
Sap memory managerment
Raj p
 

Was ist angesagt? (20)

MaxDB - Apply Patch
MaxDB - Apply PatchMaxDB - Apply Patch
MaxDB - Apply Patch
 
SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration)
SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration) SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration)
SnapLogic- iPaaS (Elastic Integration Cloud and Data Integration)
 
Database Systems - Introduction (Chapter 1)
Database Systems - Introduction (Chapter 1)Database Systems - Introduction (Chapter 1)
Database Systems - Introduction (Chapter 1)
 
Data cleansing and prep with synapse data flows
Data cleansing and prep with synapse data flowsData cleansing and prep with synapse data flows
Data cleansing and prep with synapse data flows
 
Implementing digital preservation strategy: collection profiling at the Briti...
Implementing digital preservation strategy: collection profiling at the Briti...Implementing digital preservation strategy: collection profiling at the Briti...
Implementing digital preservation strategy: collection profiling at the Briti...
 
Fast Start Failover DataGuard
Fast Start Failover DataGuardFast Start Failover DataGuard
Fast Start Failover DataGuard
 
Introducing Delta Live Tables: Make Reliable ETL Easy on Delta Lake
Introducing Delta Live Tables: Make Reliable ETL Easy on Delta LakeIntroducing Delta Live Tables: Make Reliable ETL Easy on Delta Lake
Introducing Delta Live Tables: Make Reliable ETL Easy on Delta Lake
 
Oracle-DB: Performance Analysis with Panorama
Oracle-DB: Performance Analysis with PanoramaOracle-DB: Performance Analysis with Panorama
Oracle-DB: Performance Analysis with Panorama
 
Semantic web technology
Semantic web technologySemantic web technology
Semantic web technology
 
Extended ECM for SAP Solutions
Extended ECM for SAP SolutionsExtended ECM for SAP Solutions
Extended ECM for SAP Solutions
 
[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa Hanaki
[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa Hanaki[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa Hanaki
[D13] 次世代型インメモリデータベース SAP HANA その最新技術を理解する by Toshihisa Hanaki
 
Designing and Building Next Generation Data Pipelines at Scale with Structure...
Designing and Building Next Generation Data Pipelines at Scale with Structure...Designing and Building Next Generation Data Pipelines at Scale with Structure...
Designing and Building Next Generation Data Pipelines at Scale with Structure...
 
Domain Driven Data: Apache Kafka® and the Data Mesh
Domain Driven Data: Apache Kafka® and the Data MeshDomain Driven Data: Apache Kafka® and the Data Mesh
Domain Driven Data: Apache Kafka® and the Data Mesh
 
Ch01 database-conceptsppt4207
Ch01 database-conceptsppt4207Ch01 database-conceptsppt4207
Ch01 database-conceptsppt4207
 
Definitive Guide to Select Right Data Warehouse (2020)
Definitive Guide to Select Right Data Warehouse (2020)Definitive Guide to Select Right Data Warehouse (2020)
Definitive Guide to Select Right Data Warehouse (2020)
 
SAP HANA Cloud Data Lake.pdf
SAP HANA Cloud Data Lake.pdfSAP HANA Cloud Data Lake.pdf
SAP HANA Cloud Data Lake.pdf
 
New lessons in connection management
New lessons in connection managementNew lessons in connection management
New lessons in connection management
 
Dba
DbaDba
Dba
 
SAP S4HANA : Learn From Our Implementation Journey
SAP S4HANA : Learn From Our Implementation JourneySAP S4HANA : Learn From Our Implementation Journey
SAP S4HANA : Learn From Our Implementation Journey
 
Sap memory managerment
Sap memory managermentSap memory managerment
Sap memory managerment
 

Ähnlich wie Einfuehrung in Apache Spark

Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
inovex GmbH
 
Hadoop Einführung @codecentric
Hadoop Einführung @codecentricHadoop Einführung @codecentric
Hadoop Einführung @codecentric
imalik8088
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connectioninovex GmbH
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connection
vesparun
 
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
inovex GmbH
 
Warum sap hana sql data warehousing
Warum sap hana sql data warehousingWarum sap hana sql data warehousing
Warum sap hana sql data warehousing
ISR Information Products AG
 
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?
inovex GmbH
 
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
fun communications 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
 
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?
enpit GmbH & Co. KG
 
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
Gunther Pippèrr
 
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 rMarcel Franke
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortragRamon Wartala
 
LinkedGeodata (Deutsch)
LinkedGeodata (Deutsch)LinkedGeodata (Deutsch)
LinkedGeodata (Deutsch)
geoknow
 
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?
KurtStockinger
 
APEX für den Oracle DBA
APEX für den Oracle DBAAPEX für den Oracle DBA
APEX für den Oracle DBA
Niels de Bruijn
 
Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]
Alexander Hendorf
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data Konnektivität
Trivadis
 
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
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
GFU Cyrus AG
 

Ähnlich wie 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