Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke? · Oracle Hadoop Connector InfiniDB Kylin....

Post on 04-Jun-2018

219 views 0 download

Transcript of Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke? · Oracle Hadoop Connector InfiniDB Kylin....

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

HD

FS

Shuffle

Shuffle

HDFS

HDFS

HD

FS

Map-SideJoin

HDFS

HDFS

HDFS

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

HDFS

HDFS

HDFS

Adressen

HD

FS

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?