Big Data - DWH Community

Werbung
1
Big Data +
Data Warehouse
Lösungsarchitekturen
Tagesseminar
Oracle Data Warehouse Community
September 2016
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
2
Themen
• Architekturbetrachtung
• Grundlagen Big Data Technologie
– Hadoop
– File Typen
– Spark
• Offloading Data Warehouse Objekte
–
–
–
–
Szenarien
Daten exportieren
Big Data Daten Lesen / Big Data SQL
Offload Szenario mit Messdaten
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
3
Themen 2
• Zugreifen und Programmieren auf Hadoop
– Scala, Python, R
– Oracle R Connect for Hadoop (ORCH)
– Beispiel SQL Pattern-Matching mit Big Data SQL
• Fast Data
– Data Lake
– Kafka, Flume
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
4
Mögliche Rollen von Hadoop in Data Warehouse
Architekturen
1
Data Staging / Data Lake
3
• Vorverarbeitung
• Filtern
• Abfedern von ETL-Aufwand
• Fokuserweiterung
2
Skalierung / Flexibilität
• Online - Archive
• Neues ODS-Konzept
• Sandboxing / Data Science
Neue Daten
• Multi-structure Data
• Logical Data Warehouse
• Zusätzliche Quellen, z. B. WWW
4
Fast Data
• Event Processing
• Operationalisierung der
Warehouse-Anwendung
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
5
Fälle aus der Praxis: Welche Anfragen kommen konkret vor
1. DB / DWH Offloading
(Basis bestehendes DWH)
– Technik: Big Data SQL
– Business Case: Kosten
2. Kosten für selbst aufgebauten
Hadoop Cluster
(unabhängige Umgebung)
– Technik: BDA
– Business Case: Kosten für
Projekt + Maintenance
3. BDA-Infrastruktur für Dritt-ToolAnbieter
– Z. B. SAS
4. Sammlung auf Datenvorrat
– Folgeproblem Menge
– Erst Sammeln und irgendwann auf Bedarf
Analysieren
5. Predictive Maintenance
– Verfeinerte Predictive-Analysen aufgrund von mehr
Datenvorrat
– Zusätzliche Predictive Analysen durch zusätzliche
Datenformate
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
6
Lambda-Architektur / Fast Data Aspekt
D a t a
W a r e h o u s e
B a t c h L a y e r
Alle
UnternehmensProzesse
Industrie 4.0
Log +
Produktions
Daten
ETL - Batch
Zeitlich abgestimmte
Verarbeitung
Events
Permanenter Datenfluss
Realtime
Integration
Layer 1
Enterprise Layer
Core - DWH / Info Pool
Integration und
Harmonisierung
Strategische
Sichten
User View
Layer
Aktuelle
Sichten
Batch
View
SQL
Realtime
View
Spontanes Ablegen
der Daten ohne
Prüfung und Transformation
O p e r a t i o n a l
S p e e d
Einheitlicher
Zugriff
D a t a S t o r e
L a y e r
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
7
Data Lab Aspekt
Actionable
Events
Actionable
Insights
Actionable
Information
Structured
Enterprise
Data
Data
Streams
Data
Reservoir
Event Engine
Data Factory
Enterprise
Information Store
Reporting
Other
Data
Execution
Innovation
Events
& Data
Discovery Lab
Discovery
Output
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
8
Oracle
Produkte
Big Data
Appliance
+
Cloudera Hadoop
Exadata
+
Oracle
Datenbank
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
9
N e u e
D a t e n
B e s t e h e n d e
D a t e n
Hadoop in Data Warehouse Architekturen
Alle
Prozesse
Integration Layer 1
Alle
Unternehmensteile
Soziale
Daten
Core - DWH / Info Pool
Strategische Sichten
IoT
Log +
Produktions
Daten
Enterprise Layer
Kosten/Nutzen-Relation bei der
Speicherung bestimmter Daten
passt oft nicht. Oft bleibt nur
der Verzicht auf die Daten, weil
es zu teuer ist.
Archive Layer / ODS
User View
Layer
Aktuelle
Sichten
Alte Daten, Messdaten,
Bon-Daten ....
• Spezielle Datenarten
CDRs, Bondaten, Logdaten,
Click-Daten, Messwertdaten
• Archiv für alte Daten (ILM)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
10
D a t e n
N e u e
Alle
Prozesse
Integration Layer
User View
Layer
Enterprise Layer
ETL
Core - DWH / Info Pool
Aktuelle Sichten
Alle
Unternehmensteile
Industrie 4.0
Log +
Produktions
Daten
Strategische Sichten
Offload
B e s t e h e n d e
D a t e n
Hadoop in Data Warehouse Architekturen
Data Lake
Kosten/Nutzen-Relation bei der
Speicherung bestimmter Daten
passt oft nicht. Oft bleibt nur
der Verzicht auf die Daten, weil
es zu teuer ist.
Archive / ODS /
Skalierung
• Spezielle Datenarten
CDRs, Bondaten, Logdaten,
Click-Daten, Messwertdaten
• Archiv für alte Daten (ILM)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
D
D
D
F
• Große
Fakten-Tabellen
11
Die Fragestellungen
• Auslagern von Warehouse-Daten nach Hadoop
– Schreiben?
– Lesen?
• Erweiterte Bereiche
– DWH + Data Lake
• Neue Möglichkeiten im Realtime Warehouse
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
12
Grundlagen Big Data Technologie
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
13
Zur Orientierung und Begriffsklärung
Big Data
Hadoop
• Bereitstellungskonzept für
• Programmier-Java-Framework
– Neue Datenarten
– Neue Business-Opportunities
– Neue Analyseverfahren/Vorgehensweisen
• Generalisierte Sicht
– Immer weniger spezifiziert
– zu Verarbeitung großer Datenmengen
– in einer extrem parallelisierten Form
– Mit einem horizontal-skalierbaren
Rechnerverbund (Cluster)
• Technische Sicht
– Konkrete Tools
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
14
http://hadoop.apache.org/
Hadoop
• Programmier-Java-Framework
– zu Verarbeitung großer Datenmengen
– in einer extrem parallelisierten Form
– Mit einem horizontal-skalierbaren Rechnerverbund (Cluster)
• Hadoop besteht aus
– Hadoop Distributed File System (HDSF)
• Ein über den Cluster verteiltes Files-System
– Hadoop Map Reduce
• 2-phasiges Programmier-Framework (Mapper/Reducer)
– YARN (Yet Another Resource Negotiator)
• Programmiermodell für verteile Anwendungen in einem Hadoop-Cluster, bei dem eine
entsprechende Anzahl an Ressourcen zugeteilt wird (CPUs, RAM, Speicher)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
15
Was ist Hadoop historisch?
Processing Layer
MapReduce
Storage Layer
Filesystem (HDFS)
Schritt 0: Ein über Rechnergrenzen verteiltes
Datei System
(logisch sieht man ein Verzeichnis, physisch ist
es auf mehreren Servern)
– Hadoop Distributed File System (HDFS)
+
Framework mit paralleler Verarbeitung auf
diesem File System: MapReduce
Hauptziele:
- Hight availability
- Scalability
Achtung: Performance ist nur optional
Zeit: Ungefähr 2006
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Was ist Hadoop? Hive
Processing Layer
MapReduce
Hive, Pig…
Storage Layer
Filesystem (HDFS)
Schritt 1 der Entwicklung:
Problem: MapReduce arbeitet gut aber
setzt Java-Programmierung voraus. Viele
Benutzer wollten jedoch eine Art High
Level API (z. B. SQL) um auf HDFS Daten
zuzugreifen
Lösung: Spezielle Tools zum übersetzen
von z. B. SQL nach Java MapReduce.
Beispiele: Hive, Pig
Zeit: Ungefähr 2008
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Was ist Hadoop? Impala
Processing Layer
Impala
MapReduce
Hive, Pig…
Storage Layer
Filesystem (HDFS)
Schritt 2 der Entwicklung:
Problem: MapReduce wurde historisch nur für
Skalierung und Hochverfügbarkeit entwickelt .
Performance war nicht das Hauptziel. Allerdings
wurde Performance zunehmend wichtiger.
SQL als Zugriff + performante Zugriffe
Lösung: Spezialisierte Tools (Nicht MAP REDUCE),
die direct auf HDFS zugreifen. Performance ist
hier wichtiger als Verlässlichkeit und Skalierung.
Zeit: Ungefähr 2011
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Was ist Hadoop? Spark
Processing Layer
MapReduce
Hive, Pig…
Impala
Storage Layer
Filesystem (HDFS)
Spark
Schritt 2 der Entwicklung:
Problem: MR entstand 2006. in der
Zwischenzeit hat sich die Technologie
weiterentwickelt Eine neue
Generation of MapReduce wurde
nötig
Lösung: Spark wurde seit 2013 lals
neue MapReduce – Generation
entwickelt
Zeit: Ungefähr 2013
In allen Fällen stand das Prinzip “Schema on Read” im Fokus
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Schema on read vs schema on write
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
20
“Schema on read” Konzept
Die Idee:
- Kopieren der Daten, so wie sie vom
Source-System geliefert werden
- Das Format wird erst zum späteren
Lesezeitpunkt ermittelt
- Für unterschiedliche Benutzer, können
die gleichen Daten in unterschiedlicher
form dargestellt werden.
Vorteile:
- Hohe Performance beim Schreiben
- Hohe Flexibilität, zum Schreiben
benötigt man kein Format un dkeine
Prüfungen
Nachteile:
- Geringere Performance für End User.
Daten müssen immer geparsed werden.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted
21
“Schema on write” Konzept
Die Idee:
- Definition von Columns+Typen
- Source-Daten werden mit Blick
auf das Zielschema geparst und
geprüft
- Daten werden in Tabellen geladen
- All users read the same data
Vorteile:
- Hohe Performance für End Users
- Höhere Qualität der Daten
Nachteile:
- Weniger Flexibilität im Umgang
mit den Daten
- Geringere Performance beim
Schreiben der Daten
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted
22
HDFS – Hadoop Distributed File System
• Einfache Hardware
• Ausfallsicherung
einzelner Knoten
• Speicherung +
Verarbeitung großer
Datenmengen
• Horizontal skalierbar
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
23
Abarbeitung bei dem Schreiben in das HDFS
1
Client
Name Node
Anfrage nach
„günstigstem“
Knoten
Metadaten,
Name,
Repliken,
Schreiben auf den
nächsten und schnellsten
2
3
Automatische
Replikation
Data Nodes
Data Nodes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
24
Abfrageschema mit Map Reduce
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
25
Arbeitsweise von Map Reduce am Beispiel von Oracle R
ontime
<- ore.pull(ONTIME_S[ONTIME_S$YEAR==2000,])
ontime.dfs <- hdfs.put(ontime, key='UNIQUECARRIER' )
res <- NULL
res <- hadoop.run(
ontime.dfs,
mapper = function(key, ontime) {
if (ontime$DEST == 'SFO') {
keyval(key, ontime)
}},
reducer = function(key, vals) {
sumAD <- 0; count <- 0
for (x in vals) {
if (!is.na(x$DISTANCE)) {
sumAD <- sumAD + x$DISTANCE; count <- count + 1
}}
if (count > 0) { res <- sumAD / count }
else
{res <- 0 }
keyval(key, res)
})
hdfs.get(res)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
26
Hadoop 2.x / YARN (Yet Another Resource Negotiator)
• Erweitertes Architekturmodell
zur Ressourcen-Verwaltung in
hochparallelisierbaren
Cluster-Umgebungen
– Clustergröße > 4500 Knoten
– Name Node ist nicht mehr
Single-Point-of-Failure
– Neben Map Reduce gibt es
weitere Programmiermodelle
(z. B. Spark)
– Funktionen können über
Rest Services angesprochen werden
Node Manager
Client 1
Application Master
Container
Client 2
Resource Manager
Application Manager
Scheduler
Node Manager
Application Master
Container
Node Manager
Map-Reduce-Status
Node-Status
Ressourcen-Anfrage
Container
Container
Job - Aufruf
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
27
Zentrale Hadoop-Komponente: Hive
• Hive: SQL-Interface auf HDFS-Daten
– Strukturierung in Datenbanken und in darin
liegenden Tabellen
Hive
• Eigener Metadata-Store
– Beschreibung aller Tabellen
HBase
MapReduce
• Hive kennt externe und Interne Tabellen
• Zugriff auf Daten über
Yarn
– Map Reduce Jobs oder
– HBase
HDFS
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
28
Files im HDFS
– Varianten und Optimierungen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Wie sind Daten im HDFS abgelegt
data
hr
salaries.csv
website
2016-01
clicks1.json
clicks2.json
2016-02
clicks3.json
clicks4.json
• Daten in in “organisierten”
Verzeichnissen abgelegt
– Beliebige Datei-Typen (CSV,
Parquet,ORC)
– Automatische Replizierung 3x im
Cluster
• Schema on Read
– Tools interpretieren die Daten beim
Lesen, wenn die Daten passen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
30
Wie sind Daten im HDFS abgelegt
data
hr
salaries.csv
website
2016-01
clicks1.json
clicks2.json
2016-02
clicks3.json
clicks4.json
Hanks,Spielberg,1000000
Spielberg,Cameron,2500000
Cameron,Oprah,125000
Oprah,Boss,54000000
{"custId":1354924,"movieId":1948,"genreId":9,"time":"2012-07-01:00:00:22”}
{"custId":1083711,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:26”}
{"custId":1234182,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:32”}
{"custId":1010220,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:42”}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
31
Organisation und Datenbeschreibung mit Hive
data
hive
hr
warehouse
Database
salaries.csv
data.db
Table
website
hr
2016-01
salaries.csv
Table
clicks1.json
website
clicks2.json
Partition
month=2016-01
2016-02
clicks1.json
clicks3.json
clicks2.json
clicks4.json
month=2016-02 Partition
clicks3.json
clicks4.json
• Information über die Speicherung ist im
Hive Metastore enthalten
• HDFS Folders warden zu:
– Databases
– Tables
– Partitions
• Table enthalten Metadata für das Parsing
der Dateien über Java Klassen
– InputFormat definiert “Chunks” bzw. Splits
basierend auf dem jeweiligen File-Typ
– RecordReader erzeugt Records (rows) aus den
splits
– SerDe erzeugt Spalten
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
32
Wie liest und interpretiert Hive die Daten
SELECT name
FROM my_cust
WHERE id = 1
Hive Metastore Defines:
InputFormat
RecordReader
SerDe
SQL Execution
/n
/n
/n
/n
Any File Type
Create Splits
Create Records
Create
Attributes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Select Data
33
Partition Pruning mit Hive
SELECT name
FROM my_cust
WHERE id = 1
Hive Metastore
Use partition pruning to reduce IO
/n
/n
/n
/n
Define more
fine-grained
schema on files:
Patitioning
Create Splits
Create Records
Create
Attributes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Select Data
34
Wie arbeiten Parquet Files?
Create Parquet File
Hive Metastore
InputFormat
RecordReader
SerDe
Materialize Parquet
File(s)
/n
/n
/n
/n
Any File Type
Create Splits
Create Records
Create
Attributes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Store parsed data,
Metadata
and Statistics
35
Wie arbeiten Parquet Files?
Create Parquet File
Hive Metastore
InputFormat
RecordReader
SerDe
Schema on READ
/n
/n
Materialize Parquet
File(s)
Schema on WRITE
/n
/n
Any File Type
Create Splits
Create Records
Create
Attributes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Store parsed data,
Metadata
and Statistics
36
Wie arbeiten Parquet Files?
Abfragen eines Parquet Files
Schema on Write
Column Projection
Parquet hat eine Art
Datenbank-Speicherung
implementiert mit separaten
Metadaten und bereits
“geparsten” Datenbereichen.
Columns
Select name
from my_cust
where id = 1
Rows
Predicate based
Row Elimination
Metadata for “blocks”
Metadata drives
database-like scanning
behavior
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
37
ORC- Files
• Optimierung für schnelles Lesen
• Rohdaten sind in „Stripes“ organisiert
• Zusatzinformationen stehen in einem FooterBereich
• In dem Index-Bereich stehen:
– Max/min- Werte pro Column
– Column-Positionen
– Offsets für Compression usw.
• Erstellung z. B. über
•
•
•
ALTECREATE TABLE ... STORED AS ORC
R TABLE ... [PARTITION partition_spec] SET FILEFORMAT ORC
SET hive.default.fileformat=Orc
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
38
AVRO-File Type
• Dateiformat, das wie JSON oder XML Metadaten zur Feldbeschreibung mit
sich führt
• Kompakter und effizienter als JSON, weil weniger Metadaten wiederholt
werden
• Kann durch Hive und alle SQL-Tools mit SerDe-Funktionlität gelesen werden
• Weniger effizient bei Komprimierung
• Robust gegenüber fehlerhaften Werten
• Sinnvoll und Haupteinsatzzweck bei sich oft ändernden Datenformaten
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
39
Spark
Spark ist eine der Engines zur Bearbeitung von HDFS
Processing Layer
MapReduce
and Hive
Spark
Impala
Search
Big Data
SQL
Resource Management (YARN, cgroups)
Storage Layer
Filesystem (HDFS)
NoSQL Databases
(Oracle NoSQL DB, Hbase)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Architektur – Bestandteile von Spark
• Spark Core: Main engine zur
Datenverarbeitung
• Mlib: Extension von Spark core für
Machine Learning
• GraphX: Extension von Spark core
für Graph-Verarbeitung
• Spark SQL: Extension von Spark
core um Programme für SQL
Abfragen zu erstellen
• Spark streaming: Verarbeitung
von Realtime Daten.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Auf Hadoop aufsetzende verteilte Ablaufumgebung für große
Datenmengen
–
bis zu 100 mal schneller als Hadoop Map Reduce
– InMemory Verarbeitung (RDD Objekte, partitioniert und über Cluster verteilt)
• Einfache Zugriffe durch Java, Scala, Python
– Mehr als 80 High-Level-Operationen
=> Abstrakte Programmiertätigkeiten machbar
anstelle von Java
– Interaktives Bedienen aus den
Kommando-Shells von Scala, Python
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
42
Verarbeitungsprinzip von Spark
Python
Java
Scala
R
RDD Operations
RDD Object
RDD Object
RDD Object
RDD Object
In-Memory-Verarbeitung
Keine IOs auf den jeweiligen
Cluster - Konten
RDD = Resilent Distributed Dataset
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
43
• In Skripte eingebettete SQLs (Spark SQL)
• Daten in unterschiedlichen Formaten (AVRO, Parquet, ORC, JSON, HIVE)
• Über JDBC / ODBC durch BI-Tools zugreifbar
• Hive-Kompatibel
Spark SQL
context = HiveContext(sc)
results = context.sql(
"SELECT * FROM people")
names = results.map(lambda p: p.name)
Zugriff auf Formate
Hive, Avro, Parquet,
ORC, JSON
Hive Kompatibel
Standardzugriffe
context.jsonFile("s3n://...")
.registerTempTable("json")
results = context.sql(
"""SELECT *
FROM people
JOIN json ...""")
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
44
Offloading Data Warehouse Objekte
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
45
N e u e
D a t e n
B e s t e h e n d e
D a t e n
Traditionelle Data Warehouse Architekturen
Alle
Prozesse
Integration Layer
Enterprise Layer
ETL
Core - DWH / Info Pool
User View
Layer
Aktuelle Sichten
Alle
Unternehmensteile
D
D
Strategische Sichten
D
D
FF
D
D
Industrie 4.0
Herausforderungen
Log +
Produktions
Daten
• Neue Datenarten: Integrieren oder nicht
• Datenmengenthematik: Kosten und
Verarbeitungszeit
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
46
Lösungen der Datenmengenthematik
• Periodisches Löschen alter Daten
– Eingeschränkter Analyse-Zeitraum
• Auslagen von älteren Daten in ein Offline-Archive
– Ist oftmals nicht wirklich günstiger
– Wiederherstellungsaufwand
– Unflexible Analyseabläufe aus Anwendersicht
• Offloading von bestimmten Datenbereichen auf ein günstigeres Medium
– Online-Verfügbarkeit aller Daten
– Hybride Datenhaltung
– Nutzung der Daten aus Sicht des relationalen Data Warehouse - Systems
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
47
Datenarten
• Große Fakten-Tabellen
• Semi-Strukturierte Daten (XML, JSON)
• Text-Daten,
• Audio-/Video-Daten
Und natürlich alle
Datenarten
kombiniert
• Cold-Data
• Obsolet-Data
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
48
N e u e
D a t e n
B e s t e h e n d e
D a t e n
An welchen Stellen im Data Warehouse
macht Offloading Sinn?
Alle
Prozesse
User View
Layer
Enterprise Layer
Integration Layer 1
Core - DWH / Info Pool
Strategische Sichten
Alle
Unternehmensteile
Temporäre Daten
Referenzdaten
Stammdaten
R
R
R
S
S
S
Aktuelle Sichten
IoT
Transaktionale
granulare Daten
Log +
Produktions
Daten
Soziale
Daten
•
Temporäre
Rohdaten
•
•
•
3 NF Modelle
Potenzielle Abfragestrukturen
UnternehmensKennzahlen
•
•
•
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
Hierarchisch
Strukturierte
Dimensionen
Große
Faktentabellen
Multimensionales
Modell
49
Mit Verstand die Themen betrachten
• In Warehouse-Umgebungen sind einige Informationen für eine bestimmte
Art der Verwendung hin strukturiert
– Hierarchische Dimensionen zur Ermöglichung von Drill-Funktionen
– 3 NF zur Minimierung von Redundanzen
– Star Schema als Grundlage für multidimensionale Abfragen
• Schon deshalb ist die pauschale Ersetzung eines relationalen Data
Warehouse ein unüberlegter Schritt
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
50
D a t e n
N e u e
Alle
Prozesse
Integration Layer
User View
Layer
Enterprise Layer
ETL
Core - DWH / Info Pool
Aktuelle Sichten
Alle
Unternehmensteile
Industrie 4.0
Log +
Produktions
Daten
D
Strategische Sichten
Offload
B e s t e h e n d e
D a t e n
Rolle von Hadoop in Data Warehouse Architekturen
Spezielle Schichten / Funktionen
Data Lake
Kosten/Nutzen-Relation bei der
Speicherung bestimmter Daten
passt oft nicht. Oft bleibt nur
der Verzicht auf die Daten, weil
es zu teuer ist.
Archive / ODS /
Skalierung
• Spezielle Datenarten
CDRs, Bondaten, Logdaten,
Click-Daten, Messwertdaten
• Archiv für alte Daten (ILM)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
D
F
D
F
• Große
Fakten-Tabellen
51
Anforderungen
• Durchgängige Verwendung von SQL
• Transparente Verwendung von HDSF durch
Anwender mittels SQL
• Übergreifendes Datenmodell
– beinhaltet Tabellen/Files im HDFS und in der
Datenbank
• „Hybride“ Tabellen
– Ein Teil einer Tabelle liegt in der DB, der weitaus
größere Teil im HDFS
SQL
Oracle 12c
Kunden
Produkt
Filiale
Verkauf
Zeit
Kampagne
komplett
Region
hybrid
Bons
• „Akzeptable“ Leseperformance
• Implementierung von HintergrundTransportläufen
In Memory
HDFS
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
offload
52
Offload der Daten
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Generelle Übersicht
Oracle Data
Integrator
(ODI)
Informatica
…
ETL/ELT tools
Batch loading
Stream loading
HDFS Put
Kite CLI
Distcp
Sqoop
WebHDFS
HttpFS
Kafka
Flume
GoldenGate
Die Technologien
können durch ETLTools angesprochen
werden, um die
Entwicklung zu
vereinfachen
Core technologies
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
55
Verwendung des Hadoop Client für den Ladevorgang
Source Server
Advantages:
Client
Big Data Appliance
HDFS Put issued
from Hadoop Client on
SRC server
HDFS nodes
• Direktes HDFS Schreiben ohne
Stage-Dateien im Linux-System
• Leichtes Skalieren:
– Mehrere “concurrent” puts für mehrere Dateien
– HDFS schreibt gleichzeitig auf mehrere Target-Server (schneller)
Nachteile:
- Eine Datei kann nur in einem Thread geschrieben werden. Performance
ist dadurch eingeschränkt.
- Zusätzliche Hadoop Client Software auf dem Source-Server
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Linux FS
HDFS
56
Laden über WebHDFS oder HttpFS
Auf der
Client-Seite
wird über
curl
gearbeitet
Big Data Appliance
Source Server
HDFS nodes
Kein
Hadoop
Client
Vorteile:
- Performance vergleichbar mit Hadoop Client
- Keine zusätzliche Software auf dem Client
Disadvantages:
- komplexe Syntax (verglichen mit Hadoop Client)
- Ein Knoten fungiert als Gateway-Knoten und wird im
Vergleich zu den anderen stärker belastet
Linux FS
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HDFS
57
Beispiele für das Laden mit WebHDFS und HttpFS
Auf der
Client-Seite
wird über
curl
gearbeitet
Big Data Appliance
Source Server
HDFS nodes
Kein
Hadoop
Client
Beispiel für HttpFS:
curl -i -X PUT -L -H 'Content-Type:application/octet-stream'
"http://scaj43bda03:14000/webhdfs/v1/tmp/test1?op=CREATE&user.n
ame=root" -T test1;
Beispiel für WebHDFS:
curl -i -X PUT -L
"http://scaj43bda02:50070/webhdfs/v1/tmp/test1?op=CREATE&user.n
ame=root" -T test1
Analog zu diesem HDFS Client-Beispiel:
hadoop fs -put test1 hdfs://scaj43bda02:8020/tmp/test1
Linux FS
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HDFS
58
Die beiden Verfahren im Vergleich
HttpFS
WebHDFS
Der wichtigste Unterschied zwischen diesen Varianten ist der, dass WebHDSF alle Knoten gleichzeitig anspricht,
während HttpFS einen einzelnen Knoten als eine Art Gateway anspricht.
HttpFS kann auch aus anderen Umgebungen (z. B. R oder Perl) heraus leicht angesprochen werden.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
59
Daten aus der Oracle Datenbank in das HDFS laden
• Zwei Optionen
1. Scoop
•
•
Open Source
Standort ist der Hadoop-Cluster
2. Copy2Hadoop
1.
2.
3.
Oracle Tool
Standort ist die Oracle-Datenbank
Verwendung von Datapump und External Tables
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
60
Sqoop. Entladen von Datenbank-Tabellen
• Erzeugt eine MapReduce-Job
• Export und Import für alle
JDBC-fähigen Datenbanken
• Parallelisierbar über die Anzahl Mapper
– Jeder Mapper startet eine Datenbank-Session über JDBC
• Erstellt alle File-Typen (CSV, Parquet, ORC)
und Hive-Tabellen
• Oracle unterstützt scoop mit einem speziellen
Data Connector (OraOop)
• Generiert Metadaten für Hive aus
relationalen DB-Tabellen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
scoop – Entladen von Datenbank-Tabellen
• Export und Import für alle JDBC-fähigen Datenbanken
• Arbeitet als Map Reduce-Job
• Parallelisierbar über die Anzahl Mapper
– Jeder Mapper startet eine Datenbank-Session
• Erstellt alle File-Typen (CSV, Parquet, ORC) und Hive-Tabellen
• Oracle unterstützt scoop mit einem speziellen Data Connector (OraOop)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
62
Scoop-Beispiel
$
>
>
>
>
sqoop import -D mapred.job.name='default oraoop'
--direct --connect jdbc:oracle:thin:@21.108.5.88:1521:dbm088
--username dwh --password dwh --table F_UMSATZ
\
--as-textfile --delete-target-dir
--target-dir /user/sqoop_output/f_umsatz -m 100 -z
\
\
\
Das Beispiel
- Liest aus dem DB-Schema ‚dwh‘
- Schreibt die Textdatei mit dem Namen f_umsatz
in das Verzeichnis /user/scoop_output
– Es werden 100 Mapper genutzt
– Die Zieldaten ist komprimiert
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
63
Komprimierung und scoop-Ladelaufzeiten
• Die Ladelaufzeit kann
über die Art der
Komprimierung
mitbestimmt werden
• Relevant ist die
Komprimierung sowohl
auf dem DB- als auf dem
Hadoop-Server
• Die nebenstehenden
Daten wurden auf einem
Quarter-Rack Exadata
und einem Starter-Rack
BDA erzielt.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
64
Copy2Hadoop
• Copy2Hadoop schreibt über eine External Table in ein Datapump-File, das
auf dem Hadoop-Cluster liegt
• Das Datapump-File kann:
– Über eine External Table gelesen werden (Big Data SQL) und
– über Hive (über eine von Oracle mitgelieferte Hive SerDe-Library)
• Die Daten sind zusätzlich komprimierbar
• Alle Oracle-Datenbanktypen werden unterstützt
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
65
Copy2Hadoop-Beispiel
SQL>
create or replace directory COPY2HADOOP as '/u01/app/oracle/acfsdata/copy2hadoop';
SQL>
CREATE TABLE EX_F_UMSATZ_DP
ORGANIZATION EXTERNAL (
TYPE oracle_datapump
DEFAULT DIRECTORY COPY2HADOOP
LOCATION ('filename1.dmp','filename2.dmp',
……..
'filename128.dmp'
)
) PARALLEL 128
AS SELECT /*+ PARALLEL(F_UMSATZ, 128,2)*/ * FROM F_UMSATZ;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
66
Verteilung der Last über die RAC-Cluster-Knoten
• Zur Verbesserung der Ladeperformance werden die Datenbank-Cluster-Knoten an die
jeweiligen Hadoop-Cluster-Knoten verbunden
Auf Knoten 1,3,5 $ mount exadatanode01: /u01/app/oracle/acfsdata/copy2hadoop /mnt/copy2hadoop
Auf Knoten 2,4,6 $ mount exadatanode02: /u01/app/oracle/acfsdata/copy2hadoop /mnt/copy2hadoop
Und anschließend werden die Daten in das HDFS kopiert
$ hadoop distcp file:///mnt/copy2hadoop hdfs://cluster-ns/user/oracle/table
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
67
Lesen und
Kombinieren von Hadoop-/DB-Daten
Big Data SQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Big Data Management System
Umfangreiche SQL Zugriffe auf alle Unternehmensdaten
NoSQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
69
Was bedeuten einheitliche Abfragen?
Vorher
PhD
Data Science
Nachher
Anyone
???
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Was bedeuten einheitliche Abfragen?
Vorher
Application Development Nachher
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQL: A New Hadoop Processing Engine
Processing Layer
MapReduce
and Hive
Spark
Impala
Big Data
Search
SQL
Resource Management (YARN, cgroups)
Storage Layer
Filesystem (HDFS)
NoSQL Databases
(Oracle NoSQL DB, Hbase)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
72
SQL-on-Hadoop Engines teilen Metadaten, nicht MapReduce
Hive Metastore
Oracle Big Data SQL
SparkSQL
Hive
Hive Metastore
Impala
…
Table Definitions:
movieapp_log_json
Tweets
avro_log
Metastore maps DDL to Java access classes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted
73
Ablaufverfahren von Big Data SQL beim Lesen von Daten in
den Storage-Zellen
Smart Scan
I/O Stream
Data Transfer
Apply
Convert to
Smart Scan and
Oracle “block”
other optimizations
format
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
74
Oracle Big Data SQL
SQL Abfragen in der Oracle DB für Hadoop & Oracle NoSQL, HBase
Oracle Database
Storage Server
Any
Hardware
Cluster
System
Cloudera
Hadoop
Horton
Works
Hive metadata
HDFS
Name Node
HDFS
Data Node
HDFS
Data Node
Big Data SQL
All Daten mittels Oracle
SQL zugreifen
Smart Scan Funktionalität
auf Hadoop zur
Optimierung des Zugriffs
Oracle Catalog
Hive metadata
External Table
External Table
create table customer_address
( ca_customer_id
number(10,0)
, ca_street_number char(10)
, ca_state
char(2)
, ca_zip
char(10))
organization external (
TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(com.oracle.bigdata.cluster hadoop_cl_1)
LOCATION ('hive://customer_address')
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
)
Oracle
Database
12c
RAC
Cluster
Big Data SQL Agent
10110010
Big Data SQL Dataflow
1
Lesen der Data vom HDFS Data Node
2
Überführen der Bytes in
Oracle-Format
3
Anwenden des Smart Scan-Verfahrens
auf Oracle-verstehbaren Byte-Strom
3
• Direct-path reads
• C-based readers wenn möglich
• Ansonsten nutzen von nativen
Hadoop Klassen
External Table Services
1011001
0
Smart Scan
2
RecordReader
Data Node
Disks
1011001
0
SerDe
1
•
•
•
•
•
•
Apply filters / Bloom Filter
Storage Indexe
Project Columns
Parse JSON/XML
Score models
Column Cache
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Erweitern der Oracle External Table-Mechanik
CREATE TABLE movielog (
click VARCHAR2(4000))
ORGANIZATION EXTERNAL (
TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(
com.oracle.bigdata.tablename logs
com.oracle.bigdata.cluster mycluster
))
REJECT LIMIT UNLIMITED;
• Neue External Tables - Typen
– ORACLE_HIVE (erhält Metadaten von Hive)
– ORACLE_HDFS (Metadaten werden in der
Definition mitgegeben)
• Zugriffs-Parameter für die “Fundstellen” auf
der Big Data-Maschine
– Hadoop cluster (-Name)
– Remote Hive database/table (-Name)
• Ein DBMS_HADOOP Package kann für die DDL-Erstellung
und den automatischen Import der Informatinen aus
Hadoop genutzt werden.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
78
SELECT NAME FROM
v$sqlfn_metadata WHERE
offloadable ='YES'
Welche Funktionen sind „offloadable“
!=
<
<=
=
>
>=
ABS
ACOS
ADD_MONTHS
ADJ_DATE
ASCII
ASCIISTR
ASIN
ATAN
ATAN2
BIN_TO_NUM
BITAND
CAST
CEIL
CHARTOROWID
CHR
CLUSTER_ID
CLUSTER_PROBABILITY
COALESCE
COMPOSE
CONCAT
CONVERT
COS
COSH
CSCONVERT
DECODE
DECOMPOSE
DUMP
EXISTSNODE
EXP
EXTRACTVALUE
FEATURE_ID
FEATURE_VALUE
FLOOR
FROM_TZ
GREATEST
GROUPING
HEXTORAW
INITCAP
INSTR
INSTR2
INSTR4
INSTRB
INSTRC
JSON
JSON_EXISTS
JSON_QUERY
JSON_VALUE
LAST_DAY
LEAST
LENGTH
LENGTH2
LENGTH4
LENGTHB
LENGTHC
LN
LNNVL
LOG
LOWER
LPAD
LTRIM
MAX
MIN
MOD
MONTHS_BETWEEN
NANVL
NCHR
NEW_TIME
NEXT_DAY
NLSSORT
NLS_CHARSET_ID
NLS_CHARSET_NAME
NLS_INITCAP
NLS_LOWER
NLS_UPPER
NUMTODSINTERVAL
NUMTOYMINTERVAL
NVL
NVL2
ORA_CLUSTERING
ORA_HASH
ORA_RAWCOMPARE
ORA_RAWCONCAT
POWER
PREDICTION
PREDICTION_COST
PREDICTION_PROBABILITY
RAWTOHEX
RAWTONHEX
REGEXP_COUNT
REGEXP_INSTR
REGEXP_REPLACE
REGEXP_SUBSTR
SREMAINDER
REPLACE
REVERSE
ROUND
ROWIDTOCHAR
ROWIDTONCHAR
RPAD
RTRIM
SESSIONTIMEZONE
SIGN
SIN
INH
SOUNDEX
SQRT
SUBSTR
SUBSTR2
SUBSTR4
SUBSTRB
SUBSTRC
TAN
TANH
TO_BINARY_DOUBLE
TO_BINARY_FLOAT
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
TO_CHAR
TO_DATE
TO_DSINTERVAL
TO_MULTI_BYTE
TO_NCHAR
TO_NUMBER
TO_SINGLE_BYTE
TO_TIME
TO_TIMESTAMP
TO_TIMESTAMP_TZ
TO_TIME_TZ
TO_YMINTERVAL
TRANSLATE
TRIM
TRUNC
TZ_OFFSET
UNISTR
UPPER
VSIZE
Optimierungspotenzial
• Schreiben von komprimierten Daten im HDFS (Weniger IO)
• Parallelisierung von Schreib- und Lesezugriffen
• Partitionieren von HDFS-Daten (Partition Pruning)
• Verwenden von Parquet- / ORC- File-Format
• Dynamic Indexing
• Push Down Functions (Smart Scan)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
80
Optimierung Big Data SQL 1.0 (Mai 2014) bis 3.0 (April 2016)
• Automatisches Parallelisieren
• SQL Monitor-Integration
• Automatische Hadoop Storage Indexierung
(Performance-Optimierung 4-18 fach)
• Bloomfilter (Reduzierung Datenmenge bei Join-Bildung
• Hive-Partition-Elimination
• IO-Elimination für Parquet und ORC files
• Columnar Cache (analog Exadata Flash Cache)
• Ab Januar 2016 Wegfall von Exadata als Voraussetzung
• Ab Sommer 2016 Wegfall von BDA als Voraussetzung
Copyright © 2014 Oracle and/or its affiliates. All rights reserved.Oracle
|
Confidential – Internal/Restricted/Highly Restricted
81
Mapping Hadoop auf Oracle
Parallel Query und Hadoop
1
Ermitteln der Hadoop Parallelisierung
• Ermitteln “schema-for-read”
• Ermitteln InputSplits
• Arrangieren der Splits für beste
Performance
2
HDFS
NameNode
1
PX
Mappen auf Oracle Parallelisierung
• Mappen der Splits auf “Granules”
• Zuordnen der Granules zu den PX Servern
2
Hive Metastore
InputSplits
B B B
3
PX Server Aktionen
•
•
•
•
Offload zu den Big Data SQL Servern
Aggregationen / Zusammenfassen
Join
Anwenden PL/SQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Unterschiedliche DoPs
Parallel Query und Hadoop
- Festlegung Database DoP über Hints + Parallel degree policy
- Parallelisierung kann von dem Anwender beeinflusst
werden (Hint +Parallel degree policy)
- Viele unterschliedliche Aktionen sind parallelisierbar (inkl. PL/SQLs)
- Intgerne Parallelisierung auf Zellenebene.
Kann nicht ohne “underscore”-Parameter modifiziert werden
- Wird während der Installation berechnet und dann festgeschrieben
Die Parallelsierung auf der Hadoop-Seite findet jederzeit statt!
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Mapping Hadoop and Oracle Parallelisierung
• Abfragen mit einem hohen
Offloadable-Anteil
profitieren von der HadoopParallelisierung
• Abfragen mit einem geringen
Offloadable-Anteil
sollten auf der Datenbankseite eine
höhere
Parallelisierung erfahren
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Big Data SQL Storage Index
HDFS
Field1, Field2, Field3, … , Fieldn
1001
1010
1045
1109
1043
1001
1045
1609
1043
11455
1909
12430
13010
10450
1909
2043
HDFS
Block1
(256MB)
Beispiel:
Finde alle ratings der
Filme mit der
MOVIE_ID of 1109
Index
HDFS
Block2
(256MB)
B1 – Movie_ID
Min: 1001
Max: 1609
B2 – Movie_ID
Min: 1909
Max: 13010
•
Storage index ermöglicht schnellere
Abfragen durch eine transparente
IO Eliminierung auf HDFS Blöck
•
Die Spalten der SQL-Abfrage
werden auf die Felder der HDFS
Datei mit Hilfe der External Table
Definition übertragen.
•
Min / max Werte für die in einem
Block liegenden Spalten werden
automatisch im Storage Index
vermerkt.
✓
✗
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
85
Storage Index berücksichtigt
• Equality (=)
• Inequality (<, !=, or >)
• Less than or equal (<=)
• Greater than or equal (>=)
• IS NULL
• IS NOT NULL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
86
Big Data SQL Storage Index
Bemerkungen zu SI
• Nur möglich für External Tables vom Typ ORACLE_HDFS und ORACLE_HIVE
• Der SI baut sich beim erstmaligen Lesen auf HDFS-Daten erst auf. D. h. erst der zweite Lesevorgang
profitiert von der verbesserten Perfromance.
• Indexe für bis zu 32 Columns pro External Table
• Es können aber mehrere External Tables auf eine HDFS Datei definiert werden. Damit sind auch weitere
Storage Index definierbar.
• SI auf External Tables mit Storage Handler für Hbase und noSQL Datenbank wird nicht unterstützt
• SI sind immer lokal auf einem Hadoop Knoten definiert. Liegen abgefragte daten auf einem anderen
Knoten, für den es noch keinen SI gibt, dann muss dieser erst aufgebaut werden.
• SI werden automatisch ungültig, wenn sich die, zu lessened Datei zur Laufzeit ändert
• SI arbeiten auf allen Datentypen (numeric, character und date)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
87
Bloom Filter
Relativ kleine
DimensionsTabelle (dim)
select …
from dim, fact
where
dim.col1=fact.col1
Erstellung eines Bloom-Filter-Objektes
mit den Werten der kleinen Tabelle.
111
123456789012
Transport auf die
Hadoop-Seite
Große Fakten
Tabelle (fact)
Filtern der großen Fakten-Tabelle
mit Hilfe des Bloom-Objektes
Reduzierung der Datemenge, die an
die Datenbank zurückgeliefert werden muss
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Bloom filter: Beispiel
SELECT /*+ PARALLEL(8)*/
MIN(w1.WR_RETURNED_DATE_SK),
MIN(w2.wr_return_ship_cost)
FROM web_returns w1,
web_returns_mini w2
WHERE
w1.wr_account_credit = w2.wr_account_credit
Bloom Filter eliminieren 94% der weiterhin
zu bearbeitenden Daten
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Beispiel Anwendung Bloom-Filter und tatsächliche
übertragene Datenmenge
SQL> SELECT n.name,
round(s.value/1024/1024/1024)
FROM v$mystat s, v$statname n
WHERE s.statistic# IN (462,463)
AND s.statistic# = n.statistic#;
10 GB
229 GB
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
90
Bloom filter. Zusammenfassung
1) In normalen Fällen finden Join-Operationen auf
der Datenbank-Seite statt
2) Aber nicht, wenn Bloom Filter eingesetzt werden. Hier wird die JoinFilterung auf die Hadoop-Knoten verlagert.
3) Bloom Filters reduzieren die zur Datenbank zurückgeschickten
Datenenmenge extrem.
4) Column und Row reduzieren noch zusätzlich die Datenmenge
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
DB-Dictionary-Views: Aus der DB heraus in Hive orientieren
SELECT cluster_id, database_name, owner, table_name, partitioned FROM all_hive_tables;
bda3000
bda3000
bda3000
bda3000
bda3000
default
default
default
default
default
admin
admin
oracle
oracle
oracle
sample_07
sample_08
sensor
sessions
sql_text
UN-PARTITIONED
UN-PARTITIONED
UN-PARTITIONED
UN-PARTITIONED
UN-PARTITIONED
DBA_HIVE_TABLES
ALL_HIVE_TABLES
DBA_HIVE_COLUMNS
ALL_HIVE_COLUMNS
DBA_HIVE_DATABASES
ALL_HIVE_DATABASES
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
92
Offload Szenario: Messwerte + Erfahrungen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Szenario-Umgebung
Exadata Quarter Rack
Big Data Appliance Starter Rack (6 Cluster Knoten)
Infiniband
Oracle 12c
Database
Pro Cluster-Knoten
2 x 22 Core (2.2GHz) Intel ® Xeon ® E5 2699 v4
8 x 32 GB DDR4 2400 Memory
12 x 8 TB 7,200 RPM High Capacity SAS Drives
2 x QDR 40Gb/sec InfiniBand Ports
4 x 10 Gb Ethernet Ports
1 x ILOM Ethernet Port
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
94
Das Demo-Star Schema
D_ARTIKEL
D_ZEIT
DATUM_ID
TAG_DES_MONATS
TAG_DES_JAHRES
WOCHE_DES_JAHRES
MONATS_NUMMER
MONAT_DESC
QUARTALS_NUMMER
JAHR_NUMMER
ZEIT_ID
PK
D_REGION
REGION_ID
PK
ORTNR
ORT
KREISNR
KREIS LANDNR
LAND
REGIONNR
REGION
D_VERTRIEBSKANAL
PK
KANAL_ID
VERTRIEBSKANAL
KANALBESCHREIBUNG
VERANTWORTLICH
KLASSE
ARTIKEL_NAME
GRUPPE_NR
GRUPPE_NAME
SPARTE_NAME
SPARTE_NR
ARTIKEL_ID
F_UMSATZ
ARTIKEL_ID
KUNDEN_ID
ZEIT_ID
REGION_ID
FK
KANAL_ID
FK
UMSATZ
FK
MENGE
FK
UMSATZ_GESAMT
FK
UMSATZ_GESAMT
VERTRIEBS_KZ
STEUER
VERPACKUNGSART
HANDELSKLASSE
KOMMISSIONSWARE
LAGERWARE
BESCHREIBUNG
LIEFER_DATUM
RECHNUNGS_DATUM
ZAHLUNGS_ZIEL
D_KUNDE
PK
KUNDEN_ID
KUNDENNR
GESCHLECHT
VORNAME
NACHNAME
TITEL
ANREDE
GEBDAT
BRANCHE
WOHNART
KUNDENART
BILDUNG
ANZ_KINDER
EINKOMMENSGRUPPE
ORTNR NUMBER,
BERUFSGRUPPE
STATUS
STRASSE
TELEFON
TELEFAX
KONTAKTPERSON
FIRMENRABATT
BERUFSGRUPPEN_NR
BILDUNGS_NR
EINKOMMENS_NR
WOHNART_NR
HAUSNUMMER
PLZ
ORT
KUNDENKARTE
ZAHLUNGSZIEL_TAGE
TOTAL
TOTAL_NR
• Faktentabelle
• Nach Zeit partitioniert
• 100 / 200 /400 / 800
Millionen Sätze
• Komprimiert
• Bitmap-indiziert
• alter table f_umsatz parallel 12
• Dimensionen bleiben auf der ExdataMaschine
• Abfragen auf der Exadata-Maschine
und analog BDA
• Unterschiedlich komplexe
SQL-Abfragen
• Daten-Transport mit Scoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Die Größenverhältnisse in der Datenbank und im HDFS
Größenangaben in GB
Oracle DB
HDFS
Faktor 1
Anz
Sätze
Faktor 3
CSV-File
Parquet File
CSV-File
Parquet
File
(Mill.)
Unkomp.
Query
low
Unkomp.
Komp.
Unkomp. Komp.
102
15,5
6.1
19,490
6,624
7,15
58,471
19, 0
21,47
205
46,6
19,2
39
13,2
14,25
117
39,7
44,32
409
73
46,6
77,96
26,39
28,49
214,7
73,16
78,53
818
124,3
63,4
155,9
54,12
58,61
467,8
162,39
175,94
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ersetzung Faktentabelle durch HDFS-Datei
Exadata
BDA
Hive
HDFS
F_UMSATZ
Hive
External
Table
F_UMSATZ
F_UMSATZ
3
Metadatenabruf
F_Umsatz
5
Big Data SQL
4
F_UMSATZ
2
External
Table
Scoop
1
Ursprüngliche Fakten-Tabelle
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
97
Die Vorgehensweise
1. Scoop auf die Fakten-Tabelle mit den entsprechenden Eintragungen
– Target-Directory / Eintrag in Hive / File-Type
2. Automatische Redistribution des neu erstellten Files durch HDFS
3. Eintrag der Metadaten im Hive-Metastore
– Wird bereits durch den Scoop-Job automatisch erledigt
4. Erstellen einer External Table in der Datenbank für späteres SQL
– Hier hilft das Package „dbms_hadoop.create_extddl_for_hive“
5. Big Data SQL Aufruf / SQL - Abfragen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
98
Das Scoop
Ladeszenario
Records
102
Millionen
205
Millionen
409
Millionen
818
Millionen
$
>
>
>
>
sqoop import -D mapred.job.name='default oraoop'
--direct --connect jdbc:oracle:thin:@21.108.5.88:1521:dbm088
--username dwh --password dwh --table F_UMSATZ
\
--as-textfile --delete-target-dir
--target-dir /user/sqoop_output/f_umsatz -m 100 -z
Parallelität
Default
(Parallel 4)
Parallel 100
Übertragene Datenmenge
\
\
\
Transferred 18.1519 GB in 235 seconds (78.7637 MB/sec) Retrieved 102400000 records.
Minuten
3,9
Transferred 18.1519 GB in 132 seconds (136.2002 MB/sec) Retrieved 102400000 records.
2,2
Parallel 150
Transferred 18.1519 GB in 108 seconds (166.3302 MB/sec) Retrieved 102400000 records.
1,8
Parallel 200
komprimiert
Transferred 6.1696 GB in 66 seconds (93.385 MB/sec) Retrieved 102400000 records.
1,1
Parallel 200
komprimiert
Parallel 200
Transferred 36.3469 GB in 355 seconds (101.6502 MB/sec) Retrieved 205043477 records
5,9
Transferred 12.3264 GB in 138 seconds (91.442 MB/sec) Retrieved 204800000 records.
2,3
Parallel 100
Transferred 72.6075 GB in 536 seconds (135.4587 MB/sec) Retrieved 409600000 records.
8,9
Parallel 100
Transferred 151.3408 GB in 1083 seconds (139.7421 MB/sec) Retrieved 819200000 records.
18,05
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
99
Die neue Datei im HDFS
[oracle@psbda3001 ~]$ hadoop fs -ls /user/sqoop_output/f_umsatz
Found 151 items
-rw-r--r-3 oracle supergroup
0 2016-08-16 10:18 /user/sqoop_output/f_umsatz/_SUCCESS
-rw-r--r-3 oracle supergroup 567820919 2016-08-16 10:13 /user/sqoop_output/f_umsatz/part-m-00000
-rw-r--r-3 oracle supergroup 744483553 2016-08-16 10:17 /user/sqoop_output/f_umsatz/part-m-00001
-rw-r--r-3 oracle supergroup 682022679 2016-08-16 10:16 /user/sqoop_output/f_umsatz/part-m-00002
-rw-r--r-3 oracle supergroup 683706240 2016-08-16 10:15 /user/sqoop_output/f_umsatz/part-m-00003
-rw-r--r-3 oracle supergroup 682981818 2016-08-16 10:17 /user/sqoop_output/f_umsatz/part-m-00004
-rw-r--r-3 oracle supergroup 681207773 2016-08-16 10:14 /user/sqoop_output/f_umsatz/part-m-00005
~~~~~~~~~~~~~~~~~
rw-r--r-3 oracle supergroup 373856531 2016-08-16 10:14 /user/sqoop_output/f_umsatz/part-m-00145
-rw-r--r-3 oracle supergroup 373863892 2016-08-16 10:15 /user/sqoop_output/f_umsatz/part-m-00146
-rw-r--r-3 oracle supergroup 373851258 2016-08-16 10:16 /user/sqoop_output/f_umsatz/part-m-00147
-rw-r--r-3 oracle supergroup 373858047 2016-08-16 10:15 /user/sqoop_output/f_umsatz/part-m-00148
-rw-r--r-3 oracle supergroup 373857938 2016-08-16 10:13 /user/sqoop_output/f_umsatz/part-m-00149
hadoop fs -cat /user/sqoop_output/f_umsatz/part-m-00001| head -n 5
10,124,2016-07-17 00:00:00.0,3173,6,1126,76,85576,FFJAJHMMUL,16259,kkdk,bbx,zzz,aaa,AFTOMAHLEBXATTGCYBAOIMHLINSYROBAOQUJVNUW,2016-07-22 00:00:00.0,2016-07-25 00:00:00.0,2016-08-04 00:00:00.0
100,111,2017-07-17 00:00:00.0,5909,4,2169,79,171351,UAJUYAAVLN,32557,aaa,aaa,kkdk,bbx,MAFCKDTVSFUTPIYTVIAWEISUSPGXWABKAUOLJMMW,2017-07-21 00:00:00.0,2017-07-23 00:00:00.0,2017-08-02 00:00:00.0
114,553,2016-10-12 00:00:00.0,4108,6,1915,44,84260,PFDTAENBAS,16009,aaa,hdsh,ddk,aaa,EYENTIRHVBMASWXHGLIQOQDOJIGUGLSBFXDEVADV,2016-10-14 00:00:00.0,2016-10-18 00:00:00.0,2016-10-28 00:00:00.0
115,167,2016-02-02 00:00:00.0,2108,5,460,26,11960,OOXBGNQSMG,2272,bbx,bbb,aba,ooo,LPFXLFWIBOUBDURMEATAXNAKWPXUFUVBLKVJODHH,2016-02-06 00:00:00.0,2016-02-10 00:00:00.0,2016-02-20 00:00:00.0
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
100
Die Definition in Hive
CREATE EXTERNAL TABLE defAULT.F_UMSATZ_HDfs
( ARTIKEL_ID
int
,KUNDEN_ID
int
, ZEIT_ID
TIMEstamp
,REGION_ID
int
,KANAL_ID
int
,UMSATZ
int
,MENGE
int
,UMSATZ_GESAMT
int
,VERTRIEBS_KZ
string
,STEUER
DECIMAL(15,10)
,VERPACKUNGSART
string
,HANDELSKLASSE
string
,KOMMISSIONSWARE
string
,LAGERWARE
string
,BESCHREIBUNG
string
,LIEFER_DATUM
DATE
,RECHNUNGS_DATUM
DATE
,ZAHLUNGS_ZIEL
DATE
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE LOCATION '/user/sqoop_output/f_umsatz';
• Kann durch den Scoop – Job
automatisch erzeugt werden
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
101
Die External Table – Definition in der Datenbank
(wird generiert)
DECLARE
DDLout VARCHAR2(4000);
BEGIN
dbms_hadoop.create_extddl_for_hive(
CLUSTER_ID=>'bda3000',
DB_NAME=>'default',
HIVE_TABLE_NAME=>'ex_f_umsatz_parq',
HIVE_PARTITION=>FALSE,
TABLE_NAME=>'EX_F_UMSATZ_PARQ',
PERFORM_DDL=>FALSE,
TEXT_OF_DDL=>DDLout );
dbms_output.put_line(DDLout);
END;
/
CREATE TABLE BIGDATAREPO.EX_F_UMSATZ_PARQ (
artikel_id NUMBER,
kunden_id NUMBER,
zeit_id TIMESTAMP,
region_id NUMBER,
kanal_id NUMBER,
umsatz NUMBER,
menge NUMBER,
umsatz_gesamt NUMBER,
vertriebs_kz VARCHAR2(4000),
steuer number(15,10),
verpackungsart VARCHAR2(4000),
handelsklasse
VARCHAR2(4000),
kommissionsware VARCHAR2(4000),
lagerware VARCHAR2(4000),
beschreibung VARCHAR2(4000),
liefer_datum DATE,
rechnungs_datum DATE,
zahlungs_ziel DATE)
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(
com.oracle.bigdata.cluster=bda3000
com.oracle.bigdata.tablename=default.ex_f_umsatz_parq)
) PARALLEL 2 REJECT LIMIT UNLIMITED;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
102
Ausschnitt aus den Ergebnissen für die Abfragezeiten
select sum(u.umsatz) Umsatz,
z.Jahr_nummer Jahr
,z.Quartals_nummer Quartal,
RANK() OVER (PARTITION by z.Jahr_nummer ORDER
sum(U.umsatz) ASC ) AS Rangfolge
from
f_umsatz u,
d_zeit z
where
z.zeit_id = u.zeit_id and
z.Jahr_nummer between 2006 and 2011
group by z.Jahr_nummer,z.Quartals_nummer
order by z.Jahr_nummer,Rangfolge;
Anz. Sätze
102
204
408
819
BY
Nr
6
6
6
6
Kommentar
Rank + 2 Joins
DB-Tabelle
02.07
10.61
21.59
46.31
HDFS-Datei
03.15
12.26
10.63
14.11
Siehe separates Dokument mit allen Tests und Abfragezeiten
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
103
Ausschnitt aus den Ergebnissen für die Abfragezeiten
409 Millionen Sätze (Datenbank-Tabelle ist nicht mehr partitioniert)
1b
Abfrage Nr
Abfrage auf Partition
DB-Tabelle
55.33 Sek
HDFS-Datei
09.04 Sek
23.51 Sek
22.53 Sek
09.81 Sek
06.64 Sek
06:07.95 Min
18.08 Sek
05:52.68 Min
03:22.91 Min
21.59 Sek
23.82 Sek
01:20.16 Min
01:04.46 Min
33.01 Sek
24.24 Sek
01:24.13 Min
17.80 Sek
12.47 Sek
10.63 Sek
10.62 Sek
33.94Sek
29.02 Sek
16.59 Sek
07.56 Sek
11.00 Sek
Partitioning
1c
1c
Abfrage mit Zeitkriterium (Partitioning)
Abfrage ohne Zeitkriterium (Partitioning)
Höhere Anzahl Joins
2
Abfrage mit 5 Joins / Group / Order by
Höhere Anzahl Joins und Parallel 24
2
3
6
7
16
19
20
22
23
Abfrage mit 5 Joins / Group / Order by / 5 Filter
4 Joins + 2 Filter / Group by
Rank + 2 Joins
Rank und Subselect
Ranks / Group by / 2 Subselects
Mehrere Subselects
Ntile + geschachtelte Subselects
Cube
Vorjahresvergleich Lag
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
104
Zusammenfassung: Erfahrungen aus dem Offload-Szenario
• Als HDFS-Ersatz für Datenbank-Tabellen sollte ein passender File-Type z. B. Parket, AVRO oder ORC
gewählt werden. Dies wird zwar die Schreibperformance des Scoop-Jobs verschlechtern, aber Abfragen
sind performanter.
• Die Dateien sollten im HDFS partitioniert sein.
• Das Komprimieren der Daten in dem HDSF sorgt für weniger IO-Aufwand beim späteren Lesen.
• Parallel Query in der Datenbank nutzt nur für den Datenbank-Anteil der Abfrage. Bei sehr vielen OffloadFunktionen bringt das nicht viel.
• Der Storage-Index wird erst beim zweiten Lesevorgang seinen vollen Nutzen erzeugen.
• Joins zwischen sehr großen Objekten sollten eher vermieden werden. Joins zwischen sehr großen
Objekten und vielen kleinen Tabellen sind dagegen sehr performant.
• Bei Abfragen mit einem Partitionierungskriterium in der Where-Klausel kann ein Vergleich zwischen HDFS
und Oracle-Datenbank schnell zu Gunsten der Oracle Datenbank ausfallen. Fehlt dieses
Partitionierungskriterium, so ist HDFS schnell im Vorteil.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
105
Zusammenfassung: Erfahrungen Offloading Data
Warehouse
• Performance-Gewinn bei Abfragen auf größeren Tabellen im HDFS
– Z. B. ab 50 GB
• Offloading kann sich schon lohnen bei 10 – 20 großen Tabellen im Bereich
von 100 – 2000 GB (Rechenbasis 10 TB Datenvolumen)
• Know How-Anforderungen an MA sind überschaubar
– Viele Techniken aus der Linux-Welt bekannt
– SQL, External Tables ist bekannt
– Keine neue Programmiersprache
– Neu ist Umgang mit Scoop (-> Handbuch) und Hadoop-Denkweise (-> Cluster)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
106
Offloading optimaler Einsatz von Hadoop-Technik für das
Data Warehouse
• Datenmodelle und Schichtenstruktur im DATA WAREHOUSE bleiben gleich
• Die Art der Zugriffe für alle auf dem DATA WAREHOUSE arbeitenden
Anwendungen und Benutzer bleiben gleich
• Eingesetzte Abfragewerkzeuge, BI-Tools müssen nicht ausgetauscht werden
• Anwender müssen nicht umlernen.
• Es ist keine strategische Richtungsfestlegung für weitere Entwicklungen in
der IT des Unternehmens, d. h. man bleibt offen für künftige Entwicklungen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
107
Programmier- / Zugriffsumgebungen mit
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Processing Layer
MapReduce
and Hive
Spark
Impala
Search
Big Data
SQL
Resource Management (YARN, cgroups)
Storage Layer
Filesystem (HDFS)
NoSQL Databases
(Oracle NoSQL DB, Hbase)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Scala und Python: Favoriten bei Spark
http://spark.apache.org/docs/latest/quick-start.html
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
110
Exkurs Spark
[Separate Folien]
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
111
Python und R
http://blog.datacamp.com/wp-content/
uploads/2015/05/R-vs-Python-216-2.png
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
R das erste Mittel für Data Scientists
Hadoop/HDFS
Relational
NoSQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
113
Oracle R Enterprise
Skalierbare, parallele und verteilte predictive analytics Algorithmen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
114
Funktion Oracle R Advanced Analytics for Hadoop
Infrastruktur und Umgebungen
Predictive Analytics-Verfahren
• Apache Hive tables
• linear regression
• Apache Hadoop compute
infrastructure
• generalized linear models
• local R environment
• Oracle Database tables
• neural networks
• matrix completion using low rank
matrix factorization
• nonnegative matrix factorization
• k-means clustering
• principal components analysis
• multivariate analysis
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
115
HDFS API Funktionen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
116
ORAAH Analytische Funktionen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
117
R als mögliche Avanced Analytics Umgebung für alle Daten
R-Anweisungen
R-Anweisungen
hdfs. attach()
hdfs.tail()
hdfs.rm()
R-Memory
Advanced Analytics
+ Data Mining
ore.create()
ore.connect
ore.get() / ore.pull()
hdfs.put
Transparent
Layer
Transparent
Layer
hdfs.get
hdfs.pull
MetaStore
HDFS
orch.connect
hdfs.push
Oracle-DB
sqoop / olh
Big Data SQL
Hive
hdfs.upload
hdfs.download
Lokales File System
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
118
Trends von Sensorwerten mittels Zeitreihen analysieren
HDFS
1.78031203752519,
2.12379851339159,
2.9602419007726,
3.07831732752634,
2.90303003561048,
3.07831732752634,
2.90303003561048,
ORCH Connect
ORE
~
~
~,
6.57273811960308,
6.5780146585216,
2.99029219007726,
3.07831732752634,
2.90303003561048,
6.57273811960308,
6.5780146585216,
Big Data SQL
Oracle-DB
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
119
HDFS Basis Funktionen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
120
Zusammenspiel HDFS und R bzgl. Datei-Zugriff
Im HDFS
In R
[oracle@bigdatalite ~]$ hadoop fs -put d_kunde.csv /user/oracle
library(ORCH)
# Working Directory im HDFS anzeigen
hdfs.pwd()
# Die vorliegenden Files in dem Working
# Directory anzeigen
hdfs.ls()
# Die Files müssen in einem Directory liegen
# und dieses muss 'attached' werden
pt <- hdfs.attach('dk')
# jetzt liegt mit 'pt' eine Art Index für den eigenlichen
# Zugfriff vor
ptx <- hdfs.get(pt)
# 'ptx' ist jetzt das Objekt
names(ptx)
head(ptx)
fix(ptx)
[oracle@bigdatalite ~]$ hadoop fs -mkdir dk
[oracle@bigdatalite ~]$ hadoop fs -put d_kunde.csv /dk
[oracle@bigdatalite ~]$ hadoop fs -ls dk/
Found 1 items
-rw-r--r-- 1 oracle oracle 202182 2016-02-21 15:57 dk/d_kunde.csv
Jetzt gibt’s im HDFS
Metadaten zu der
Datei
[oracle@bigdatalite ~]$ hadoop fs -ls dk/
Found 2 items
-rw-r--r-- 1 oracle oracle
793 2016-02-21 16:25 dk/__ORCHMETA__
-rw-r--r-- 1 oracle oracle 202182 2016-02-21 15:57 dk/d_kunde.csv
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
121
ORAAH 2.x Features and enhancements
ORCH 2.0.0
• Analytic Functions
• Analytic Functions
– orch.lm
– orch.cor
– orch.lmf
– orch.cov
– orch.neural
– orch.kmeans
– orch.nmf
– orch.princomp
• Oracle Loader for Hadoop
(OLH) support
ORCH 2.2.0
ORCH 2.1.0
• Analytic Functions
–
– orch.sample – by percent
• CDH 4.2.0
• Configurable delimiters in text
input data files
• ORCHhive transparency layer
• Map-only & reduce-only jobs
• Keyless map/reduce output
• "Pristine" data mode for high
performance data access
• HDFS cache of metadata
• Hadoop Abstraction Layer (HAL)
orch.sample – by row count
• CDH 4.3.0
• Full online documentation
• Support integer and matrix data types in
hdfs.attach with detection of "pristine"
data
• Out-of-the-box support for "pristine" mode
for HPC I/O
• HDFS cache to improve interactive
performance when navigating HDFS
directories and file lists
• HDFS multi-file upload and download
performance enhancements
• HAL for Hortonworks Data Platform 1.2 and
Apache Hadoop 1.0.2
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ORAAH 2.x Features and enhancements
ORAAH 2.3.0
ORAAH 2.4.0
ORAAH 2.5
• orch.debug
• hadoop.exec
• Spark.connect
• hdfs.fromHive
• hadoop.run
• Spark.disconnect
• hdfs.toHive
• orch.datagen
(generiert Testdaten)
• Hdfs.toRDD
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Performance – Optimierung mit Pristine Mode
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
124
Hadoop/HDFS
Relational
Big Data SQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
125
R und Hive
• ore.connect(type=“HIVE“
• Ähnliches Arbeiten wie mit
der Oracle-Datenbank
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
126
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
127
Rechtzeitiges
Erkennen von
Störungen
in der
Produktion
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
128
Was zuviel ist, das ist zu viel…
Beispiel Maschinendaten
• Dieser Elektromotor war im
Betriebseinsatz überlastet und
es entstand ein sog „Schluss“
• Aufgrund der Hitze verschmorte die
Isolation in den Drahtspulen und es
gab einen Kurzschluss
• Jetzt muss er aufwendig von Hand
in einer sog. Ankerwickelei
repariert werden (Bild)
Wie erkennt man eine solche Überlastung bevor die Maschine Schaden nimmt?
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Wie erkennt man eine Überlastung?
• Drehzahl und Stromaufnahme
liefern Hinweise:
• Optimaler Drehzahlbereich
800 – 1050 UpM
• Opt. Stromaufnahme 1000-1550 Watt
• Wenn das gegeben ist, dann bleibt
die Betriebstemperatur i. d. R.
zwischen 100 – 255 Grad (ok)
• Aber wenn in der Anlage etwas
blockiert dann
• sinkt die Drehzahl und die
Stromaufnahme steigt
• als Folge steigt die Temperatur
Wann und in welcher Kombination
werden welche Grenzwerte überschritten?
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Die Sensoren für die aufzunehmenden Daten
Broadcom Inkremental Drehgeber,
Vierfach Ausgang, 12000U/min /
256 Impulse/
U, 4,5 → 5,5 V dc
Angebracht auf der Welle des
Elektromotors
Stromwandler bis 50 A,
Messgenauigkeit +/- 1%
Angebracht auf Stromzufuhrkabel des Elektormotors
Temperaturbereich
Tastkopf 0° - 1100°C
Eingebaut innerhalb des
Spulenkörpers des Motors
+ Nummer des produzierten Stücks und die Meßzeit in Sekunden
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Das Szenario zur Erfassung
der Daten
SQL Match_Recognize
(Mustererkennung)
Hive Create Table
Create External Table
HDFS
Big Data SQL
Big Data Appliance
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle 12c DB
Und das ist das Ziel
Drehzahl
SATZNR
499994
499995
499996
499997
499998
MESSZEITPUNKT
30.04.2008 11:04:55
30.04.2008 11:05:16
30.04.2008 11:05:37
30.04.2008 11:05:58
30.04.2008 11:06:18
Sensor_Daten
Strom
Temperatur
STUECKNR
5000
5000
5000
5000
5000
DREHZAHL
1031
991
1030
882
818
WATT TEMPERATUR
1094 139
1315 159
1284 205
1182 186
1406 204
Muster: Gemeinsames
Überschreiten von Grenzwerten
S-NR PAT SATZNR DREHZAHL WATT °C
8
1
720
1040 1547 252
46
1
4531
1021 1530 250
46
2
4534
1048 1548 247
63
1
6220
1033 1524 248
69
1
6882
1031 1514 252
105
1
10426
1040 1527 247
118
1
11728
1035 1528 249
145
1
14414
1047 1543 248
156
1
15504
1037 1535 248
160
1
15910
1032 1527 255
Pattern
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Die Messdaten im HDFS – Direktzugriff ins HDFS
Satznummer Messzeit Stücknummer Drehzahl Watt Temperatur
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hive Metastore Definition
Tabelle „sensor“
External Table Oracle 12c
„sensor“
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Beispielabfragen auf das
HDFS-System mit Big Data SQL
Abfrage über Standard – SQL-fähiges Werkzeug
(z. B. BI-Werkzeug oder wie hier SQL Developer)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Die Pattern-Abfrage
mit den Regeln
Regel A: Wenn Drehzahl steigt und Drehzahl > 1000
Regel B: Wenn Stromaufnahme steigt und > 1500
Regel C: Temperatur steigt und > 215°C
Ein gesuchtes Muster tritt ein, wenn
Alle 3 Regeln nacheinander erfüllt sind wobei
Regel 1 mehrfach auftreten darf
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Die gefundenen Muster entsprechend nach Zeit und mit der
Stuecknummer
HDFS-Abfrage auf 1,1 Millionen Messwerte
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Fast Processing und Data Lake – Gedanke
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Data Lake – das neue Zauberwort
Versprochene Vorteile
Verfahren
Effekte
• Mehr Agilität
• Daten schnell loswerden
„Schema-On-Read“
• Lösen des Latency-Problems
• Mehr Flexibilität
• Daten von überall her
an einer Stelle ablegen
• Lösen des „Silo-Problems“
• Daten für jedermann
offen bereitstellen
In broad terms, data lakes are marketed as enterprisewide data management platforms for analyzing
disparate sources of data in its native format,“ …
"The idea is simple: instead of placing data in a purpose-built data store, you move it into a data lake
in its original format. This eliminates the upfront costs of data ingestion,
like transformation. Once data is placed into the lake, it's available for analysis by everyone in the organization.“
(said Nick Heudecker, research director at Gartner)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
141
Herausforderungen Data Lake
• Keine konsistente Daten
–
–
–
–
Daten liegen „lose“ nebeneinander
Redundanzen?
Semantische Konsistenzbildung?
Beziehungen zwischen Daten aus verschiedenen
Bereichen?
• Fehlende Standard-Aufbereitung
• Daten nicht wirklich integriert
Anstatt verteilte Silos sind jetzt die
„Silos an zentraler Stelle“
• Performance von Tools
– Arbeiten mit Sample
– Kopien der Daten in Sandboxes
• Mehr technischen Support für
Fachmitarbeiter
– Einfache Formatierungen
– Einheitliche Formate für leichten Zugriff
• Security – Jeder kann zugreifen
• Erfahrungen: „Wer hat welche
Daten mit welchem Ergebnis bereits bearbeitet
– Neue Techniken und Tools
– Unzulänglichkeiten der neuen Technik
Fehler, und nicht erfüllte Erwartungen
(z. B. bezogen auf Performance und
Analyse-Funktionsumfang)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
142
Anforderungen an eine Data Lake Architektur
• Gute ausgebildete MA
– Versiert in den File Formaten, möglichen Datenstukturen (Datenmodellierung)
– Ausgebildet in mindestens einer der Sprachen R, Python, Scala
– Technisch versiert: Umgang mit Hadoop Infrastruktur
• Metadaten
– Herkunftsinformation
– Inhaltsbeschreibung
– Verwendungsinformation:
Wer hat wann mit welchem Ergebnis die Daten bereits analysiert?
• Robuste, Fehlertolerante Zugriffstechniken
• Performante Systeme
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
143
Kafka
• Ursprung LinkedIn -> Open Source Community
• Verteiltes Publish/Subscribe Messaging System
• Performance, Skalierung, Langlebigkeit von Prozessen
• Schreiben in und Lesen aus Topics
• Partitionierung und Replizierung über Cluster-Knoten
• Vorteile:
– Mehrere Publisher und Subscriber
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
144
Apache Flume
• Realtime-Verarbeiten von mehreren
Quellen nach HDFS und Hbase
– Streaming Data
– Events
• Agent-System
– Source (z. B. AVRO, Thrift…)
– Channel (Typen: JDBC,
File System, Memory…)
– Sink( ( HDFS, Hbase)
• Interceptor
(Verändern von Daten)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
145
Vordefinierten Flume- Komponenten
(Build-In Sources / Sinks)
Source
Avro Source
Thrift Source
Exec Source
JMS Source
Spooling
Directory Source
Twitter 1%
firehose Source
Kafka Source
NetCat Source
Sequence
Generator Source
Channel
Syslog Sources
Syslog TCP Source
Multiport
Syslog TCP Source
Syslog UDP Source
HTTP Source
Stress Source
Legacy Sources
Thrift Legacy Source
Custom Source
Scribe Source
Memory Channel
JDBC Channel
Kafka Channel
File Channel
Spillable Memory
Channel
Pseudo Transaction
Channel
Sink
HDFS Sink
Hive Sink
Logger Sink
Avro Sink
Thrift Sink
IRC Sink
File Roll Sink
Null Sink
HBaseSink
AsyncHBaseSink
MorphlineSolrSink
ElasticSearchSink
Kite Dataset Sink
Kafka Sink
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
146
Vergleich der beiden Verfahren
Kafka
Flume
• Die mehr generelle Lösung
• Eine Reihe vorgefertigter Sourcen /
Senken / Kanäle
• Einsetzbar wenn mehrere Ziele
angesprochen werden sollen
• Spezialisiert auf HDFS und Hbase
– Bei eigen programmierten Lösungen
– Z. B. bezogen auf Security
– Sinnvoll, wenn vordefinierte Komponenten
eingesetzt werden sollen
• Benötigt externe Prozesse zur Filterung
• Interceptors für Maskierung oder
Filterung von Daten
• Hohe Verfügbarkeit auch bei
Systemausfall
• Verlust von Nachrichten bei Systemausfall
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
147
Realtime Loading / Data Lake
• Viele gleichzeitige Source-Events
– Tausende von Messages
• Geographische Verteilung der Impulsgeber
• Öffnen / Schließen HDFS-Files / Append-Funktion der Tools
• Partitionierung der Daten / Einteilung in „Berichtsperioden“
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
148
Szenario Realtime Loading / Data Lake
IOT Cloud Service
(+Stream Analytics)
JSON
Rest-Endpunkt
Generischer
Access-Punkt
Hive
Metastore
BDD
Visualizer
Erste
Analysen
Flume
Vorsortierung
und
Anreicherung
mit
MaschinenStammdaten
aus der Cloud
Kafka
HDFS / BDA / Data Lake
Parquet
AVRO
ORCH
Standard
Interface
SparkQL
Metadaten
Big Data SQL
ORE
Weltweit verteilte Industrieanlangen
100– 1000 Sensor-Punkte
z.B. Temperatur, Drehzahl, Drehmomente…
Big Data SQL
Pattern
matching
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
Beliebige
BI-Tools
149
Szenario Realtime Loading / Data Lake
• Geographische Verteilung der potenziellen Sourcen (Industrie-Anlagen)
– Unabhängig von eigener IT-Infrastruktur vor Ort Daten (Messwerte) erfassten können
– Transport über eine Cloud-Lösung zum zentralen Data Lake
– Anreicherung der Sensor-Daten durch Stammdaten in der Cloud
• Generische Schnittstelle durch REST/Kafka mit sehr vielen gleichzeitigen
Source-Event-Gebern
• Flume als Standard-Messaging-Utility für HDFS
• AVRO für stark variable Strukturen der Input-Daten
• SparkQL zur Metadaten-Dokumentation und Input für Hive
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
150
Data Warehouse oder/und Data Lake?
Data Lake
1
2
3
Data Warehouse
Vielfalt an internen und
externen Daten + Formaten
Schnelligkeit
Erklärende
Mehrwerte
bei der Bereitstellung
Kostengünstige
Historisierung
Skalierung
+
1
2
3
4
Semantische,
unternehmensweite
Konsolidierung
Aufbau
Erklärende
von Referenzen
Mehrwerte und
Metadaten
Historisierung
Historisierung
Analyse-unterstützende
Entkopplung von
Modelle
op. Systemen
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted
151
D a t e n
N e u e
Alle
Prozesse
Integration Layer
User View
Layer
Enterprise Layer
ETL
Core - DWH / Info Pool
Aktuelle Sichten
Alle
Unternehmensteile
Industrie 4.0
Log +
Produktions
Daten
Strategische Sichten
Offload
B e s t e h e n d e
D a t e n
Hadoop in Data Warehouse Architekturen
Data Lake
Kosten/Nutzen-Relation bei der
Speicherung bestimmter Daten
passt oft nicht. Oft bleibt nur
der Verzicht auf die Daten, weil
es zu teuer ist.
Archive / ODS /
Skalierung
• Spezielle Datenarten
CDRs, Bondaten, Logdaten,
Click-Daten, Messwertdaten
• Archiv für alte Daten (ILM)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
D
D
D
F
• Große
Fakten-Tabellen
152
Herunterladen