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