Date post: | 14-Jul-2015 |
Category: |
Technology |
Upload: | inovex-gmbh |
View: | 239 times |
Download: | 1 times |
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?
HivePresto
Hive on SparkShark
Hive-on-TezTajo
Lingual
Apache DrillPhoenix
Trafodion Hadapt
BigSQL
CitusDB
Impala
Spark SQL
Splice
Pivotal HAWQ
IBM BigSQLAster SQL/Mapreduce
Oracle Hadoop ConnectorInfiniDB
Kylin
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
Hive Presto
Hive on SparkShark
Hive-on-TezTajo
Lingual
Apache DrillPhoenix
Trafodion Hadapt
BigSQL
CitusDB
Impala
Spark SQL
Splice
Pivotal HAWQ
IBM BigSQLAster SQL/Mapreduce
Oracle Hadoop Connector InfiniDB
Kylin
Hive
• ursprünglich von Facebook
• Compiliert HiveQL, ein SQL-Dialekt, zu MapReduce-Jobs
• Schema wird separat zu den Daten abgelegt: Metastore
Hive Architektur
Metastore
Hive Server2
Parser, Analyzer, Compiler
Anwender
HadoopHiveQuery
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
Rot: Plattenzugriff
Kunden Adressen Käufe Produkte
Map Map
Reduce
Temporärtabelle
Map
Reduce
Reduce-sideJoin
HDFS
Shuffle
Shuffle
HDFS
HDFS
HDFS
Map-SideJoin
HDFS
HDFSHD
FS
HDFS
Zieltabelle
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
Kunden Adressen Käufe Produkte
Map Map
Reduce
Reduce
Reduce-sideJoin
Shuffle
Shuffle
Map-SideJoin
HDFS
HDFSHD
FS
HDFS
Adressen
HDFS
HivePresto
Hive on SparkShark
Hive-on-TezTajo
Lingual
Apache DrillPhoenix
Trafodion Hadapt
BigSQL
CitusDB
Impala
Spark SQL
Splice
Pivotal HAWQ
IBM BigQueryAster SQL/Mapreduce
Oracle Hadoop Connector InfiniDB
Kylin
MPP (massive parallel processing) Datenbanken
HDFS
Slave (blackbox)
Master
Slave (blackbox)
Slave (blackbox)
Slave (blackbox)
HDFS HDFS HDFS
MPP-basiert
HivePresto
Hive on SparkShark
Hive-on-TezTajo
Lingual
Apache DrillPhoenix
Trafodion Hadapt
BigSQL
CitusDB
Impala
Spark SQL
Splice
Pivotal HAWQ
IBM BigSQLAster SQL/Mapreduce
Oracle Hadoop Connector InfiniDB
Kylin
Spalten vs Zeilenorientiert
Stuttgart 597939 D
München 1407836 D
Berlin 3419623 D
London 8308369 GB
Stuttgart München Berlin London
597939 1407836 3419623 8308369
D D D GB
ORC / Parquet• Hortonworks/
Microsoft
• Spaltenindizes, Vektorisierte Queries
• Blöcke von 10.000 Zeilen können über Index übersprungen werden
• Hive Datentypen
• Twitter/Cloudera/Criteo
• Plattform- und Hive unabhängig. (z.b. Pig)
• Verschachtelte Datenstrukturen (Listen, Maps) - Kann ORC auch
No SQL!?
HivePresto
Hive on SparkShark
Hive-on-TezTajo
Lingual
Apache DrillPhoenix
Trafodion Hadapt
BigSQL
CitusDB
Impala
Spark SQL
Splice
Pivotal HAWQ
IBM BigSQLAster SQL/Mapreduce
Oracle Hadoop Connector InfiniDB
Kylin
Stinger initiative
• Hortonworks/Microsoft
• Hive weiterentwickeln
• Geschwindigkeit: Tez, ORC
• SQL-Features, Analytische Queries (OVER)
• Security (GRANT)
Tez und Spark
• YARN: Tez, Spark und Hive nebeneinander
• Tez: Neuer, spezialisierter
• Spark: generischer, viel Monumentum
TEZ HiveSpark
Spark MR
YARN
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
FeaturesImpala Hive 0.14 Presto Drill Tajo
SQL HiveQL HiveQL SQL92 ANSI SQL ?Window-function
s
nein yes yes no 0.9
Security Sentry Filesystem+ Hive
- - - (Kerbero
File-formats
RC, Parquet, Text, Seq
vielealle von hive +
connectorn
alle von hive +
connectoren
RC, Parquet, Text,Seq
Nested!Data nein ja via JSON ja no
Doch einige Zahlen
50,91&
34,31&
16,69&
30,96&
39,43&
5,25&9,25&
0,00&
10,00&
20,00&
30,00&
40,00&
50,00&
60,00&
70,00&
Hive&
Shark&
Shark/Cluster&
Impala&
Presto&
Drill&
Tajo&
Resume I
Schnell
Ausgereift
Connectivity
Sprach- UmfangHive
PrestoImpalaDrill
Tez/Spark
Tajo
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?