Wide-column Stores für Architekten (HBase, Cassandra)
1. Abteilung / Bereich / Datum (Tag.Monat.Jahr)
Wide-column Stores für Architekten
Analytics / Andreas Buckenhofer / 23.04.2015
2. Wide-column Stores für Architekten / Andreas Buckenhofer 2
1. NoSQL
2. Motivation Wide-column Stores
3. Datenmodellierung Wide-column Stores
4. Architektur
5. Use Cases
6. Zusammenfassung
Titel der Präsentation
Überblick
3. 3
Zur Person
Andreas Buckenhofer
Andreas Buckenhofer
Senior DB Professional
E-Mail: andreas.buckenhofer@daimler.com
Seit 2009 bei Daimler TSS im Fachgebiet
Data Warehouse & Data Integration (Cognos/Informatica) - Department Analytics
Schwerpunkt DWH/CRM seit 1998 als
• Entwickler
• Administrator
• Berater
Wide-column Stores für Architekten / Andreas Buckenhofer
4. TSS Unternehmenspräsentation / März 2015 / V9.8
Ganzheitliche Betreuung
(Erhebung, Auswertung,
Visualisierung und
Interpretation), unabhängige
Beratung und Optimierung der
Geschäftsabläufe.
Von klassischer BI bis hin zu
predictive und prescriptive
Analytics bieten wir Leistungen
unter Berücksichtigung der
Datensicherheit.
Dabei verknüpfen wir fachliche
Erfahrung und IT-Know-how im
Daimler-Kontext mit dem Blick
fürs große Ganze.Analytics. Das große
Ganze verstehen, um
Daten nutzbar machen.
5. Daimler TSS China
Hub Beijing
1 Mitarbeiter
Standorte
Daimler TSS Asia
Hub Kuala Lumpur
36 Mitarbeiter
MY
Daimler TSS India
Hub Bangalore
21 Mitarbeiter
IN
Ulm (Hauptsitz)
Raum Stuttgart
Böblingen, Echterdingen,
Leinfelden, Möhringen
Berlin
DE Daimler TSS Deutschland
6 Standorte
660 Mitarbeiter
CN
TSS Unternehmenspräsentation / März 2015 / V9.8
6. Wide-column Stores für Architekten / Andreas Buckenhofer 6
1. NoSQL
2. Motivation Wide-column Stores
3. Datenmodellierung Wide-column Stores
4. Architektur
5. Use Cases
6. Zusammenfassung
Wide-column Stores für Architekten
Überblick
7. Wide-column Stores für Architekten / Andreas Buckenhofer 7
• Key Value Stores
• Document Stores / Dokumentenorientierte Datenbanken
• Graph DBs
• Wide-column stores (column-oriented stores)
NoSQL
Datenbanken
8. NoSQL
Key Value Stores
Einfaches Datenmodell mit Paaren aus
eindeutigem Schlüssel und Wert/Werteliste.
Der Zugriff auf die Daten erfolgt
ausschließlich über den Schlüssel.
Daten sollten idealerweise in den Speicher
passen für schnelle Lesezugriffe (Caching)
Beispiel: Redis, Aerospike, Oracle NoSQL.
Key Value
userID1 ISBN1
userID2 ISBN2, ISBN8, ISBN9
userID3
Wide-column Stores für Architekten / Andreas Buckenhofer 8
9. NoSQL
Document Stores
Strukturen (XML, JSON, BSON) werden
in der Datenbank abgelegt.
Variables Schema.
Werte sind selbstbeschreibend (enthalten
Metadaten).
Zugriff über Schlüssel oder Indexierung
möglich.
Die Datenbank interpretiert das Modell
nicht.
Beispiel: MongoDB, CouchDB.
ID: 12345
Name: Mustermann
Geboren: 04.02.1992
ID: 637
Name: Berger
Adresse: ab 01.01.2005
PLZ: 89004
Stadt: Ulm
ab 01.07.2010
PLZ: 80990
Stadt: München
Wide-column Stores für Architekten / Andreas Buckenhofer 9
10. NoSQL
Graph DBs
Das Datenmodell beinhaltet Elemente
für die Modellierung von Knoten und Kanten
sowie deren Eigenschaften.
Die gesuchten Information sind weniger die
Daten selbst, sondern die Verknüpfungen
zwischen den Daten.
Optimiert für Graphabfragen,
z.B. Graphtraversal.
Beispiel: Neo4J.
user1
user2
user4
user3
user5
Wide-column Stores für Architekten / Andreas Buckenhofer 10
11. NoSQL
Wide Column Stores
Daten sind spaltenweise organisiert als
Schlüssel und Werte („columns“).
Diese Daten können durch übergeordnete
Schlüssel weiter gruppiert werden
(„column family“).
Zugriff über Schlüssel.
Hohe Skalierbarkeit mit Standard HW.
Beispiel: HBase, Cassandra.
Name (Key) Value TimestampRowKey
Name (Key) Value TimestampRowKey
Name (Key) Value TimestampRowKey
Wide-column Stores für Architekten / Andreas Buckenhofer 11
12. Wide-column Stores für Architekten / Andreas Buckenhofer 12
1. NoSQL
2. Motivation Wide-column Stores
3. Datenmodellierung Wide-column Stores
4. Architektur
5. Use Cases
6. Zusammenfassung
Wide-column Stores für Architekten
Überblick
13. Wide-column Stores für Architekten / Andreas Buckenhofer 13
BigData – Volume, Velocity, Variety
• Speicherung großer Datenmengen und interaktive Abfragen
• Flexible Speicherung von Daten
• Variable Spalten
• Hohe Skalierbarkeit
Motivation
Warum Wide-column Store?
14. Wide-column Stores für Architekten / Andreas Buckenhofer 14
Basis für Wide-column Stores:
• Datenmodell: Google BigTable
research.google.com/archive/bigtable-osdi06.pdf
• Architektur Amazon Dynamo für Cassandra
Bekannteste Produkte (Apache)
Motivation
Wide-column Stores
15. Wide-column Stores für Architekten / Andreas Buckenhofer 15
Motivation
HBase = Hadoop NoSQL Database
16. Wide-column Stores für Architekten / Andreas Buckenhofer 16
Motivation
HBase - Low Latency
HDFS / Hive / MapReduce (Hadoop) HBase basiert auf HDFS
Batch Interaktiv (ms)
Sequentielles Lesen und Schreiben wahlfreies Lesen und Schreiben
Optimiert für Full Scan Optimiert für einzelne Datensätze bzw Short
Scan
append-only, keine updates und deletes insert=updates und deletes
17. Wide-column Stores für Architekten / Andreas Buckenhofer 17
Motivation
Cassandra
entwickelt bei:
18. Wide-column Stores für Architekten / Andreas Buckenhofer 18
Motivation
HBase / Cassandra Beginn
2006
2008
2010
2012
HBase
Entwicklung
beginnt
HBase
Apache
Projekt
Cassandra 0.1
HBase 0.2
Cassandra
Apache
Projekt
19. Wide-column Stores für Architekten / Andreas Buckenhofer 19
1. NoSQL
2. Motivation Wide-column Stores
3. Datenmodellierung Wide-column Stores
4. Architektur
5. Use Cases
6. Zusammenfassung
Wide-column Stores für Architekten
Überblick
20. Wide-column Stores für Architekten / Andreas Buckenhofer 20
Datenmodellierung Wide-column Stores
Spalte (column)
Name (Key) Value Timestamp
Basis: Spalte (wide-column stores, column-oriented DBs)
Key-Value Paare mit Zeitstempel
Name (Key) ist Identifikator für Spalte
Spalten werden dynamisch erzeugt (keine Definition vorab)
21. Wide-column Stores für Architekten / Andreas Buckenhofer 21
Datenmodellierung Wide-column Stores
Spalte
Keine Datentypen
• Byte[]
• Schema-los, schema-on-read
• Gilt auch für RowKey
Kleine Zellgrößen 0-5MB
Kurze Namen/Keys für bessere Performance / weniger Datenvolumen (sofern
Namen/Keys feststehen)
Speicherung von Werten als Spaltennamen und leerem Wert möglich
22. Wide-column Stores für Architekten / Andreas Buckenhofer 22
Datenmodellierung Wide-column Stores
Zeile (row)
Zeile: Menge von sortierten Spalten
Spalten sind sortiert anhand von Name (Key)
Name (Key) Value Timestamp
Name (Key) Value Timestamp
Name (Key) Value Timestamp
RowKey
23. Wide-column Stores für Architekten / Andreas Buckenhofer 23
Datenmodellierung Wide-column Stores
Zeile (row)
RowKey Design: wichtigster Teil der Datenmodellierung
• RowKeys sind die einzigen Indexe
• Gewährleistet schnellen Lesezugriff
• Antipattern: nur Zeitstempel als Rowkey, Gefahr von Hotspots beim
Schreiben
• Oft zusammengesetzt (z.B. Metrik + Zeitstempel)
• Unterschiedlich lange Felder in zusammengesetzen Keys (Scan-Zugriff
ist aufwändiger)
• Oft Hashing
Zeilenänderungen sind atomar, auch bei Tausenden von Spalten
24. Wide-column Stores für Architekten / Andreas Buckenhofer 24
Datenmodellierung Wide-column Stores
Column Family
Column Family: Menge von sortierten Zeilen
Ein oder mehrere Column Families werden zu einer Tabelle zusammengefasst
Zeile ist sortiert und indexiert durch RowKey
Name (Key) Value TimestampRowKey
Name (Key) Value TimestampRowKey
Name (Key) Value TimestampRowKey
25. Wide-column Stores für Architekten / Andreas Buckenhofer 25
Datenmodellierung Wide-column Stores
Column Family
Column Families können sehr breit werden, aber auch sehr schmal sein
Namen (column family qualifier) von Column Families werden vorab definiert
Keine Joins
• Denormalisierung
• Duplizierung der Daten falls nötig
• Verknüpfung / Join der Daten im Programmcode
Qualifizierter Zugriff auf eine Zelle:
{RowKey => {column family => {column qualifier (Name / Key) => {timestamp}}}}
26. Wide-column Stores für Architekten / Andreas Buckenhofer 26
Datenmodellierung Wide-column Stores
Modellierungsmuster
Entitäten
Column Family als optimierte Abfrage
Events / Zeitreihen
27. Wide-column Stores für Architekten / Andreas Buckenhofer 27
Datenmodellierung Wide-column Stores
Entitäten
Einfacher RowKey
Einheitliche, bekannte Spaltennamen
Oft wenige Spalten
Schemalos
28. Wide-column Stores für Architekten / Andreas Buckenhofer 28
Datenmodellierung Wide-column Stores
Entitäten - Stücklistenauflösung
P
|
+-------+
| 1x | 1x
C1 B
|
+-------+------+
| 1x | 1x | 2x
C1 C2 C3
Auftrags-
prognose
Produkt-
katalog
Teilebedarf
29. Wide-column Stores für Architekten / Andreas Buckenhofer 29
Datenmodellierung Wide-column Stores
Entitäten - Stücklistenauflösung
Part C2 1 t2
Part C1 2 t1
… … …
FahrzeugID1
Part D1 3 t5
Part C5 20 t1
… … …
FahrzeugID2
30. Wide-column Stores für Architekten / Andreas Buckenhofer 30
Datenmodellierung Wide-column Stores
Column Family als optimierte Abfrage
Keine Indexe
Abfrage-orientiertes Datenmodell
Denormalisierung und Duplizierung
Spaltenwerte sind die Row Keys von Entitäten
31. Wide-column Stores für Architekten / Andreas Buckenhofer 31
Datenmodellierung Wide-column Stores
Column Family als optimierte Abfrage
Abfrage: In welchen aufgelösten Stücklisten kommt Teil C2 vor?
Scan über alle Zeilen (d.h. über alle Regionserver)
Kein universelles Datenmodell bzw SQL wie bei RDBMS: Bei der
Datenmodellierung bei Wide-column Stores ist die Berücksichtigung von Abfragen
von Beginn an nötig.
33. Wide-column Stores für Architekten / Andreas Buckenhofer 33
Datenmodellierung Wide-column Stores
Events / Zeitreihen
RowKey als Zeitelement
Meist zusammengesetzter RowKey zur Vermeidung von Hot Spots
Hashing einzelner RowKey-Komponenten
Spaltenwerte als Events
Spaltenwerte als Messwerte
Column Families können sehr breit werden
34. Wide-column Stores für Architekten / Andreas Buckenhofer 34
Datenmodellierung Wide-column Stores
Events / Zeitreihen
Änderungen führen zu einer Versionierung von Stücklisten (d.h. Abspeicherung
einzelner Versionen)
FahrzeugID3 (NULL) t2
FahrzeugID1 (NULL) t1
… … …
MD5(PartID) +
MD5(Änderungsdatum)
36. Wide-column Stores für Architekten / Andreas Buckenhofer 36
Datenmodellierung Wide-column Stores
Operationen
Put
• Zeile Einfügen (insert bzw update)
Delete
• Zeile löschen
Get
• Zeile lesen
Scan
• Lesen mehrerer Zeilen (profitiert von Sortierung)
• Angabe von Filter möglich
37. Wide-column Stores für Architekten / Andreas Buckenhofer 37
1. NoSQL
2. Motivation Wide-column Stores
3. Datenmodellierung Wide-column Stores
4. Architektur
5. Use Cases
6. Zusammenfassung
Wide-column Stores für Architekten
Überblick
38. Wide-column Stores für Architekten / Andreas Buckenhofer 38
Architektur
Überblick (HBase)
HMaster
HRegionServer1 HRegionServer2 HRegionServerN
HDFS-Datanode1 HDFS-Datanode2 HDFS-DatanodeN
Client Zookeeper
Location to
Meta-Tab
39. Wide-column Stores für Architekten / Andreas Buckenhofer 39
Architektur
Datenverteilung
HRegionServer1 HRegionServer2 HRegionServerN
Region2 Region3
RegionX
RegionY
Region1
RowKey A
RowKey B
RowKey C
RowKey D
RowKey I
RowKey J
Region1
40. Wide-column Stores für Architekten / Andreas Buckenhofer 40
Architektur
RegionserverWAL(write-aheadLog)
Region1
HFile
HDFS - Datanode1
HFile
Mem
Store
Region2
HFile HFile
Mem
Store
HFile
Block Cache
RAM
Festplatte
41. Wide-column Stores für Architekten / Andreas Buckenhofer 41
Architektur
Regionserver – Schreiben (Write)WAL(write-aheadLog)
Region1
HFile
HDFS - Datanode1
HFile
Mem
Store
Region2
HFile HFile
Mem
Store
HFile
1
2
Block Cache
HFile
(neu)
…3
4
42. Wide-column Stores für Architekten / Andreas Buckenhofer 42
Architektur
Regionserver – Lesen (Read)WAL(write-aheadLog)
Region1
HFile
HDFS - Datanode1
HFile
Mem
Store
Region2
HFile HFile
Mem
Store
HFile
1
2
3
4
Block Cache
3
43. Wide-column Stores für Architekten / Andreas Buckenhofer 43
Architektur
Dateityp: Log
WAL (Write-ahead Logs)
• Schreibezugriffe erfolgen zuerst in WAL
• Sequentielles Schreiben
• Nur Hinzufügen von Daten
• Neue Datei wird regelmäßig erstellt
• Eine aktive Datei pro Server
44. Wide-column Stores für Architekten / Andreas Buckenhofer 44
Architektur
Dateityp: Datendateien
HFiles
• unveränderlich (Daten werden einmalig eingefügt)
• ein oder mehrere Dateien pro Column Family (performancekritisch, falls zu
viele Dateien)
• Wahlfreies (random) oder Sequentielles Lesen
• Mehrere GB groß
• werden erstellt durch Flush aus MemStore oder durch „Compaction“
• Bloom Filter (In-memory Bitmap Index zum Auffinden der RowKeys)
Links / References
• Werden erstellt bei „Region split“
45. Wide-column Stores für Architekten / Andreas Buckenhofer 45
Architektur
Compactions
Zusammenführen von Datendateien und Sortierung von RowKeys
Server bleibt online
Kleinere Regionen führen zu performanteren Zusammenführungen
Minor
• Zusammenführen von HFiles (>= 2) in eine neue HFile-Datei
Major
• zusätzlich: Löschen der Daten bei Delete-Operationen
• zusätzlich: Löschen von ungültigen (expired) Zellen
• Reduzierung auf 1 HFile
46. Wide-column Stores für Architekten / Andreas Buckenhofer 46
Architektur
Anbindung
API
• Viel Code
• Anwendung ist sehr stark am Datenmodell ausgerichtet
SQL
• Cassandra: CQL
• HBase: SQL over Hive
• HBase: Phoenix
47. Wide-column Stores für Architekten / Andreas Buckenhofer 47
1. NoSQL
2. Motivation Wide-column Stores
3. Datenmodellierung Wide-column Stores
4. Architektur
5. Use Cases
6. Zusammenfassung
Wide-column Stores für Architekten
Überblick
48. Wide-column Stores für Architekten / Andreas Buckenhofer 48
Use Cases
Materialized Views
Quelldaten
Auswertungen / Analyse
Analytische oder
Adhoc-Abfragen
Interaktive
Abfragen
Mat Views
49. Wide-column Stores für Architekten / Andreas Buckenhofer 49
Use Cases
Lambda Architektur
Batch Layer
All Data
Speed Layer
RealTime Views
Serving Layer
Batch Views
Query
(merge)
Data Stream, z.B. EventLogs
50. Wide-column Stores für Architekten / Andreas Buckenhofer 50
Use Cases
SuchIndex, Text Analytics
(Text-) Quelldaten, z.B. Logs
Indizierung
Dokumente
51. Wide-column Stores für Architekten / Andreas Buckenhofer 51
1. NoSQL
2. Motivation Wide-column Stores
3. Datenmodellierung Wide-column Stores
4. Architektur
5. Use Cases
6. Zusammenfassung
Wide-column Stores für Architekten
Überblick
52. Wide-column Stores für Architekten / Andreas Buckenhofer 52
Zusammenfassung
Datenmodellierung auch für BigData
• Skalierbarkeit
• Hohe Schreibperformance
• Interaktive Abfragen (ms)
• Wahlfreies Lesen und Schreiben
• Datenmodell hat mehr Struktur im Vergleich zu anderen NoSQL-DBs
• Apache Open Source
• Community
• Viele Personen + Apache, nicht nur kommerzielle Unternehmen wie
Hortonworks, Cloudera, DataStax, etc
53. Wide-column Stores für Architekten / Andreas Buckenhofer 53
Zusammenfassung
Wide-column Stores
Datenmodellierung auch im Hadoop bzw NoSQL-Umfeld wichtig, um
• Daten zu verstehen
• Performanz zu garantieren
• Entwicklung zu beschleunigen
• Qualität der Software zu verbessern
• Wartungskosten zu reduzieren
• Gemeinsames Verständnis zu fördern
• Schema-on-read: Modellversionen auch nach Jahren noch verstehen
“Data modeling is the process of learning about the data, and regardless of
technology, this process must be performed for a successful application.”
Quelle Zitat: Steve Hoberman: Data Modeling for Mongo DB, Technics Publications 2014
54. Wide-column Stores für Architekten / Andreas Buckenhofer 54
Vielen Dank!
Daimler TSS GmbH
Wilhelm-Runge-Straße 11
89081 Ulm
Telefon +49 731 505-06
Fax +49 731 505-65 99
tss@daimler.com
Internet: www.daimler-tss.com
Daimler TSS GmbH
Sitz und Registergericht: Ulm, HRB-Nr.: 3844
Geschäftsführung: Dr. Stefan Eberhardt (Vorsitzender), Steffen Bäuerle
55. Wide-column Stores für Architekten / Andreas Buckenhofer 55
HBase vs Cassandra
Eigenschaften 1(2)
HBase Cassandra
Infrastuktur Wird i.d.R. mit Hadoop
verwendet (Standalone
möglich). Nutzung häufig in
BigData / DWH / Analytics
Architekturen.
Standalone. Nutzung häufig
zur Auswertung Real/Right
Time Transaktionen.
Serverknoten Master und Slaves
(Regions).
Alle Knoten sind
gleichberechtigt. Kein
Masterknoten.
Cluster, Replikation Replikation zu einem
gespiegelten Cluster
möglich. Replikation über
Rechenzentrumsgrenzen
nicht empfohlen.
Knoten sind als Ring
angeordnet. Daten werden
repliziert, auch über
Rechenzentrumsgrenzen
hinweg möglich.
56. Wide-column Stores für Architekten / Andreas Buckenhofer 56
HBase vs Cassandra
Eigenschaften 2(2)
HBase Cassandra
Sortierung RowKey Automatisch, nicht änderbar.
Kurze Scans nach RowKeys
möglich und sinnvoll.
Konfigurierbar, ob
Sortierung nach RowKey
erwünscht ist.
Coprocessors Erweiterung von HBase
vergleichbar mit Stored
Procedures, Trigger
Nicht unterstützt
CAP-Theorem CP CP oder AP möglich
Sekundäre Indexe Nein
(nur über Phoenix)
Ja
57. Wide-column Stores für Architekten / Andreas Buckenhofer 57
Datenmodellierung
Sekundäre Indexe (Cassandra)
Cassandra: Indexierung von Spaltenwerten möglich
• Für Werte mit geringer (!) Kardinalität
• Gegenteil von Indexen in relationalen DBs (hohe Kardinalität)
58. Wide-column Stores für Architekten / Andreas Buckenhofer 58
Datenmodellierung
Latenz vs Durchsatz
Niedrige Latenz Durchsatz
Put
Get Short
Scan
Bulk
Import
Full
Scan
59. Wide-column Stores für Architekten / Andreas Buckenhofer 59
Zusammenfassung
Workloads Hadoop
Durchsatz
Interaktiv
Wahlfrei Sequentiell / Full Scan
HBase
Spark on HDFS
HDFS / MapReduce