Bewirtschaftung vonData Lakes
in der Praxis
Hans-Peter Zorn, Dr. Dominik Benz, inovexGmbH
data2day Karlsruhe, 05.10.2016
Ein See, ein See, ... wozu?
http://p5.focus.de/img/fotos/crop287471/1000162586-cfreecrop-w960-h541-ocx0_y63-q75-p5/seeelef...
3
Der Weg zum See
Definition,
Herausforderungen
Werkzeuge (Airflow/
Schedoscope)
Lösungsansätze
Vergleich&
Empfehlungen
Typischer Aufbau
raw processed datahub analysisingress egress
scheduling, orchestration, metadata
user access, system inte...
5
Herausforderungen
raw processed datahub analysisingress egress
Scheduling, orchestration, metadata
user access, system i...
› Kleinste Einheit: Artefakt von zusammengehörigen Daten („Tabelle“)
› Jedes Artefakt ist als Hive-Tabelle registriert
› B...
7
Der Weg zum See
Werkzeuge (Airflow/
Schedoscope)
Lösungsansätze
Vergleich&
Empfehlungen
› Interne Datenplattformen u.a.
bei Otto Group BI
› Gestartet mit Oozie; Probleme:
› Langsame Entwicklungszyklen
› Viele r...
9
s
Agile Anbindung
› Definition von „Views“ (Schema)
› Statisch typisierte Scala-DSL
› Agiles, schnelles Erstellen neuer
...
10
s
Agile Anbindung
case class Nodes(
year: Parameter[String],
month: Parameter[String]) extends View
with MonthlyParamet...
11
s
Agile Anbindung
case class Nodes(
...
val version = fieldOf[Int]
val user_id = fieldOf[Int]
val longitude = fieldOf[D...
12
Airflow
Agile Anbindung
› Schemader (Hive-)Tabellenextern
verwaltet (z.B. mit db-deploy)
› Schema-Änderungenmüssenmanue...
13
Agile Anbindung
Airflow
upload_data = BashOperator(
task_id='upload_data',
bash_command='hadoop fs –put data.csv /data'...
Vergleich
Oozie Airflow Schedoscope
Sprache Java Python Scala
Workflow-Spezifikation XML Python Scala
Definition
Abhängigk...
15
GUIs
Airflow
(Metascope)
16
Der Weg zum See
Lösungsansätze
Vergleich&
Empfehlungen
Agilität
Entwicklung:
• Schema
• Transformation
• Workflow
Deployment
dev
Testen
Deployment
prod
Schema,
SQL/Spark, Oozie-...
› Data Engineering == Softwareentwicklung
› Best Practices ähnlich
18
Agilität
Wie wird man schneller?
Agile Anbindung
› W...
19
Testing
› Tippfehler (im XML, SQL)
› Logische Fehler
› Schema-Änderungen in
vorgelagerten Tabellen
› Änderungen im Verh...
20
Testing
Schedoscope
1
1
1
3
3
2
"processed.Nodes" should "load correctly" in {
new Nodes(p("2013"), p("06")) with test ...
21
Testing
Airflow
1
1 3
Agile Anbindung
› Kein integriertes Testen
› Einzelne Tasks können über CLI separat ausgeführt we...
22
Testing
Airflow - Code
1
1 3
processed_clicklog = HiveTestDataHook(
"src_omniture_clicklog",
"version='post',report_sui...
23
Abhängigkeiten
Wer A sagt, muss auch B sagen
Agile Anbindung
› Bereinigte Views basieren auf Rohdaten
› Analytische Vie...
24
Abhängigkeiten
Beispiel Schedoscope
case class Nodes(
year: Parameter[String],
month: Parameter[String]) extends View
w...
25
Abhängigkeiten
Beispiel Airflow
upload_data = BashOperator(
task_id=‘upload_data',
bash_command='hadoop fs –put data.cs...
26
Late arriving data
Lieber spät als nie
5.10.201621:59
5.10.201618:00
5.10.201618:00
5.10.201618:00
5.10.201618:00
5.10....
27
Late Arriving Data
5.10.2016
3.10.2016
4.10.2016
3.10.2016
5.10.2016
4.10.2016
3.10.2016
5.10.2016
INSERT OVERWRITE
+ I...
28
Der Weg zum See
Agilität, Testing,
Abhängigkeiten, Late
arriving data
Vergleich&
Empfehlungen
29
Zusammenfassung
Schedoscope Airflow
• UmfassendesTool
• Testframework
• Schema-Management
• Export-Funktionen(jdbc,
Kaf...
Vielen Dank
Hans-Peter Zorn
Dr. DominikBenz
inovex GmbH
ParkPlaza
Ludwig-Erhard-Allee 6
76131 Karlsruhe
Nächste SlideShare
Wird geladen in …5
×

Bewirtschaftung von Data Lakes in der Praxis

88 Aufrufe

Veröffentlicht am

Unternehmen sammeln ihre Geschäftsdaten zunehmend in Hadoop-basierten Data Lakes/Hubs, um Analysten eine umfassende Sicht auf die Geschäftsprozesse zu geben und schnell neue Datenprodukte und -dienste umsetzen zu können. Bei der Anbindung und Konsolidierung der unterschiedlichen Daten steht der Architekt vor mehreren Herausforderungen: schnelle Erschließung neuer Datenquellen, automatisiertes Testen, Modellierung von Abhängigkeiten zwischen Tabellen (Data Lineage) und die Behandlung spät eintreffender Daten.

Wir zeigen den Aufbau solcher Datenplattformen und skizzieren praktische Umsetzungen mit den Open-Source-Werkzeugen Schedoscope (Otto Group) und Airflow (Airbnb).

Skills
Interesse an Big-Data-Architekturen, grober Überblick über das Hadoop-Ökosystem. Gegebenenfalls eigene schmerzhafte Erfahrungen mit Oozie.

Lernziele
Der Aufbau einer Big-Data-Platform endet nicht mit der Installation von Hadoop: Die organisatorischen und technischen Prozesse sind komplex und können durch die Wahl geeigneter technischer Werkzeuge unterstützt werden.

Event: data2day 2016, 05.10.2016
Speaker: Dr. Dominik Benz, Hans-Peter Zorn

Mehr Vorträge: https://www.inovex.de/de/content-pool/vortraege/

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
88
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Bewirtschaftung von Data Lakes in der Praxis

  1. 1. Bewirtschaftung vonData Lakes in der Praxis Hans-Peter Zorn, Dr. Dominik Benz, inovexGmbH data2day Karlsruhe, 05.10.2016
  2. 2. Ein See, ein See, ... wozu? http://p5.focus.de/img/fotos/crop287471/1000162586-cfreecrop-w960-h541-ocx0_y63-q75-p5/seeelefant.jpg https://c2.staticflickr.com/6/5321/9283741715_ba20166c37_b.jpg Unterschiedliche Datenquellen, Formate Integration, Verknüpfung Kosteneffiziente Langzeit- archivierung Offloading Vorverarbeitung DWH Zentrale Anlaufstelle für Daten 2 Inspiration für neue Datenprodukte Spielwiese für Analysten, Exploration
  3. 3. 3 Der Weg zum See Definition, Herausforderungen Werkzeuge (Airflow/ Schedoscope) Lösungsansätze Vergleich& Empfehlungen
  4. 4. Typischer Aufbau raw processed datahub analysisingress egress scheduling, orchestration, metadata user access, system integration, development 4
  5. 5. 5 Herausforderungen raw processed datahub analysisingress egress Scheduling, orchestration, metadata user access, system integration, development Agile Anbindung Modellierung Abhängigkeiten Testing der Transformationen Behandlung spät ankommende Daten
  6. 6. › Kleinste Einheit: Artefakt von zusammengehörigen Daten („Tabelle“) › Jedes Artefakt ist als Hive-Tabelle registriert › Bewirtschaftung = (Neu)Erstellung der Artefakte › Berücksichtigung von Abhängigkeiten bei der Bewirtschaftung › Fokus: kontinuierlich neue Daten (Batches, Daten in Zeitscheiben) 6 Definition Data Lake in unserem Kontext:
  7. 7. 7 Der Weg zum See Werkzeuge (Airflow/ Schedoscope) Lösungsansätze Vergleich& Empfehlungen
  8. 8. › Interne Datenplattformen u.a. bei Otto Group BI › Gestartet mit Oozie; Probleme: › Langsame Entwicklungszyklen › Viele redundante XML-Dateien › UnzureichendeClusterauslastung › Fehleranfällig › Fehlersuche schwierig 8 Ausgangslage Werkzeuge easy statt oozie J › „Schemaiscode“ › Goal-drivenscheduling › OpenSource, Scala(OttoGroupBI) Airflow › „Workflow iscode“ › Dynamische Daten-Pipelines › OpenSource, Python(AirBnB)
  9. 9. 9 s Agile Anbindung › Definition von „Views“ (Schema) › Statisch typisierte Scala-DSL › Agiles, schnelles Erstellen neuer Quellen & Ansichten Agile Anbindung › Abhängigkeiten Teil der View- Definition › Integriertes Unit-TestFramework › Entwickelt seit 2015bei Otto Group BI › Open Source (Apache SL 2.0) Agile Anbindung › Ziel-getriebene Beladung („Materialized Views on Demand“)
  10. 10. 10 s Agile Anbindung case class Nodes( year: Parameter[String], month: Parameter[String]) extends View with MonthlyParameterization with Id with PointOccurrence { val version = fieldOf[Int] val user_id = fieldOf[Int] val longitude = fieldOf[Double] val latitude = fieldOf[Double] comment("View of nodes partitioned by year and month with tags and geohash") storedAs(Parquet()) }
  11. 11. 11 s Agile Anbindung case class Nodes( ... val version = fieldOf[Int] val user_id = fieldOf[Int] val longitude = fieldOf[Double] val latitude = fieldOf[Double] transformVia(() => HiveTransformation( insertInto(this, queryFromResource(“hql/insertnodes.hql"))) ) ... }
  12. 12. 12 Airflow Agile Anbindung › Schemader (Hive-)Tabellenextern verwaltet (z.B. mit db-deploy) › Schema-Änderungenmüssenmanuell nachgezogenwerden Agile Anbindung › DefinitionvonDaten-Pipelines/DAGsmit Python › Dynamische SpezifikationderAbhängigkeiten › TransformationenviaOperatoren › Entwickelt bei AirBnB › Seit Juni 2015 OpenSource Agile Anbindung › ZeitbasiertesScheduling › Konzept von„Sensoren“
  13. 13. 13 Agile Anbindung Airflow upload_data = BashOperator( task_id='upload_data', bash_command='hadoop fs –put data.csv /data', dag=dag) process_data = HiveOperator( task_id='process_data', sql='hive_script.sql', dag=dag) upload_data.set_downstream(process_data)
  14. 14. Vergleich Oozie Airflow Schedoscope Sprache Java Python Scala Workflow-Spezifikation XML Python Scala Definition Abhängigkeiten Statisch(innerhalb XML); Definition „globale Struktur“ Dynamisch (via Python); Definition „globale Struktur“ (= DAG) Dynamisch; Definition „lokal“ (pro View) Schema-Management extern extern intern (schema is code) Change-Management Transformationen nein nein ja Test-Framework nein nein ja Scheduling-Optionen data, time data (via Sensors), time Ziel / Goal Sonstige Features Coordinators, Bundles, ... GUI für Monitoring/Config; Plugin-Erweiterbarkeit; SLA-Management, ... GUI (Metascope); Anbindung an externe Dienste (Redis,...); ... 14
  15. 15. 15 GUIs Airflow (Metascope)
  16. 16. 16 Der Weg zum See Lösungsansätze Vergleich& Empfehlungen
  17. 17. Agilität Entwicklung: • Schema • Transformation • Workflow Deployment dev Testen Deployment prod Schema, SQL/Spark, Oozie- XML Maven, Jenkins,.. FitNesse, Explorativ, Tests mit Hive › Viele Schrauben › Viele Fehlerquellen 17
  18. 18. › Data Engineering == Softwareentwicklung › Best Practices ähnlich 18 Agilität Wie wird man schneller? Agile Anbindung › Weniger unterschiedliche Tools weniger Konfigurationen an zu passen Agile Anbindung › Früh testen › Zeit bis zum entdeckten Fehler reduzieren › Continuous Integration/Delivery › Automatisierung!
  19. 19. 19 Testing › Tippfehler (im XML, SQL) › Logische Fehler › Schema-Änderungen in vorgelagerten Tabellen › Änderungen im Verhalten der Plattform, ... end-to-end (zB FitNesse) › Langsam, Tests getrennt von Codebase › trotzdem wichtig! isoliert („unit-test style“) › define input, run transformation, check output
  20. 20. 20 Testing Schedoscope 1 1 1 3 3 2 "processed.Nodes" should "load correctly" in { new Nodes(p("2013"), p("06")) with test { basedOn(nodeTags, nodes) then() numRows shouldBe 1 row(v(id) shouldBe "122318", v(occurredAt) shouldBe "2013-06-17 15:49:26Z", v(version) shouldBe 6, v(user_id) shouldBe 50299,
  21. 21. 21 Testing Airflow 1 1 3 Agile Anbindung › Kein integriertes Testen › Einzelne Tasks können über CLI separat ausgeführt werden („airflow test“) › Keine direkte Unterstützung zur Erzeugung von Eingabedaten, Prüfen von Assertions › Aber: Python-Bordmittel (pyunit, ...) können nahtlos angebunden werden › Zügige manuelle Erstellung einer Testumgebung
  22. 22. 22 Testing Airflow - Code 1 1 3 processed_clicklog = HiveTestDataHook( "src_omniture_clicklog", "version='post',report_suite='testsuite',day=20151014") for i in range(0,10): processed_clicklog.add_row({"evar": {1:"evar_1_val", 2:"evar_2_val"}}) processed_clicklog.write() self.run_task("omniture", "processed_to_datahub_events_pbox", "2015-10-14") assertEquals(len(datahub_events_pbox.get_contents()), 17) 1 2 3
  23. 23. 23 Abhängigkeiten Wer A sagt, muss auch B sagen Agile Anbindung › Bereinigte Views basieren auf Rohdaten › Analytische Views <- Processed › Aggregationen und KPI › Export in Serving oder Analyische DB (Exasol, Redis) › Joins › Aggregate über Zeiträume › Sequentielle Verarbeitung, abhängig vom Vortag
  24. 24. 24 Abhängigkeiten Beispiel Schedoscope case class Nodes( year: Parameter[String], month: Parameter[String]) extends View with JobMetadata { ... dependsOn(() => NodesWithGeohash(p(year), p(month))) dependsOn(() => NodeTags(p(year), p(month))) comment("View of nodes partitioned by year and month with tags and geohash") storedAs(Parquet()) } Agile AnbindungDynamisch, frei definierbar
  25. 25. 25 Abhängigkeiten Beispiel Airflow upload_data = BashOperator( task_id=‘upload_data', bash_command='hadoop fs –put data.csv /data', dag=dag) process_data = HiveOperator( task_id='process_data', sql=‘hive_script.sql', dag=dag) upload_data.set_downstream(process_data) Dynamische Instantiierung der Operatoren Dynamische Abhängigkeiten
  26. 26. 26 Late arriving data Lieber spät als nie 5.10.201621:59 5.10.201618:00 5.10.201618:00 5.10.201618:00 5.10.201618:00 5.10.201618:00 4.10.201623:02 4.10.201622:01 Batch: 6.10.2016 > Zeitzonen > techn. Verzögerung > falsche Systemzeit
  27. 27. 27 Late Arriving Data 5.10.2016 3.10.2016 4.10.2016 3.10.2016 5.10.2016 4.10.2016 3.10.2016 5.10.2016 INSERT OVERWRITE + Idempotenz - Daten ggfmüssen wiederholt verarbeitet werden Ingest-Time Event-Time Dynamic Partitions + Einfach + Einmalige Verarbeitung - nicht idempotent - Abhängigkeiten
  28. 28. 28 Der Weg zum See Agilität, Testing, Abhängigkeiten, Late arriving data Vergleich& Empfehlungen
  29. 29. 29 Zusammenfassung Schedoscope Airflow • UmfassendesTool • Testframework • Schema-Management • Export-Funktionen(jdbc, Kafka) • Metadaten: Metascope • Leichtgewichtiger Ansatz • Workflow iscode • erweiterbar • KomfortableGUIs • Community (seit April im Apache Incubator) • kleine Community • Lernkurve • Alles-oder-nichts • ÜberschaubaresSet an Standard-Operatoren • Verteilungerfordert zusätzliche Infrastruktur • Schema-/Change-Management aussen vorDemo gerne zwischen den Talks!
  30. 30. Vielen Dank Hans-Peter Zorn Dr. DominikBenz inovex GmbH ParkPlaza Ludwig-Erhard-Allee 6 76131 Karlsruhe

×