<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 SQL Schema Information Density Reporting DBMS (DWH) Data Mining DBMS (OLTP) ETL Erfassen Verarbeiten Auswerten RDBMS Sicher DBA DataCenter Big Data Daten, die bislang nicht betrachtet wurden Unstructured Verteilte Dateisysteme NoSQL MapReduce Hive, Java-Code, etc. Schema-less NoSQL Databanken “R” Fachabt. Entwickler Agil, flexibel (Java-)Code!!! SQL Schema Information Density Reporting DBMS (DWH) Data Mining DBMS (OLTP) ETL Erfassen Verarbeiten Auswerten RDBMS Sicher DBA DataCenter Big Data An die Datenbank denken: Daten, die bislang nicht betrachtet wurden Spatial, Graph, TEXT, XML, Stat. Funktionen und mehr ... Unstructured HDFS Hive, Java-Code, etc. Schema-less Oracle NoSQL DB Schema NoSQL MapReduce Big Data Connectors RDBMS Oracle RDBMS Oracle (OLTP) (DWH) Oracle R Enterprise Oracle BI EE Oracle Advanced Analytics ODI Information Density Erfassen Verarbeiten Auswerten Fachabt. Entwickler Agil, flexibel (Java-)Code!!! SQL RDBMS Sicher DBA DataCenter 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) NoSQL (BASE) Atomicity Consistency Isolation Durability Basically Available Soft State Eventual consistency Zwingend höchste Priorität für Datenkonsistenz und -Integrität Konsistenz und Integrität können teilweise aufgegeben werden ("C" oder "A" in "CAP") Verteilte Datenhaltung per Replikation möglich, aber untergeordnet Verteilte Datenhaltung (Partition Awareness) hat höchste Priorität Datenmodell als Schema Kein Datenmodell Abfragesprache: SQL Keine Abfragesprache; direkte API-Zugriffe Abfrageausführung durch Optimizer Know-How in der Anwendung Generische Datenbank für viele Anwendungen 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 Load balancer Webserver Application Server Storage Nodes Webserver Webserver Application Server Application Server NoSQLDB Treiber NoSQLDB Treiber R Partition 1 M Partition 2 R 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 Zeilen Value 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 ); // Commit-Policy MASTER // Commit-Policy REPLICA // Replikations-Policy <KVStoreConfig>config.setDurability(d); : 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 HDFS MapReduce Jobs Schema-less Oracle NoSQL DB Schema RDBMS Oracle Big Data Connectors ODI nosql_stream (OLTP)Formatter-Programm Information Density Acquire Organize Oracle R Enterprise Oracle RDBMS BI EE Oracle Oracle Advanced (DWH) Analytics 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 NoSQL DB Driver Ext. Tabelle Datenbankserver nosql_stream Formatter-Programm 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 R MyOracleSupport R Diskussionsforen R R Open Source R Java und C API R R ACID Transaktionen R R Large Object Support R R Kein Single Point Of Failure R R Oracle NoSQL DB Editionen Enterprise Edition und Community Edition Feature Integation mit Hadoop NoSQL DB CE R NoSQL DB EE R RDBMS Integration Ext. Tables R Jena Adapter (Graph/SPARQL) R Event Processing (CQL) R Online Administration R R JMX Monitoring 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" Aggregate berechnen Client / Program 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 the, 1 vapor, 1 cloud, 1 but, 1 is, 1 is, 1 water, 1 Map process water, 1 but, 1 vapor, 1 it, 1 useful, 1 is, 1 Partition, Compare, Redistribute the, 1 is, 1 cloud, 1 but, 1 is, 1 but, 1 is, 1 http://en.wikipedia.org/wiki/MapReduce Water,1 vapor, 1 vapor, 1 it, 1 water, 1 useful, 1 MapReduce: Ein Beispiel the, 1 is, 1 cloud, 1 but, 1 is, 1 but, 1 is, 1 Reducer the, 1 is, 3 cloud, 1 but, 2 Consolidate and Write water,1 vapor, 1 vapor, 1 it, 1 water, 1 useful, 1 Reducer water, 2 it, 1 vapor, 2 useful, 1 the, 1 is, 3 it, 1 cloud, 1 but, 2 useful, 1 water, 2 vapor, 2 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 Oracle Loader for Hadoop MapReduce Delimited Files in HDFS Zwischenergebnis im 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 Big Data Appliance Oracle Exalytics Schema Information Density Oracle Exadata Acquire Organize Analyze 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 Die BDA ist nur als "Full Rack"-Konfiguation erhältlich 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 [email protected] 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