Hans-Peter Zorn | Inovex GmbH Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke? War nicht BigData das gleiche NoSQL? Data Lake = Keine Struktur? flickr/matthewthecoolguy Oder gar ein Hadump? flickr/autohistorian Wie viele SQL Lösungen für Hadoop gibt es mittlerweile? Kylin Splice Oracle Hadoop Connector InfiniDB Pivotal HAWQ Hive on Spark Shark Hive-on-Tez BigSQL Trafodion Tajo Hive Lingual Presto Impala Phoenix Apache Drill Hadapt Spark SQL CitusDB Aster SQL/Mapreduce IBM BigSQL Agenda • Warum SQL, Anwendungfälle • Überblick Hive • Wie kann Hive verbessert werden • SQL-Engines: Welche für was? • Zusammenfassung Warum jetzt doch SQL? • Türöffner zur BigData-Welt • Kenntnisse weit verbreitet • Software:Treiber vorhanden flickr.com/salynaz Wo wird SQL auf Hadoop eingesetzt? • ETL • Adhoc-Analyse • Reporting Oracle Hadoop Connector Kylin Hive on Spark Splice InfiniDB Pivotal HAWQ Shark Hive-on-Tez BigSQL Trafodion Tajo Hive Phoenix Lingual Presto Impala Apache Drill Hadapt Spark SQL CitusDB Aster SQL/Mapreduce IBM BigSQL Hive • ursprünglich von Facebook • Compiliert HiveQL, ein SQL-Dialekt, zu MapReduce-Jobs • Schema wird separat zu den Daten abgelegt: Metastore Hive Architektur Anwender Query Hive Hive Server2 Meta store Parser, Analyzer, Compiler Hadoop Hive • ETL: gut geeignet • Ad-hoc: Zu hohe Latenz • Analytics: Latenz, Sprachumfang ungenügend Was kann man besser machen? Oder: Warum ist Hive wie es ist Hive auf Mapreduce HDFS Zieltabelle Rot: Plattenzugriff Reduce Shuffle HDFS Map Reduce-side Join Map-Side Join Temporärtabelle S Shuffle FS Reduce HD HDF Adressen Käufe FS HD HD FS Kunden FS HD HD Map FS Map Produkte Was kann man besser machen? • Unnötige Maps oder Reduces vermeiden • Temporärdaten direkt weiterleiten • Effizientere Datenspeicherung • Query-Optimierung (cost-based) • Arbeitsspeicher nutzen Optimiertes Hive: DAGs HDFS Adressen Shuffle Reduce Reduce Shuffle Map-Side Join Adressen Käufe FS HD FS Kunden FS HD HD Map FS Map HD Reduce-side Join Produkte Splice Oracle Hadoop Connector Kylin InfiniDB Pivotal HAWQ Hive on Spark Shark Hive-on-Tez BigSQL Trafodion Tajo Hive Lingual Presto Impala Phoenix Apache Drill Hadapt Spark SQL CitusDB Aster SQL/Mapreduce IBM BigQuery MPP (massive parallel processing) Datenbanken Master Slave Slave Slave Slave (blackbox) (blackbox) (blackbox) (blackbox) HDFS HDFS HDFS HDFS MPP-basiert Splice Oracle Hadoop Connector Kylin InfiniDB Pivotal HAWQ Hive on Spark Shark Hive-on-Tez BigSQL Trafodion Tajo Hive Lingual Presto Impala Phoenix Apache Drill Hadapt Spark SQL CitusDB Aster SQL/Mapreduce IBM BigSQL Spalten vs Zeilenorientiert Stuttgart 597939 D Stuttgart München München 1407836 3419623 8308369 1407836 3419623 8308369 D D London London D 597939 Berlin Berlin GB D D GB ORC / Parquet • Hortonworks/ Microsoft • Twitter/Cloudera/ Criteo • Spaltenindizes, Vektorisierte Queries • Plattform- und Hive unabhängig. (z.b. Pig) • Blöcke von 10.000 Zeilen können über Index übersprungen werden • Verschachtelte Datenstrukturen (Listen, Maps) - Kann ORC auch • Hive Datentypen No SQL!? Splice Oracle Hadoop Connector Kylin InfiniDB Pivotal HAWQ Hive on Spark Shark Hive-on-Tez BigSQL Trafodion Tajo Hive Lingual Presto Impala Phoenix Apache Drill Hadapt Spark SQL CitusDB Aster SQL/Mapreduce IBM BigSQL Stinger initiative • Hortonworks/Microsoft • Hive weiterentwickeln • Geschwindigkeit: Tez, ORC • SQL-Features, Analytische Queries (OVER) • Security (GRANT) Tez und Spark TEZ Hive Spark Spark MR YARN • YARN: Tez, Spark und Hive nebeneinander • Tez: Neuer, spezialisierter • Spark: generischer, viel Monumentum Cloudera Impala • MPP-basiert • Queries zu nativem Code • Speicherhungrig, empfohlen 128GB • keine strukturierten Datentypen • Zwischenergebnisse müssen in RAM passen (bis Impala 2.0) Facebooks Presto • MPP-Engine • Discovery-Server + Worker-Nodes • Struktur-Datentypen -> JSON • Hive, Cassandra, MySQL • Anwendung bei Facebook: Fact-table in Hive, Dimensions in MySQL • einfaches Deployment Apache Drill • MapR’s • Schema-on-Read • Connectoren für Hive, HBase, JSON, CSV. • Joins über mehrere Quellen hinweg • Compliliert Queries zu Java-Byte-Code • Version 0.5.0 Apache Tajo • MPP-like • Fokus auf Query-Plan Optimierung, nicht Caching (wie Impala) • SQL-Abdeckung noch nicht so weit • In unseren Tests sehr schnell • Kerberos in Arbeit stinger.next • Queries unter einer Sekunde • MPP-Ähnliche Architektur (LLAP) • Updates und Transaktionen • SQL:2011 Analytics Kylin • Sehr neu, entwickelt von eBay • (M)OLAP Engine • Aggregate werden in HBase gespeichert Features Impala Hive 0.14 Presto Drill Tajo HiveQL HiveQL SQL92 ANSI SQL ? nein yes yes no 0.9 Sentry Filesyste m+ Hive Fileformats RC, Parquet, Text, Seq viele Nested! Data nein ja SQL Windowfunction s Security (Kerbero alle von alle von RC, hive + hive + Parquet, connector connector Text,Seq n en via JSON ja no - - Doch einige Zahlen 70,00& 60,00& 50,91& 50,00& 39,43& 40,00& 34,31& 30,96& 30,00& 16,69& 20,00& 9,25& 10,00& 5,25& Sh ar k/ & jo Ta Dr ill& o& st Pr e la & pa Im Cl us te r& k& Sh ar Hi ve & 0,00& Resume I Schnell Ausgereift Connectivity Drill Tajo Impala Presto Tez/Spark Hive Sprach- Umfang Resumé II • Welche Distribution will ich nutzen? • Will ich heterogene Datenquellen nutzen (Cassandra, HBase, MySQL)? • Will ich vorhandene Software anbinden (MicroStrategy, Tableau, SAP)? • Welche Antwortzeiten brauche ich? • Welche Datentypen nutze ich? • Security? Wer gewinnt also? • Extrem schnell wachsendes, sich änderndes Umfeld. • Unübersichtlich • Keine „One-Size-Fits-All“ Lösung bisher • Anhand des individuellen Anwendungsfalles zu evaluieren. Dankeschön! Fragen?