Seite 1Gunther Pippèrr © 2014 http://www.pipperr.de
ORACLE UND HADOOP
Zusammen ein Team?
Konferenz – Nürnberg 2014
NoSQL V...
Seite 2Gunther Pippèrr © 2014 http://www.pipperr.de
Warum nun Big DATA
Was treibt uns an?
Neue Lösungen für alte Probleme?
Seite 3Gunther Pippèrr © 2014 http://www.pipperr.de
Datenqualität und -Stabilität
Daten
Sammeln
Daten
Archivieren
Daten
au...
Seite 4Gunther Pippèrr © 2014 http://www.pipperr.de
Datenwachstum und Performance
Daten
Sammeln
Daten
Archivieren
Daten
au...
Seite 5Gunther Pippèrr © 2014 http://www.pipperr.de
Warum Hadoop?
Ein neuer Standard oder nur ein neuer
Hype?
Seite 6Gunther Pippèrr © 2014 http://www.pipperr.de
File System und Batch Prozessing
 Hadoop - Verteiltes Cluster File Sy...
Seite 7Gunther Pippèrr © 2014 http://www.pipperr.de
Qual der Wahl – Die Software um Hadoop
 Hadoop wird immer mehr ein Sy...
Seite 8Gunther Pippèrr © 2014 http://www.pipperr.de
Hadoop integrieren
Für was kann das jetzt alles nur
verwendet werden?
Seite 9Gunther Pippèrr © 2014 http://www.pipperr.de
Einsatzgebiet – Ergänzung zum Bestands DWH
 Einsatzgebiete
– Sammeln ...
Seite 10Gunther Pippèrr © 2014 http://www.pipperr.de
Die Herausforderung in der Praxis
 Integration in die bestehende IT ...
Seite 11Gunther Pippèrr © 2014 http://www.pipperr.de
Wo setzt die Integration an?
 Zugriff auf die Daten über die Datenba...
Seite 12Gunther Pippèrr © 2014 http://www.pipperr.de
Integration der DB‘s in das Hadoop Ökosystem
MapReduce Daten vom Orac...
Seite 13Gunther Pippèrr © 2014 http://www.pipperr.de
Umsetzung
Wie kann die Integration technisch
gelingen?
Seite 14Gunther Pippèrr © 2014 http://www.pipperr.de
Hadoop Sicht – Ziel – Eine zentrale Abfrage (1)
 Ziel: mit einer Abf...
Seite 15Gunther Pippèrr © 2014 http://www.pipperr.de
Hadoop Sicht – Ziel – Eine zentrale Abfrage (2)
 Prinzip des umgekeh...
Seite 16Gunther Pippèrr © 2014 http://www.pipperr.de
Datenbank Sicht – Ziel – eine SQL Abfrage
 Ziel: Eine SQL Abfrage au...
Seite 17Gunther Pippèrr © 2014 http://www.pipperr.de
Konnektoren  ORACLE RDBMS (1)
 "External Table" Prinzip – Daten ver...
Seite 18Gunther Pippèrr © 2014 http://www.pipperr.de
Konnektoren  ORACLE RDBMS (2)
 „External Table" Prinzip – Daten ver...
Seite 19Gunther Pippèrr © 2014 http://www.pipperr.de
Konnektoren  ORACLE RDBMS (3)
 SQL*Loader Prinzip – Daten werden in...
Seite 20Gunther Pippèrr © 2014 http://www.pipperr.de
Konnektoren  ORACLE RDBMS (4)
 Data Konnektoren über Java IN der Da...
Seite 21Gunther Pippèrr © 2014 http://www.pipperr.de
Wie kann das praktisch
umgesetzt werden?
Wie fange ich da nun an?
Seite 22Gunther Pippèrr © 2014 http://www.pipperr.de
Unser Ziel – Eine zentrale Log Ablage
 Alert.log
 listener.log
 DB...
Seite 23Gunther Pippèrr © 2014 http://www.pipperr.de
Die Aufgabe- Ein eigener Oracle Audit Vault (1)
 Zentrales Sammeln u...
Seite 24Gunther Pippèrr © 2014 http://www.pipperr.de
Qual der Wahl!
 Wo anfangen? – Welche Produkte wählen?
?
? ?
?
Wie v...
Seite 25Gunther Pippèrr © 2014 http://www.pipperr.de
HDFS
Architektur Übersicht – Variante Oracle Adapter
AUD$
Hadoop
Conn...
Seite 26Gunther Pippèrr © 2014 http://www.pipperr.de
HDFS
Architektur Übersicht – Variante Open Source
Quelle
Ext
Table
Li...
Seite 27Gunther Pippèrr © 2014 http://www.pipperr.de
Umsetzung – "External Table" Konnektoren
 Oracle SQL Connector for H...
Seite 28Gunther Pippèrr © 2014 http://www.pipperr.de
OSCH - Oracle SQL Connector for HDFS
 SQL Abfrage über eine "Externa...
Seite 29Gunther Pippèrr © 2014 http://www.pipperr.de
OSCH – Die Bedeutung der Location Files
 Location Files – Pointer au...
Seite 30Gunther Pippèrr © 2014 http://www.pipperr.de
Installation Oracle Connector for HDFS
 Hadoop Client auf DB Host au...
Seite 31Gunther Pippèrr © 2014 http://www.pipperr.de
Oracle SQL Connector for Hadoop OSCH (1)
 „Oracle SQL Connector for ...
Seite 32Gunther Pippèrr © 2014 http://www.pipperr.de
Oracle SQL Connector for Hadoop OSCH (2)
 Oracle SQL Connector for H...
Seite 33Gunther Pippèrr © 2014 http://www.pipperr.de
Probleme über Probleme …..
 CLASSPATH muss die Jar Files von Hive en...
Seite 34Gunther Pippèrr © 2014 http://www.pipperr.de
Oracle Loader for Hadoop - OLH
 Daten in die Datenbank einlesen
Orac...
Seite 35Gunther Pippèrr © 2014 http://www.pipperr.de
Oracle Loader for Hadoop – OLH (1)
 Dateien im „Data Pump Export“ Fo...
Seite 36Gunther Pippèrr © 2014 http://www.pipperr.de
Oracle Loader for Hadoop – OLH (2)
 Probleme:
– Bei der Verwendung v...
Seite 37Gunther Pippèrr © 2014 http://www.pipperr.de
Lizenz?
 Lizensierung Oracle Big Data Connectors
– Pro Prozessor der...
Seite 38Gunther Pippèrr © 2014 http://www.pipperr.de
"External Table" per FUSE Projekt
 HDFS Filesystem per FUSE als Linu...
Seite 39Gunther Pippèrr © 2014 http://www.pipperr.de
"External Table" mit PREPROCESSOR
 Einbinden von Skripten über die P...
Seite 40Gunther Pippèrr © 2014 http://www.pipperr.de
Beispiel „external Table“ mit PREPROCESSOR
 Beispiel:
CREATE TABLE P...
Seite 41Gunther Pippèrr © 2014 http://www.pipperr.de
„External Table“ mit PREPROCESSOR (2)
 Im Script wird die entspreche...
Seite 42Gunther Pippèrr © 2014 http://www.pipperr.de
DEMO
 External Table Demo
Aus Hadoop mit Board
mitteln lesen
Seite 43Gunther Pippèrr © 2014 http://www.pipperr.de
Hadoop
Sqoop 2 einsetzen
 Sqoop 2 Data Loader – Eine Art SQL*Loader?...
Seite 44Gunther Pippèrr © 2014 http://www.pipperr.de
Sqoop 2 – Installation und Setup
 Software herunterladen und auspack...
Seite 45Gunther Pippèrr © 2014 http://www.pipperr.de
Flexibler Import mit Sqoop
 Daten aufteilen mit
– Select <spalte> fr...
Seite 46Gunther Pippèrr © 2014 http://www.pipperr.de
Beispiel Sqoop 2
 Am Sqoop Server anmelden
 Connection Objekt anleg...
Seite 47Gunther Pippèrr © 2014 http://www.pipperr.de
Sqoop ist nicht „SQL Injektion“ save!
 In der AUD$ hieß ein User 'TE...
Seite 48Gunther Pippèrr © 2014 http://www.pipperr.de
Vergleich der SQL*Loader Werkzeuge
 Kostenpflichtig
 => Laden in di...
Seite 49Gunther Pippèrr © 2014 http://www.pipperr.de
Apache Flume
 Eine Art „syslog“ Demon
 Übernimmt den Transport der ...
Seite 50Gunther Pippèrr © 2014 http://www.pipperr.de
Beispiel für den Einsatz mit dem Listener.log
 Ein Log Eintrag:
List...
Seite 51Gunther Pippèrr © 2014 http://www.pipperr.de
Flume Konfiguration
vi /usr/lib/flume-ng/conf/agent-conf.properties
a...
Seite 52Gunther Pippèrr © 2014 http://www.pipperr.de
Was ergibt sich daraus für unsere Aufgabe? (1)
 Bei Verwendung des O...
Seite 53Gunther Pippèrr © 2014 http://www.pipperr.de
Was ergibt sich daraus für unsere Aufgabe? (2)
 Lösung mit Sqoop und...
Seite 54Gunther Pippèrr © 2014 http://www.pipperr.de
Die Daten auswerten
Was fange ich jetzt mit den Daten an?
Seite 55Gunther Pippèrr © 2014 http://www.pipperr.de
Auswerten der Daten
 Hive Tabellen in Oracle einbinden
– Mit dem OLH...
Seite 56Gunther Pippèrr © 2014 http://www.pipperr.de
Fragen zum Betrieb
Wie kann ich das über die Dauer der
Jahre warten?
Seite 57Gunther Pippèrr © 2014 http://www.pipperr.de
Ein Hadoop Cluster betreiben
 Backup Konzept?
– Ausfallsicherheit un...
Seite 58Gunther Pippèrr © 2014 http://www.pipperr.de
Fazit
Lohnt sich der Aufwand?
Seite 59Gunther Pippèrr © 2014 http://www.pipperr.de
Größtes Problem
 Viele Updates und unübersichtliche Kompatibilitäten...
Seite 60Gunther Pippèrr © 2014 http://www.pipperr.de
Fazit
– Ein Apache Hadoop Cluster bietet sich als eine gute Lösung
fü...
Seite 61Gunther Pippèrr © 2014 http://www.pipperr.de
Ihre Erfahrungen?
?
Seite 62Gunther Pippèrr © 2014 http://www.pipperr.de
Fragen
Oracle und Hadoop
NO:SQL
Seite 63Gunther Pippèrr © 2014 http://www.pipperr.de
Quellen
 Oracle – BIG Data
– https://www.oracle.com/bigdata/products...
Seite 64Gunther Pippèrr © 2014 http://www.pipperr.de
Gunther Pippèrr - IT-Architekt - Berater
• High-Tech
• Real Estate
• ...
Nächste SlideShare
Wird geladen in …5
×

Oracle hadoop doag-big-data_09_2014_gpi

743 Aufrufe

Veröffentlicht am

Die Oracle Datenbank und Apache Hadoop

DOAG -Big Data für Oracle Entwickler: Zweitagesveranstaltung mit Hands-On - 25.09.2014 in Köln
DOAG 2014 -Die größte Anwenderkonferenz rund um alle Oracle Themen, vom 18.11.2014 - 20.11.2014 in Nürnberg

Die Oracle Datenbank in die Welt von Hadoop und NoSQL integrieren

Wie lassen sich die beiden Welten, Oracle RDBMS und der NoSQL Ansatz sinnvoll für die Archivierung und das Datensammeln einsetzen?

Ziel des Vortrags ist es aufzuzeigen, wie die Kombinationen aus den Vorteilen der beiden Welten für die Analyse und Archivierung von Daten eingesetzt werden kann.

Hadoop, mit einer entsprechen Container Datenbank Lösung, eignet sich gut, um im ersten Schritt Daten zu sammeln und/oder im letzten Schritt Daten zu archivieren.

Die eigentliche Oracle RDBMS Datenbank kann dabei schnell und schlank gehalten werden, um Hardware und damit Lizenzkosten einzusparen.

Es werden Architekturansätze aufgezeigt, wie die Integration der Oracle RDBMS und NoSQL Datenbank in das Hadoop Ökosystem dabei erfolgen kann.

Mit den kostenpflichtigen Adaptern der Oracle RDBMS lässt sich zwar einfacher eine tiefe Integration mit Hadoop erreichen, aber auch mit den freien Lösungen kann bereits eine umfangreiche Lösung implementiert werden.

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

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

Keine Downloads
Aufrufe
Aufrufe insgesamt
743
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
62
Aktionen
Geteilt
0
Downloads
6
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Oracle hadoop doag-big-data_09_2014_gpi

  1. 1. Seite 1Gunther Pippèrr © 2014 http://www.pipperr.de ORACLE UND HADOOP Zusammen ein Team? Konferenz – Nürnberg 2014 NoSQL Vortrag – Taiwan/Taipei 2014
  2. 2. Seite 2Gunther Pippèrr © 2014 http://www.pipperr.de Warum nun Big DATA Was treibt uns an? Neue Lösungen für alte Probleme?
  3. 3. Seite 3Gunther Pippèrr © 2014 http://www.pipperr.de Datenqualität und -Stabilität Daten Sammeln Daten Archivieren Daten auswerten • Daten ändern über die Jahre semantisch und syntaktisch ihre Bedeutung • Wenig feste Strukturen • Hohe Fehlerwahrscheinlichkeit • Nachvollziehbarkeit der Ergebnisse Herausforderung
  4. 4. Seite 4Gunther Pippèrr © 2014 http://www.pipperr.de Datenwachstum und Performance Daten Sammeln Daten Archivieren Daten auswerten • Platzbedarf• Geringer Nutzinhalt • Hohes Aufkommen • Performance Herausforderung
  5. 5. Seite 5Gunther Pippèrr © 2014 http://www.pipperr.de Warum Hadoop? Ein neuer Standard oder nur ein neuer Hype?
  6. 6. Seite 6Gunther Pippèrr © 2014 http://www.pipperr.de File System und Batch Prozessing  Hadoop - Verteiltes Cluster File System – Container für verschiedene Datenbank Lösungen • Andere Datenbanken wie RainStor© oder HIVE nützen Hadoop als Dateisystem  Hadoop - MapReduce Framework – Framework für das MapReduce Pattern über vielen Knoten Alternative: Ceph Clusterfiles System Alternativen MapReduce Abfragen: • Parallel SQL Engines wie Impala • Oracle Big Data SQL
  7. 7. Seite 7Gunther Pippèrr © 2014 http://www.pipperr.de Qual der Wahl – Die Software um Hadoop  Hadoop wird immer mehr ein Synonym für eine verteilte Datenhaltung  Im Hadoop Ökosystem wird jede Komponente eines „großen“ RDBMS Systems über ein eigenes Produkt umgesetzt DatenhaltungAbfrage Sprache Optimizer PIG HIVEImpala Drill Oracle Big Data SQL RainStor ETL sqoop HBase
  8. 8. Seite 8Gunther Pippèrr © 2014 http://www.pipperr.de Hadoop integrieren Für was kann das jetzt alles nur verwendet werden?
  9. 9. Seite 9Gunther Pippèrr © 2014 http://www.pipperr.de Einsatzgebiet – Ergänzung zum Bestands DWH  Einsatzgebiete – Sammeln von Log Informationen aus dem Betrieb • Wie Listener und Audit Logs der Datenbanken – Stream Processing von Maschinendaten – Archivieren von Historischen Daten • Wie Partitionen aus DWH Tabellen Ziele: • Nur die zur Zeit wichtige Daten im Live System vorhalten • Keine Daten verlieren, die noch wichtig werden könnten Anforderung: Große Datenmengen aufbewahren und nur bei Bedarf SELTEN analysieren
  10. 10. Seite 10Gunther Pippèrr © 2014 http://www.pipperr.de Die Herausforderung in der Praxis  Integration in die bestehende IT Landschaft – Alle Kernprozesse sind bereits im DWH effizient abgebildet – Berichtwesen / Reporting bereits aufgesetzt Motivation: • Lizenz Kosten erzwingen bereits vor dem Erreichen technischer „Problemgrößen“ neue Lösungen • Storage Kosten steigen überproportional bei Anforderungen an Performance / Verfügbarkeit / Volumen IST DWH Neu • Implementierung • Migration von Alt Daten • Schulung von Mitarbeitern Neu IST DWH Aufwand: IntegrationMigration Neu
  11. 11. Seite 11Gunther Pippèrr © 2014 http://www.pipperr.de Wo setzt die Integration an?  Zugriff auf die Daten über die Datenbank  Logische Integration über das Berichtswesen DBNoSQL Reporting DB NoSQL Reporting Bestehende BI/Reporting Umgebung Bestehende Zugriffsberechtigung und Userverwaltung Vollständige Umsetzung des NoSQL Konzepts Wie wird der Zugriff auf die Daten kontrolliert und protokolliert – Stichwort Berechtigungskonzept
  12. 12. Seite 12Gunther Pippèrr © 2014 http://www.pipperr.de Integration der DB‘s in das Hadoop Ökosystem MapReduce Daten vom Oracle NoSQL Store lesen HDFS Hadoop Filesystem Ergebnisse ablegen 12c Als "External Table" Daten ablegen Hive Als "External Table" lesen Nur EE Edition der Oracle NoSQL! Daten sammeln Integration - "External Table“ Prinzip - „SQL*Loader“ Prinzip - Data Reader in der DatenbankDaten auswerten
  13. 13. Seite 13Gunther Pippèrr © 2014 http://www.pipperr.de Umsetzung Wie kann die Integration technisch gelingen?
  14. 14. Seite 14Gunther Pippèrr © 2014 http://www.pipperr.de Hadoop Sicht – Ziel – Eine zentrale Abfrage (1)  Ziel: mit einer Abfrage ein Ergebnisse aus allen Quellen erhalten Oracle RDBMS Abfragen • Performance • Wartbarkeit/Pflege • Kosten Auswahl Kriterien: MapReduce JobsSQL Abfragen Kein direkter Master für die Daten Apache Drill Oracle Big Data SQL
  15. 15. Seite 15Gunther Pippèrr © 2014 http://www.pipperr.de Hadoop Sicht – Ziel – Eine zentrale Abfrage (2)  Prinzip des umgekehrten ETL – Quelldaten erstmal einfach in Rohformat speichern – Die Quelldaten werden nicht aufbereitet! • Die Abfragen auf die Daten passen sich flexible an die Daten an, (soweit möglich) – Mehrere Quellen werden kombiniert  Abfrage Systeme über mehrere Datenquellen – Apache Drill • SQL Meta Suche – Oracle Big Data SQL – ein neues Oracle Produkt
  16. 16. Seite 16Gunther Pippèrr © 2014 http://www.pipperr.de Datenbank Sicht – Ziel – eine SQL Abfrage  Ziel: Eine SQL Abfrage aus der Datenbank Oracle RDBMS "External Table" Data Pump SQL Abfrage • Performance • Wartbarkeit/Pflege • Kosten Auswahl Kriterien: SQL*Loader SQL AbfragenHDFSHDFS Hive Der Master ist die Oracle Datenbank Konnektoren Java in der Datenbank MapReduce Jobs Oracle Gateway Heterogeneous Services JDBC? SQL Abfragen ?
  17. 17. Seite 17Gunther Pippèrr © 2014 http://www.pipperr.de Konnektoren  ORACLE RDBMS (1)  "External Table" Prinzip – Daten verbleiben im HDFS – CSV Dateien / Hive Tabellen als Oracle Tabellen lesen • Eigene Skripte mit "PREPROCESSOR" für "External Table" einbinden • FUSE Mount Points im Filesystem für "traditionelle" Zugriffe einbinden – HDFS als "normales" Filesystem einbinden • Kostenpflichtige Lösung: Oracle SQL Connector for HDFS - OSCH – Ehemals Oracle Direct Connector for Hadoop Distributed File System • Direkt vom HDFS die Daten per Java Klassen aus der DB lesen
  18. 18. Seite 18Gunther Pippèrr © 2014 http://www.pipperr.de Konnektoren  ORACLE RDBMS (2)  „External Table" Prinzip – Daten verbleiben im HDFS – Data Pump "External Table" als Oracle Tabellen lesen • Tabellen / Partitionen in das HDFS archivieren und in der DB löschen • Bei Bedarf die Daten wieder einbinden • FUSE Mount Point – HDFS als Filesystem für die Archivierung nützen • Als "External Table" einbinden – Oracle Direct Connector – "External Table" im Data Pump Format Oracle "External Table" TYPE oracle_datapump können NICHT mit "impdb" als Import Quelle verwendet werden, da das Export File Format unterschiedlich ist!
  19. 19. Seite 19Gunther Pippèrr © 2014 http://www.pipperr.de Konnektoren  ORACLE RDBMS (3)  SQL*Loader Prinzip – Daten werden in das jeweilige Ziel geladen – Oracle*Loader für Hadoop • Für das einlesen der Daten vom Hadoop Cluster – Quest (veraltet?) • Data Connector for Oracle and Hadoop ( Erweiterung Sqoop) – Apache Sqoop(TM) • Open Source SQL*Loader für Hadoop – lesen UND schreiben => Apache Flume Mehr für das zentrale Sammeln von Log Daten: Einsammeln, filtern und in das HDFS schreiben
  20. 20. Seite 20Gunther Pippèrr © 2014 http://www.pipperr.de Konnektoren  ORACLE RDBMS (4)  Data Konnektoren über Java IN der Datenbank – Eigene Java Programm lesen Daten aus der DB von Hadoop • MapReduce Framework aus der Datenbank heraus aufrufen • Wie ein SOA Adapter oder ein klassisches REST Interface – MapReduce Jobs per Java mit Oracle Klassen mit 12c r2 in Vorbereitung
  21. 21. Seite 21Gunther Pippèrr © 2014 http://www.pipperr.de Wie kann das praktisch umgesetzt werden? Wie fange ich da nun an?
  22. 22. Seite 22Gunther Pippèrr © 2014 http://www.pipperr.de Unser Ziel – Eine zentrale Log Ablage  Alert.log  listener.log  DB Job Logs  Audit$ Logs  Statspack/AWR/ASH  Trace Files  SQL Text und Execution Pläne
  23. 23. Seite 23Gunther Pippèrr © 2014 http://www.pipperr.de Die Aufgabe- Ein eigener Oracle Audit Vault (1)  Zentrales Sammeln und Auswertung aller Security Log Daten alle Datenbanken im Unternehmen – Ausgewertet wird: • AUD$ Einträge • Listener.log • Alert.log – Über eine zentrale Oracle Datenbank sollen die Ergebnisse mit Apex ausgewertet werden Anforderung: Autorisierung und Unveränderbarkeit der Daten sicherstellen
  24. 24. Seite 24Gunther Pippèrr © 2014 http://www.pipperr.de Qual der Wahl!  Wo anfangen? – Welche Produkte wählen? ? ? ? ? Wie verwalte und warte ich das Ganze? Was kann ich mir leisten? Was muss ich am wenigsten installieren /konfigurieren? Hadoop PIG Apache Drill SqoopHive Flume Oracle*Loader für Hadoop - OLH Oracle BIG Data SQL OSCH – Oracle SQL Connector for HDFS
  25. 25. Seite 25Gunther Pippèrr © 2014 http://www.pipperr.de HDFS Architektur Übersicht – Variante Oracle Adapter AUD$ Hadoop Connector Quellen pro Maschine Audit DB Ext Table Ext Table Ext Table APEX Listener.ora Audit.log sys.log HIVE Oracle Dumps Ext Table Ext Table Ext Table Ext Table Hadoop Connector Hadoop Connector Daten verbleiben im HDFS Zugriffsberechtigungen werden in der Oracle DB gepflegt Remote: flume Local: pig Format AUD_<DBID>_<SID>_<YYYYDDMM> Logs Hadoop Client Hadoop Client Hadoop Client
  26. 26. Seite 26Gunther Pippèrr © 2014 http://www.pipperr.de HDFS Architektur Übersicht – Variante Open Source Quelle Ext Table Listener.ora Audit.log sys.log Remote: flume Ext Table Aud$ XML Logs Logs Logs Default Connector Java MapReduce Preprozesso rJava MapReduce HIVE FUSEAUD$ Sqoop Local: pig Quellen pro Maschine Audit DB APEX
  27. 27. Seite 27Gunther Pippèrr © 2014 http://www.pipperr.de Umsetzung – "External Table" Konnektoren  Oracle SQL Connector for HDFS OSCH – Data Pump Table Exports möglich • Vorteil: Schnelles wiedereinlesen • Nachteil: – Für andere Tools nicht lesbar! – Evtl.. Datenbank-Versions abhängig! – Es können keine Daten angefügt werden! – Direktes Erzeugen von Hive Tabellen • Vorteil: auch andere Werkzeuge können mit den Daten arbeiten – CSV Dateien HDFS Oracle Dumps Location Files Hadoop Connector Ext Table Hadoop API HIVE Zur Zeit nur für Datenbanken unter Linux verfügbar! Aud$ Exports Listener.log alert.log
  28. 28. Seite 28Gunther Pippèrr © 2014 http://www.pipperr.de OSCH - Oracle SQL Connector for HDFS  SQL Abfrage über eine "External Table" Location Files Oracle Datenbank Präprozessor HDFS_STREAM Ext Table Aud$ Exports Listener.log - alert.logHive Table Delimited Text Data Pump HDFS API SQL Connector for HDFS Oracle Server Hadoop Node HDFS Location Files = URI für die Daten im HDFS Location Files Location Files
  29. 29. Seite 29Gunther Pippèrr © 2014 http://www.pipperr.de OSCH – Die Bedeutung der Location Files  Location Files – Pointer auf die Daten im HDFS – Die Location Files enthalten die einzelnen Ziel Dateien auf dem HDFS – Werden beim „-createTable“ unter dem Verzeichnis des DIRECTORY Objekts anleget – Ändern die sich die Daten im HDFS können diese Dateien mit „-publish“ aktualisiert werden – Beispiel: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <locationFile> <header> <version>1.0</version> <fileName>osch-20140831075440-588-1</fileName> <createDate>2014-08-30T19:10:08</createDate> <publishDate>2014-08-31T07:54:40</publishDate> <productName>Oracle SQL Connector for HDFS Release 3.0.0 - Production</productName> <productVersion>3.0.0</productVersion> </header> <uri_list> <uri_list_item size="11723955" compressionCodec="">HDFS://bigdatalite.localdomain:8020/tmp/auditGPI/part-m-00003</uri_list_item> </uri_list> </locationFile>
  30. 30. Seite 30Gunther Pippèrr © 2014 http://www.pipperr.de Installation Oracle Connector for HDFS  Hadoop Client auf DB Host aufsetzen  Zip Archive auspacken und Umgebung anpassen  Oracle DB User einrichten/konfigurieren – Recht read/write/execute auf das OSCH_BIN Directory für den User zusätzlich vergeben!  Mit dem „external Command Tool“ die „External Table“ anlegen  Abfragen
  31. 31. Seite 31Gunther Pippèrr © 2014 http://www.pipperr.de Oracle SQL Connector for Hadoop OSCH (1)  „Oracle SQL Connector for Hadoop“ für HIVE verwenden – "External Table" erzeugen mit: Auf der zentralen Datenbank für die Auswertung der Log Daten hadoop jar $OSCH_HOME/jlib/orahdfs.jar oracle.hadoop.exttab.ExternalTable -D oracle.hadoop.exttab.hive.tableName=ext_ora_audit_gpi -D oracle.hadoop.exttab.hive.databaseName=default -D oracle.hadoop.exttab.sourceType=hive -D oracle.hadoop.exttab.tableName=ext_ora_audit_gpi_hive -D oracle.hadoop.connection.url=jdbc:oracle:thin:@//localhost:1521/orcl -D oracle.hadoop.connection.user=scott -D oracle.hadoop.exttab.defaultDirectory=HADOOP_EXT_TABS -createTable
  32. 32. Seite 32Gunther Pippèrr © 2014 http://www.pipperr.de Oracle SQL Connector for Hadoop OSCH (2)  Oracle SQL Connector for Hadoop  4. "External Table" DDL abfragen mit „-getDDL“ / überprüfen: ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY "HADOOP_EXT_TABS" … PREPROCESSOR "OSCH_BIN_PATH":'hdfs_stream' …. ) ) LOCATION ( 'osch-20140830073731-58-1', 'osch-20140830073731-58-2', 'osch-20140830073731-58-3', 'osch-20140830073731-58-4' ) ) Location Files
  33. 33. Seite 33Gunther Pippèrr © 2014 http://www.pipperr.de Probleme über Probleme …..  CLASSPATH muss die Jar Files von Hive enthalten – Bei Problem im Hadoop Kommando Script direkt anpassen  HIVE Tabelle darf keine Spalten vom Typ „BINARY“ enthalten  Problem mit Datumsformaten und Null Spalten – Export per Scoop => null wird 'null' – Die Generiert Anweisung=> – "TIMESTAMP" CHAR DATE_FORMAT DATE MASK 'YYYY-MM-DD' NULLIF "TIMESTAMP"=0X'5C4E', => N – Benötigt wird aber ein => – "TIMESTAMP" CHAR DATE_FORMAT DATE MASK 'YYYY-MM-DD' NULLIF "TIMESTAMP"=0X'276E756C6C27'‚ => 'null'
  34. 34. Seite 34Gunther Pippèrr © 2014 http://www.pipperr.de Oracle Loader for Hadoop - OLH  Daten in die Datenbank einlesen Oracle Datenbank ApplicationsManager Hive Table MapReduce Job Delimited Text Data Pump Format Oracle Server Hadoop Node HDFSAVRO Custom Format Oracle Loader for Hadoop Offline Load Online Load • JDBC • OCI direct Path
  35. 35. Seite 35Gunther Pippèrr © 2014 http://www.pipperr.de Oracle Loader for Hadoop – OLH (1)  Dateien im „Data Pump Export“ Format von HDFS Daten für den Import erzeugen  Online Mode – Daten werden direkt in die Datenbank geladen  Offline Mode – Daten werden zuerst aus dem Hadoop in Data Pump oder CSV Format erzeugt und können später traditionell eingebunden werden  Ablauf:  Tabelle in der Oracle DB anlegen  Job Konfigurationsdatei für den MapReduce Job anlegen  Job Starten und Daten aus Hive / CSV Daten exportieren und in Richtung Oracle DB importieren Nachteil: An dem Data Pump Dump können keine weitern Daten angefügt werden Dump müssen über select * und weitere "External Table" zusammen gefügt werden
  36. 36. Seite 36Gunther Pippèrr © 2014 http://www.pipperr.de Oracle Loader for Hadoop – OLH (2)  Probleme: – Bei der Verwendung von Hive Tabellen müssen noch einige Jar Files einzeln angegeben werden! – Fehler: – Lösung hadoop jar /u01/connectors/olh/jlib/oraloader.jar oracle.hadoop.loader.OraLoader -conf hdfs_job_config.xml -libjars /usr/lib/hive/lib/hive-metastore-0.12.0-cdh5.0.0.jar ,/usr/lib/hive/lib/hive-serde-0.12.0-cdh5.0.0.jar ,/usr/lib/hive/lib/libthrift-0.9.0.cloudera.2.jar ,/usr/lib/hive/lib/hive-common-0.12.0-cdh5.0.0.jar Error: java.lang.ClassNotFoundException: org.apache.hadoop.hive.metastore.TableType at .. Und weitere
  37. 37. Seite 37Gunther Pippèrr © 2014 http://www.pipperr.de Lizenz?  Lizensierung Oracle Big Data Connectors – Pro Prozessor der Hadoop Clusters – Kosten: • Oracle Technology Global Price List July 22, 2014 • 2000,- USA (Dollar) per Hadoop Cluster Processor See: http://docs.oracle.com/cd/E53356_01/doc.30/e53065/bda.htm#BIGLI113 See :http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf
  38. 38. Seite 38Gunther Pippèrr © 2014 http://www.pipperr.de "External Table" per FUSE Projekt  HDFS Filesystem per FUSE als Linux Filesystem einbinden – Mit Hilfe der FUSE Technology (Mountable HDFS - mount point for HDFS) kann auf das HDFS mit Standard Oracle Methoden wie auf ein normales Filesystem zugegriffen werden. – Laut Oracle Doku langsamer als die Oracle Big Data Connectors (Faktor 5) und CPU Lastig (3' Fach höher) – https://wiki.apache.org/hadoop/MountableHDFS yum install hadoop-hdfs-fuse.x86_6 hadoop-fuse-dfs dfs://<name_node_hostname>:<namenode_port>
  39. 39. Seite 39Gunther Pippèrr © 2014 http://www.pipperr.de "External Table" mit PREPROCESSOR  Einbinden von Skripten über die PREPROCESSOR Anweisung  Ein Shell Script wird aufgerufen und liefert Daten zurück – Die Dateiangaben im Location Part können als Parameter übergeben werden, damit kann der Job parametrisiert werden – Im Shell Script kann der Connect auf die Daten erfolgen – Standard Out Pipe wird mit der "External Table" verknüpft Diese Lösung ist damit Lizenzkostenfrei!
  40. 40. Seite 40Gunther Pippèrr © 2014 http://www.pipperr.de Beispiel „external Table“ mit PREPROCESSOR  Beispiel: CREATE TABLE PREPREP_EXT( wert VARCHAR2(2000) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY DATA_LOAD ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE PREPROCESSOR EXT_COMMAND:'loadFromHadoop.sh' SKIP 0 LOGFILE EXT_DATA:'data_load.log' BADFILE EXT_DATA:'data_load.bad' NODISCARDFILE FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' MISSING FIELD VALUES ARE NULL ) LOCATION (EXT_DATA:'hadoop_locator.dat') ) REJECT LIMIT 0 NOPARALLEL NOMONITORING ;
  41. 41. Seite 41Gunther Pippèrr © 2014 http://www.pipperr.de „External Table“ mit PREPROCESSOR (2)  Im Script wird die entsprechende Logik aufgerufen – Lade die Daten aus dem Hadoop auf den DB Server • hdfs dfs –cat /user/auditdat/logfile.a.. – Stelle die Daten der "External Table" zur Verfügung • Über Standard out wird verknüpft #!/bin/sh #Laufzeitumgebung setzen export PATH=$PATH:/bin:/sbin/:/usr/bin export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec export HADOOP_CONF_DIR=/etc/hadoop/conf.bigdatalite # Übergabe Parameter Datei auslesen und Inhalt als Parameter verwerten FILENAME=`/bin/cat $1` #Mit HDFS Bordmitteln die Datei auswerten /usr/lib/hadoop-hdfs/bin/hdfs dfs -cat $FILENAME
  42. 42. Seite 42Gunther Pippèrr © 2014 http://www.pipperr.de DEMO  External Table Demo Aus Hadoop mit Board mitteln lesen
  43. 43. Seite 43Gunther Pippèrr © 2014 http://www.pipperr.de Hadoop Sqoop 2 einsetzen  Sqoop 2 Data Loader – Eine Art SQL*Loader? Oracle RDBMS AUD$ ApplicationsManager C 2 A 2 B 3 A 2 G 7 Y 8 Hive Table Sqoop Client Sqoop Metadata JDBC Configure and start Job Store Job Configuration MapReduce Job AUD$_QUELL_DB_SID Daten aus der Quelldatenbank exportieren und in Hadoop ablegen
  44. 44. Seite 44Gunther Pippèrr © 2014 http://www.pipperr.de Sqoop 2 – Installation und Setup  Software herunterladen und auspacken – JDBC Treiber für Oracle kopieren  Connect zum Hadoop Cluster konfigurieren – Mindestens ein Hadoop Client muss installiert sein  Server Prozess starten  Daten transferieren
  45. 45. Seite 45Gunther Pippèrr © 2014 http://www.pipperr.de Flexibler Import mit Sqoop  Daten aufteilen mit – Select <spalte> from <table> where <condition> – Eigene SQL Abfrage  Parallele Abarbeitung  Inkrementelles Laden über eine where Bedingung Bei Test auf der Oracle BigData Appliance „Exception in thread „main“ groovy.lang.MissingPropertyException: No such property: terminal for class: jline.Terminal“ Lösung: unset CLASSPATH export CLIENT_LIB=/usr/lib/sqoop2/client-lib /usr/lib/sqoop2/bin/sqoop.sh client
  46. 46. Seite 46Gunther Pippèrr © 2014 http://www.pipperr.de Beispiel Sqoop 2  Am Sqoop Server anmelden  Connection Objekt anlegen – JDBC Zugriff auf die Oracle DB konfigurieren  Job Objekt definieren – Wie soll der Job abgearbeitet werden  Job starten und Daten nach Hadoop importieren sqoop:000> create connection --cid 1 sqoop:000> create job --xid 1 --type import sqoop:000> start job --jid 1 $SQOOP_HOME/bin/sqoop.sh client sqoop:000> set server --host nosqldb01 --port 12000 --webapp sqoop
  47. 47. Seite 47Gunther Pippèrr © 2014 http://www.pipperr.de Sqoop ist nicht „SQL Injektion“ save!  In der AUD$ hieß ein User 'TESTER – Beim Laden im Log: SELECT * FROM SYSTEM.AUD$ WHERE ''TESTER' <= USERID AND USERID < '+����'
  48. 48. Seite 48Gunther Pippèrr © 2014 http://www.pipperr.de Vergleich der SQL*Loader Werkzeuge  Kostenpflichtig  => Laden in die Oracle Datenbank  Parallelisierung auf Oracle zugeschnitten Apache Sqoop  Open Source  Laden von und nach Hadoop  Version 1.4 für Hadoop 1  Version 1.9 für Hadoop 2  Parallel Verarbeitung ? Oracle SQL*Loader - OLH
  49. 49. Seite 49Gunther Pippèrr © 2014 http://www.pipperr.de Apache Flume  Eine Art „syslog“ Demon  Übernimmt den Transport der Log Daten – Log Daten in Hive ablegen Flume sammelt und überträgt HDFS Sink Listener.ora Flume Agent – Tier Collector – Tier Storage – Tier C 2 A 2 B 3 A 2 G 7 Y 8 Hive Table Source Channel Logfiles
  50. 50. Seite 50Gunther Pippèrr © 2014 http://www.pipperr.de Beispiel für den Einsatz mit dem Listener.log  Ein Log Eintrag: Lister Log Log.xml Oracle Datenbank Server Nur Flume keine weiteren Libraries installiert Flume Agent Source Channel Sink Flume Agent Source Channel HDFS Sink Ein Hadoop Knoten
  51. 51. Seite 51Gunther Pippèrr © 2014 http://www.pipperr.de Flume Konfiguration vi /usr/lib/flume-ng/conf/agent-conf.properties agent.sources = OraListener agent.channels = memoryChannel agent.sinks = avro-forward # Channel type exec agent.sources.OraListener.type = exec agent.sources.OraListener.command = tail -F /opt/oracle/diag/tnslsnr/oradb12c01/listener/alert/log.xml # The channel can be defined as follows agent.sources.OraListener.channels = memoryChannel #sink agent.sinks.avro-forward.type = avro agent.sinks.avro-forward.hostname = 10.10.10.12 agent.sinks.avro-forward.port = 44444 #Specify the channel the sink should use agent.sinks.avro- forward.channel = memoryChannel # Each channels type is defined agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.capacity = 100 # starten export JAVA_HOME=/usr/java/jdk1.7.0_67 /usr/lib/flume-ng/bin/flume-ng agent -n agent -c /usr/lib/flume-ng/conf -f /usr/lib/flume-ng/conf/agent- conf.properties HDFS Agent vi /etc/flume-ng/conf/agent2-conf.properties agent2.sources = OraLogFiles agent2.channels = memoryChannel agent2.sinks = hdfsSink # Channel type avro agent2.sources.OraLogFiles.type = avro agent2.sources.OraLogFiles.bind = 10.10.10.12 agent2.sources.OraLogFiles.port = 44444 # The channel can be defined as follows agent2.sources.OraLogFiles.channels = memoryChannel # Each sinks type must be defined agent2.sinks.hdfsSink.type = HDFS agent2.sinks.hdfsSink.hdfs.path = HDFS://bigdatalite.localdomain:8020/user/oracle/gpi agent2.sinks.hdfsSink.hdfs.filePrefix = OraLogs- agent2.sinks.hdfsSink.hdfs.rollCount = 1000 agent2.sinks.hdfsSink.hdfs.batchSize = 10 #Specify the channel the sink should use agent2.sinks.hdfsSink.channel = memoryChannel # Each channels type is defined agent2.channels.memoryChannel.type = memory agent2.channels.memoryChannel.capacity = 100 # starten flume-ng agent -n agent2 -c conf -f /etc/flume- ng/conf/agent2-conf.properties Listener Agent
  52. 52. Seite 52Gunther Pippèrr © 2014 http://www.pipperr.de Was ergibt sich daraus für unsere Aufgabe? (1)  Bei Verwendung des Oracle Big Data Connectors für den Export: – Von jeder DB wird täglich die Aud$ exportiert • Format Dump AUD_<DBID>_<SID>_<YYYYMMDD> • Lokales PL/SQL Package (mit Hilfe einer Log Tabelle) führt den Export durch – Monatlich werden die Daten von der zentralen Datenbank in einen Monats Dump verdichtet – Nachteil: • Hadoop Client auf jeder Datenbank notwendig • Windows wird schwierig • Kosten • Dumps müssen ersten durch "Umwege" verdichtet werden
  53. 53. Seite 53Gunther Pippèrr © 2014 http://www.pipperr.de Was ergibt sich daraus für unsere Aufgabe? (2)  Lösung mit Sqoop und Hive – Zentral vom einem Server • Tägliche wird die AUD$ Tabelle in eine Hive Tabelle exportiert – Vorteil: • Keine Installation auf den Quell Servern – Nachteil: • Geringere Performance
  54. 54. Seite 54Gunther Pippèrr © 2014 http://www.pipperr.de Die Daten auswerten Was fange ich jetzt mit den Daten an?
  55. 55. Seite 55Gunther Pippèrr © 2014 http://www.pipperr.de Auswerten der Daten  Hive Tabellen in Oracle einbinden – Mit dem OLH einfach - aber Lizenzkosten pflichtig  Hive Tabellen per JDBC direkt abfragen – Open Source wie Hue:
  56. 56. Seite 56Gunther Pippèrr © 2014 http://www.pipperr.de Fragen zum Betrieb Wie kann ich das über die Dauer der Jahre warten?
  57. 57. Seite 57Gunther Pippèrr © 2014 http://www.pipperr.de Ein Hadoop Cluster betreiben  Backup Konzept? – Ausfallsicherheit und Daten Redundanz sind kein Schutz vor logischen Fehlern!  Datenquellen entkoppeln – Wie lange können die Vorsystem ihre Daten halten? • Buffer Konzepte notwendig?  Upgrade – Patch Konzept für Treiber und OS • Z.B. einzelne Knoten rollierend jeden Monat patchen – Software Upgrade? • Was tun bei einem Mayor Release?
  58. 58. Seite 58Gunther Pippèrr © 2014 http://www.pipperr.de Fazit Lohnt sich der Aufwand?
  59. 59. Seite 59Gunther Pippèrr © 2014 http://www.pipperr.de Größtes Problem  Viele Updates und unübersichtliche Kompatibilitäten der ganze Werkzeugpalette – Was wird es auch in Zukunft noch geben?  Mapping von Datentypen – Viele Detailprobleme  Java Out of Memory Effekte beim Laden – Jobs bleiben einfach im Hadoop "hängen"
  60. 60. Seite 60Gunther Pippèrr © 2014 http://www.pipperr.de Fazit – Ein Apache Hadoop Cluster bietet sich als eine gute Lösung für die Anforderung eines zentralen Audit Vaults für Log Daten an – Die notwendigen Werkzeuge für die Umsetzung der Anforderung sind verfügbar – Die Orchestrierung des Ganzen ist jedoch die große Herausforderung bei einem solchem Projekt – Der damit verbunden Aufwand sollte nicht unterschätzt werden – Der große Vorteil der Eigenentwicklung einer Audit Valut Lösung liegt darin, mit diesem Projekt einen guten Einstieg in diese neue Technologie ohne großes Business Risiko umsetzen zu können
  61. 61. Seite 61Gunther Pippèrr © 2014 http://www.pipperr.de Ihre Erfahrungen? ?
  62. 62. Seite 62Gunther Pippèrr © 2014 http://www.pipperr.de Fragen Oracle und Hadoop NO:SQL
  63. 63. Seite 63Gunther Pippèrr © 2014 http://www.pipperr.de Quellen  Oracle – BIG Data – https://www.oracle.com/bigdata/products.html  Mehr über das Thema und die Quellen im Detail siehe: – http://www.pipperr.de/dokuwiki/doku.php?id=nosql:hadoop_integration – http://www.pipperr.de/dokuwiki/doku.php?id=nosql_datenbank
  64. 64. Seite 64Gunther Pippèrr © 2014 http://www.pipperr.de Gunther Pippèrr - IT-Architekt - Berater • High-Tech • Real Estate • Utility • Communications • IT System Architekt • Technische Projektleitung • Design und Implementierung von Datenbank Anwendungen • Entwurf und Umsetzung von IT Infrastrukturen zum Datenmanagement Gunther Pippèrr arbeitet seit mehr als 16 Jahre intensiv mit den Produkten der Firma Oracle im Bereich Datenbanken/Applikationsserver und Dokumenten-Management. Herr Pippèrr hat sich tiefes Wissen über den Aufbau komplexer IT Architektur aneignen können und hat dieses in der Praxis erfolgreich umgesetzt. Herr Pippèrr hat eine Abschluss als Dipl. Ing. Technische Informatik (FH) an der FH Weingarten. Industry Expertise Background Functional Expertise  Datenbank Architekt für ein Projekt zur Massendatenverarbeitung in der Telekommunikation  Architekt und technische Projektverantwortung für ein Smart Metering Portal für das Erfassen von Energiezählerdaten und Asset Management  Architekt und Projektleitung , Datenbank Design und Umsetzung für die Auftragsverwaltung mit Steuerung von externen Mitarbeitern für den Sprachdienstleister von deutschen Technologiekonzern  Architekt und technische Projektverantwortung für IT Infrastrukturprojekte, z.B.:  Zentrale Datenhaltung für Münchner Hotelgruppe mit über 25 Hotels weltweit,  Redundante Cluster Datenbank Infrastrukturen für diverse größere Web Anwendungen wie Fondplattform und Versicherungsportale, Loyalty Card Anwendungen  CRM- und Ausschreibungsportal für großen Münchner Bauträger Selected Experience http://www.pipperr.de http://orapowershell.codeplex.com Web

×