Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
Klas...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 4
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 5
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 6
Hadoop: Pro & Contra
Stärken von Hadoop
• Verteilte Speicherung
(HDFS...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 7
Hadoop Environment
Distributed Job Processing
MapReduce
(Hive, Sqoop,...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 8
Hadoop Environment mit Spark
Distributed Job Processing
Spark MapRedu...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 9
Hadoop MapReduce vs. Spark
HDFS
Hadoop MapReduce: Schreiben nach jede...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 10
Spark Infrastruktur
Cluster Manager (Master)
▸ Local
▸ YARN (Hadoop)...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 11
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Bi...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 12
Apache Spark – Swiss Army Knife of Big Data
☛ Skalierbare, performan...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 13
Anwendungsfälle für Apache Spark
Datenintegration und –aufbereitung ...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 14
Spark Historie
2009 Start der Entwicklung am AMPLab der Universität
...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 15
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Bi...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 16
RDD
Worker Worker Worker Worker
Partition
RDDs
Verteilte Collections...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 4
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 18
Beispielanalyse mit RDDs
Variante 1
Variante 2
mintemp_rdd = sc.text...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 19
Operationen auf RDDs
Transformations: Erzeugung eines neuen RDD aus ...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 20
RDDs: Operatorengraph (DAG)
CSV File
map
csv RDD
Result
reduce
RDD
J...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 21
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Bi...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 22
DataFrames
ID: Integer Temp: Double Status: String
403 15.6 OK
3668 ...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 23
DataFrames
DataFrames
▸ Konzept übernommen aus R und Python (Pandas)...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 5
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Big...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 25
Beispiel-Schema
id;timestamp;temp;humid;status
403;2016090723;15.6;9...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 26
Definition von DataFrames
# Erzeuge DateFrame aus csv mit automatisc...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 27
Data Frames und Spark SQL
# DataFrames als temporäre Tabellen regist...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 28
DataFrame DSL
SQL
DataFrame API
SELECT name, timestamp, temp
FROM st...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 29
DataFrames:
Motivation: Wissen über Strukturen hat viele Vorteile
Ei...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 31
weather
HDFS file
Datasource
project
join
filter
stations
JDBC
Datas...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 32
Spark SQL
Unterstützung aller 99 TPC-DS-Anfragen
▸ Subqueries
▸ With...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 33
MapReduce/Tez
Hive
Spark SQL vs. Hive
HDFS
Hive
Meta
Store
SQL Proce...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 6
Hadoop: Pro & Contra
Stärken von Hadoop
• Verteilte Speicherung
(HDFS...
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 Bi...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 37
Batch vs. Stream
Clickstream
Transactions
Machine Logs
Sensor Data
D...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 38
Streaming – Continuous / Repeated Queries
Wie viele Leute waren in d...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 39
Static Data
Continuous Applications
Continuous Data
Processing
NoSQL...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 40
Spark Streaming
Micro Batches
gemäß Zeitfenster
(Trigger Intervall)
...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 7
Hadoop Environment
Distributed Job Processing
MapReduce
(Hive, Sqoop,...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 42
Input
Source
Sink
Structured Streaming
Output Modes (writeStream)
▸ ...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 43
Probleme in verteilten Streaming-Systemen
Exactly-Once
vs. At-most/A...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 44
Fehlertoleranz
Voraussetzungen für Exactly Once
▸ Alle Sources und S...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 45
Trigger
Mögliche Trigger
▸ Verarbeitungszeit (Microbatch): z.B. 1 Mi...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 46
Spark Machine Learning
MLlib – Machine Learning Library
▸ spark.mlli...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 47
Spark Machine Learning
Feature Extraction, Transformation
▸ Extract:...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 48
Agenda
Apache Hadoop vs. Apache Spark
Schweizer Taschenmesser für Bi...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 50
Big Data Architektur mit Spark
Storage and
Processing
Layer
Data
Ana...
Prof. Dr. Jens Albrecht Einführung in Apache Spark 51
Bewertung
Stärken
▸ Performance durch In-Memory und SQL-ähnliche Anf...
Upcoming SlideShare
Loading in …5
×

Einfuehrung in Apache Spark

1,072 views

Published on

Vortrag auf TDWI-Konferenz 2017

Published in: Business
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Einfuehrung in Apache Spark

  1. 1. Prof. Dr. Jens Albrecht TH Nürnberg Einführung in
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 33. Prof. Dr. Jens Albrecht Einführung in Apache Spark 35 Spark SQL als ETL Engine: Live Demo
  34. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×