<Insert Picture Here> Oracle Big Data Technologien Ein Überblick Carsten Czarski Oracle Deutschland B.V. & Co KG
Big Data Betrachten von Daten die bislang nicht betrachtet wurden Neue Beziehungen finden... Bessere Entscheidungen fällen
Was sind "Big Data": Die drei "V" Velocity: Daten entstehen mit hoher Geschwindigkeit im Sekundentakt oder schneller Volume: Es entstehen große Datenmengen, von denen man nichts wegwerfen möchte Variety: Daten entstehen in vielen Varianten; ein relationales Datenmodell ist schwierig bis unmöglich
Beispiele Logdateien aller Art Sensordaten Soziale Netzwerke (Twitter) Streamingdaten Und mehr...
Die Ausgangssituation Unstructured Schema-less Schema DBMS (OLTP) ETL DBMS (DWH) Reporting Data Mining SQL RDBMS Sicher DBA DataCenter Information Density Erfassen Verarbeiten Auswerten
Big Data Daten, die bislang nicht betrachtet wurden Unstructured Schema-less Verteilte Dateisysteme NoSQL Databanken MapReduce Hive, Java-Code, etc. R NoSQL Fachabt. Entwickler Agil, flexibel (Java-)Code!!! Schema DBMS (OLTP) ETL DBMS (DWH) Reporting Data Mining SQL RDBMS Sicher DBA DataCenter Information Density Erfassen Verarbeiten Auswerten
Big Data An die Datenbank denken: Daten, die bislang nicht betrachtet wurden Spatial, Graph, TEXT, XML, Stat. Funktionen und mehr... Unstructured Schema-less HDFS Oracle NoSQL DB MapReduce Hive, Java-Code, etc. Big Data Connectors Oracle R Enterprise NoSQL Fachabt. Entwickler Agil, flexibel (Java-)Code!!! Schema RDBMS Oracle (OLTP) ODI RDBMS Oracle (DWH) Oracle BI EE Oracle Advanced Analytics SQL RDBMS Sicher DBA DataCenter Information Density Erfassen Verarbeiten Auswerten
Oracle Big Data Platform Die Komponenten im einzelnen: NoSQL DB
NoSQL: Was ist das? Not-only-SQL (2009) Sammelbegriff für nichtrelationale Datenbanken, die massiv parallelisierbar sind weitgehend ohne Datenmodell arbeiten die Datenkonsistenz nicht zwingend durchsetzen sehr entwicklerspezifisch sind Derzeit noch keine Standardisierung vorhanden Keine Abfragesprache (eben "NoSQL") Massive Produktvielfalt (über 122 auf nosql-database.org) Produkte nur schwer vergleichbar
CAP Theorem Anforderungen an Datenhaltungssysteme Zwei Anforderungen sind gleichzeitig erfüllbar C = Consistency A = Availibility P = Partition Awareness A RDBMS Oracle ist CA Prio 1: Konsistenz und Verfügbarkeit NoSQL DB is CP oder AP Prio 1: Verteilte Systeme C P
SQL oder NoSQL: Das ist die Frage! ACID oder BASE? SQL: RDBMS (ACID) Atomicity Consistency Isolation Durability Zwingend höchste Priorität für Datenkonsistenz und -Integrität Verteilte Datenhaltung per Replikation möglich, aber untergeordnet Datenmodell als Schema Abfragesprache: SQL Abfrageausführung durch Optimizer Generische Datenbank für viele Anwendungen NoSQL (BASE) Basically Available Soft State Eventual consistency Konsistenz und Integrität können teilweise aufgegeben werden ("C" oder "A" in "CAP") Verteilte Datenhaltung (Partition Awareness) hat höchste Priorität Kein Datenmodell Keine Abfragesprache; direkte API-Zugriffe Know-How in der Anwendung Datenhaltung wird speziell auf eine Anwendung zugeschnitten
Oracle NoSQL Database Key-Value Datenhaltung Basiert auf BerkeleyDB JE HA Konsistenz und Persistenz konfigurierbar ACID-Transaktionen Extrem skalier- und parallelisierbar Hochverfügbarkeit per Replikation Transparentes Loadbalancing Einfache Installation und Einrichtung
NoSQL Anwendungstopologie Webserver Webserver Load balancer Webserver Application Server Application Server NoSQLDB Treiber Application Server NoSQLDB Treiber Storage Nodes R M R Partition 1 Partition 2 Partition 3
Replikationskonzept Master und Replica Master bedient WRITE Requests Replica bedienen WRITE und READ Requests Wichtig: Replikationsfaktor Replikationsfaktor = Master + Anzahl_Replika Anzahl_Nodes = Partitionen * Replikationsfaktor Empfohlen: Replikationsfaktor mindestens 3 Bei Ausfall eines Master kann eine Replica neuer Master werden
Was ist ein "Key-Value-Store"? Key = Index Key-Value Store CUSTOMERS Key Value Zeilen 010101010 010101011 Datenstrukturen sind nicht selbstbeschreibend Im wesentlichen eine zweispaltige Tabelle "KEY" und "VALUE" VALUE kann auch ein komplexes Objekt sein Die Anwendung kennt die Datenstrukturen nicht selbstbeschreibend Joins zu anderen Key-Value Stores allein durch die Anwendung Einfache Zugriffe: GET, PUT, DELETE Einfach parallelisierbar
Oracle NoSQL Database Zugriffe per API (Java)
Oracle NoSQL Database Ein Codebeispiel: Java : config = new KVStoreConfig("carstenstore", "sccloud032:5000"); store = KVStoreFactory.getStore(config); store.put( Key.createKey("EMP_7839_ENAME"), Value.createValue("KING".getBytes()) ); store.put( Key.fromByteArray(new String("EMP_7839_SAL").getBytes()), Value.createValue("5000".getBytes()) ); store.close(); :
"Schreibekonsistenz" einer Transaktion Commit-Verhalten Festlegung auf Ebene der Operation oder allgemein Commit-Policy Default: NO_SYNC
Schreibkonsistenz festlegen... Beispiel: Default setzen Aufgabe des Entwicklers: Java-Code : Durability d = new Durability( Durability.SyncPolicy.SYNC, Durability.SyncPolicy.SYNC, Durability.ReplicaAckPolicy.NONE ); <KVStoreConfig>config.setDurability(d); : // Commit-Policy MASTER // Commit-Policy REPLICA // Replikations-Policy
Lesekonsistenz einer Transaktion Festlegung auf Ebene der Operation Defaults sind möglich Mögliche Einstellungen zur Lesekonsistenz Absolute Lese nur vom Master Time-based Lese auch von einer Replica, die aber maximal ein bestimmtes Zeitintervall huinter dem Master liegt Version Lese auch von einer Replica, die mindestens ein bestimmtes Transaction Token erreicht hat None Lese vom Master oder von irgendeiner Replica
NoSQL DB im Rechenzentrum SQL Zugriff Strukturierte Analyse Application NoSQL DB Driver HDFS, Hadoop
Oracle NoSQL DB External Tables Direkte Verbindung zwischen NoSQL DB und RDBMS Unstructured Schema-less HDFS Oracle NoSQL DB MapReduce Jobs Big Data Connectors Oracle R Enterprise Schema RDBMS Oracle (OLTP) ODI nosql_stream Formatter-Programm RDBMS Oracle (DWH) Oracle BI EE Oracle Advanced Analytics Information Density Acquire Organize Analyze
Externe Tabellen auf eine NoSQL DB Grundlage: Preprocessing external tables Preprocessor-Utility: nosql_stream Zusammenspiel mit Formatter-Programm Wandelt KV-Paare der NoSQL DB in Text um Übergabe an SQL*Loader Driver der Datenbank Application Ext. Tabelle nosql_stream Formatter-Programm NoSQL DB Driver Datenbankserver
Externe Tabellen auf eine NoSQL DB Hier: Einfaches Beispiel (Zufallszahlen) Alle Strukturen möglich SQL> select * from ( 2 select * from nosql_data order by 1 3 ) where rownum< 20; KEY VALUE ---------- ---------- 0 21 1 22 2 66 3 10 4 69 5 25 : :
Oracle NoSQL DB Editionen Enterprise Edition und Community Edition Feature NoSQL DB CE NoSQL DB EE Lizenzkosten MyOracleSupport Diskussionsforen R R Open Source Java und C API R R ACID Transaktionen R R Large Object Support R R Kein Single Point Of Failure R R R R R
Oracle NoSQL DB Editionen Enterprise Edition und Community Edition Feature NoSQL DB CE NoSQL DB EE Integation mit Hadoop R R RDBMS Integration Ext. Tables Jena Adapter (Graph/SPARQL) Event Processing (CQL) Online Administration R R JMX Monitoring R R R R R SNMP Monitoring R
Oracle Big Data Platform Die Komponenten im einzelnen: Hadoop
Hadoop: Was ist das? "Shared Nothing" Compute Architecture Open Source Im Gegensatz zur Google-Implementierung Batchorientiert API gesteuert Definition und Aufteilung der Teilaufgaben ist Sache des Entwicklers Massive Parallelisierung in extrem großen Clustern Automatische Behandlung eines Knoten-Ausfalls
Hadoop Distributed Filesystem (HDFS) Client / Program Hält die "File Allocation Table" und "weiss", wo die Daten liegen NameNode Lesen / Schreiben DataNodes Halten die Daten Jeder Block ist dreimal vorhanden
Hadoop MapReduce NameNode "Weiss, wo die Daten liegen" Client / Program Aggregate berechnen Aggregierte Ergebnisse JobTracker Verteilung von Teilaufgaben DataNodes Ausführung der Teilaufgaben
MapReduce: Was ist das? MapReduce is a software framework introduced by Google to support distributed computing on large data sets on clusters of computers. [ Ein Hadoop-Cluster führt MapReduce-Programme aus Ein Reducer erhält Daten von einem Mapper Mapper und Reducer arbeiten massiv parallel Nahezu alle Programmiersprachen denkbar
MapReduce: Ein Beispiel Input Reader The cloud is water vapor. But is water vapor useful? But it is! Map process Map process the, 1 cloud, 1 is, 1 water, 1 vapor, 1 but, 1 is, 1 water, 1 vapor, 1 useful, 1 but, 1 it, 1 is, 1 Partition, Compare, Redistribute the, 1 cloud, 1 is, 1 is, 1 is, 1 but, 1 but, 1 Water,1 vapor, 1 water, 1 vapor, 1 it, 1 useful, 1 http://en.wikipedia.org/wiki/mapreduce
MapReduce: Ein Beispiel the, 1 cloud, 1 is, 1 is, 1 is, 1 but, 1 but, 1 water,1 vapor, 1 water, 1 vapor, 1 it, 1 useful, 1 Reducer Reducer the, 1 cloud, 1 is, 3 but, 2 water, 2 vapor, 2 it, 1 useful, 1 Consolidate and Write the, 1 cloud, 1 water, 2 is, 3 but, 2 vapor, 2 it, 1 useful, 1
Oracle Big Data Connectos Oracle Loader for Hadoop Daten aus einem Hadoop Cluster direkt in die Oracle-Datenbank laden Oracle SQL Connector for HDFS Direkter Zugriff auf das HDFS für die Oracle-Datenbank Oracle Data Integrator (ODI) Application Adapter for Hadoop Einbinden eines Hadoop Jobs in einen ODI-Prozess Oracle R Connector for Hadoop (ORCH) Ausführen von R-Prozessen direkt im Hadoop Cluster per MapReduce http://www.oracle.com/technetwork/bdc/big-data-connectors/index.html
Oracle Loader für Hadoop Aufbereitung von Daten für das RDBMS Oracle: Partitionieren, sortieren, transformieren Direkt aus dem Hadoop Cluster in die Oracle-Datenbank laden Online mode: Lade per JDBC oder OCI Offline mode: Erzeuge externe Tabellen (Data Pump Format) Unterstützte Versionen: 10.2.0.5 oder 11.2.0.3
Oracle Loader for Hadoop Input / Output Eingabeformate Out-of-the-box vorhandene Implementierungen: Avro Binary Files, Hive Tables, Delimited Textfiles Eigene Implementierungen möglich Ableitung aus der Hadoop-Klasse InputFormat Ausgabeformate Direct JDBC External Tables SQL Loader Format External Tables Data Pump Format
Oracle Loader for Hadoop 1. Oracle OraLoader.jar wird in den Hadoop Cluster deployed. 2. OLH Mapper führt Sortierungen und Transformationen durch 3. OLH Partitioner ordnet die Daten dem richtigen Reducer und der richtigen Tabellen-Partition zu. 4. OLH Reducer lädt die Daten in die partitionierte Tabelle. Das geschieht online (JDBC, OCI) oder offline (als externe Tabelle) HADOOP CLUSTER MAPPER PARTITIONER REDUCERS
Nutzung des Oracle Loader for Hadoop XML-Config-File (Auszug) : : <property> <name>mapreduce.inputformat.class</name> <value>oracle.hadoop.loader.lib.input.delimitedtextinputformat</value> </property> <property> <name>oracle.hadoop.loader.input.fieldterminator</name> <value>\u0009</value> </property> <property> <name>oracle.hadoop.loader.input.fieldnames</name> <value>c,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9</value> </property> <property> <name>oracle.hadoop.loader.targettable</name> <value>scott.matrix</value> </property> <property> <name>mapreduce.outputformat.class</name> <value>oracle.hadoop.loader.lib.output.datapumpoutputformat</value> </property>
Nutzung des Oracle Loader for Hadoop Starten als eigener Hadoop Job Input Datei aus Hadoop HDFS lesen (Konfiguration per XML-Datei) Ablage der Output Dateien (External Tables) ins HDFS (Konfiguration per XML-Datei) $ bin/hadoop jar \ ${OLH_HOME}/jlib/oraloader.jar \ oracle.hadoop.loader.oraloader \ -conf oraload.xml
Oracle Loader for Hadoop im Einsatz Ein Beispiel Oracle NoSQL DB Key/Value Paare MapReduce Zwischenergebnis im HDFS Oracle Loader for Hadoop Delimited Files in HDFS MapReduce
Weitere Big Data Konnektoren Oracle Loader for Hadoop Daten aus einem Hadoop Cluster direkt in die Oracle-Datenbank laden Oracle SQL Connector for Hadoop HDFS Direkter Zugriff auf das HDFS für die Oracle-Datenbank Oracle Data Integrator (ODI) Application Adapter for Hadoop Einbinden eines Hadoop Jobs in einen ODI-Prozess Oracle R Connector for Hadoop (ORCH) Ausführen von R-Prozessen direkt im Hadoop Cluster per MapReduce http://www.oracle.com/technetwork/bdc/big-data-connectors/index.html
Oracle Engineered Systems Unstructured Schema-less Schema Big Data Appliance Oracle Exadata Oracle Exalytics Information Density Acquire Organize Analyze
Die BDA ist nur als "Full Rack"-Konfiguation erhältlich Big Data Appliance X3-2: Hardware 18 Knoten pro Rack 1152 GB memory 288 cores 648 TB Storage-Rohkapazität 40 Gb/s InfiniBand Fabric Inter-rack Connectivity Inter-node Connectivity 10 Gb/s Ethernet Connectivity Data center connectivity
Horizontale Skalierung Mehrere Racks per Infiniband verbinden mit 3. (Spline) Switch Analog zum Anschluß einer Exadata-Maschine
Big Data Appliance im Zusammenspiel
Big Data Appliance: Software "Integrated Software" ist im Preis enthalten Oracle Linux 5.8 mit UEL Kernel Oracle Java VM Cloudera CDH4 Cloudera Manager 4 Open Source Distribution of R NoSQL Database Community Edition 2.0 Big Data Appliance Enterprise Manager Plugin Support für die "Integrated Software": Im Supportumfang enthalten (außer NoSQL DB CE)
Weitere Informationen Oracle Dojo: Big Data Kostenlos herunterladen oder als Druck bestellen http://www.oracle.com/webfolder/technetwork/de/community/dojo/index.html
Carsten.Czarski@oracle.com http://tinyurl.com/apexcommunity http://sql-plsql-de.blogspot.com http://oracle-text-de.blogspot.com http://oracle-spatial.blogspot.com http://plsqlexecoscomm.sourceforge.net http://plsqlmailclient.sourceforge.net Twitter: @cczarski @oraclebudb