Wer gewinnt das SQL-Rennen auf der Hadoop

Werbung
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?
Herunterladen