SlideShare une entreprise Scribd logo
1  sur  38
#JSS2014 
Les journées 
SQL Server 2014 
Un événement organisé par GUSS
#JSS2014 
Les journées 
SQL Server 2014 
Hive ou la convergence entre 
datawarehouse et Big Data 
Julien Buret 
David Joubert 
Un événement organisé par GUSS
#JSS2014 
Merci à nos sponsors
#JSS2014 
Speakers 
Julien Buret 
Directeur technique 
@julienburet 
David Joubert 
Consultant Data & Analytics 
@Dj_Uber 
www.djuber.net
#JSS2014 
On va parler de 
• Un peu d’Hadoop 
• Beaucoup de Hive 
– Historique 
– Moteurs d’exécution 
– Stockage 
– Optimisation de requêtes 
• Pas mal de démos 
On ne vas pas en parler 
• De tout le reste 
Autres sessions Big Data 
• APS, l’appliance Big Data, Lundi 
à 15h30 
• Big Data et Real Time, Mardi à 
14h 
Agenda
#JSS2014 
Hadoop : un peu d’histoire 
• Framework aidant au développement 
d’application distribué et scalable 
• Projet débuté en 2005 
– Basé sur 2 papiers de Google (GFS & MapReduce) 
• Projet Apache depuis 2009
#JSS2014 
Map Reduce 
class CompositeKeyWritableRSJ implements Writable, 
WritableComparable<CompositeKeyWritableRSJ> { 
// Data members 
private String joinKey;// EmployeeID 
private int sourceIndex;// 1=Employee data; 2=Salary (current) data; 3=Salary historical data 
public CompositeKeyWritableRSJ() { 
} 
public CompositeKeyWritableRSJ(String joinKey, int sourceIndex) { 
this.joinKey = joinKey; 
this.sourceIndex = sourceIndex; 
} 
@Override 
public String toString() { 
return (new StringBuilder().append(joinKey).append("t").append(sourceIndex)).toString(); 
} 
public void readFields(DataInput dataInput) throws IOException { 
joinKey = WritableUtils.readString(dataInput); 
sourceIndex = WritableUtils.readVInt(dataInput); 
} 
public void write(DataOutput dataOutput) throws IOException { 
WritableUtils.writeString(dataOutput, joinKey); 
WritableUtils.writeVInt(dataOutput, sourceIndex); 
} 
public int compareTo(CompositeKeyWritableRSJ objKeyPair) { 
int result = joinKey.compareTo(objKeyPair.joinKey); 
if (0 == result) { 
result = Double.compare(sourceIndex, objKeyPair.sourceIndex); 
} 
return result; 
} 
public String getjoinKey() { 
return joinKey; 
} 
public void setjoinKey(String joinKey) { 
this.joinKey = joinKey; 
} 
public int getsourceIndex() { 
return sourceIndex; 
} 
public void setsourceIndex(int sourceIndex) { 
this.sourceIndex = sourceIndex; 
} 
} 
public class MapperRSJ extends 
Mapper<LongWritable, Text, CompositeKeyWritableRSJ, Text> { 
CompositeKeyWritableRSJ ckwKey = new CompositeKeyWritableRSJ(); 
Text txtValue = new Text(""); 
int intSrcIndex = 0; 
StringBuilder strMapValueBuilder = new StringBuilder(""); 
List<Integer> lstRequiredAttribList = new ArrayList<Integer>(); 
@Override 
protected void setup(Context context) throws IOException, 
InterruptedException { 
// {{ 
// Get the source index; (employee = 1, salary = 2) 
// Added as configuration in driver 
FileSplit fsFileSplit = (FileSplit) context.getInputSplit(); 
intSrcIndex = Integer.parseInt(context.getConfiguration().get( 
fsFileSplit.getPath().getName())); 
// }} 
// {{ 
// Initialize the list of fields to emit as output based on 
// intSrcIndex (1=employee, 2=current salary, 3=historical salary) 
if (intSrcIndex == 1) // employee 
{ 
lstRequiredAttribList.add(2); // FName 
lstRequiredAttribList.add(3); // LName 
lstRequiredAttribList.add(4); // Gender 
lstRequiredAttribList.add(6); // DeptNo 
} else // salary 
{ 
lstRequiredAttribList.add(1); // Salary 
lstRequiredAttribList.add(3); // Effective-to-date (Value of 
// 9999-01-01 indicates current 
// salary) 
} 
// }} 
} 
public class ReducerRSJ extends 
Reducer<CompositeKeyWritableRSJ, Text, NullWritable, Text> { 
StringBuilder reduceValueBuilder = new StringBuilder(""); 
NullWritable nullWritableKey = NullWritable.get(); 
Text reduceOutputValue = new Text(""); 
String strSeparator = ","; 
private MapFile.Reader deptMapReader = null; 
Text txtMapFileLookupKey = new Text(""); 
Text txtMapFileLookupValue = new Text(""); 
@Override 
protected void setup(Context context) throws IOException, 
InterruptedException { 
// {{ 
// Get side data from the distributed cache 
Path[] cacheFilesLocal = DistributedCache.getLocalCacheArchives(context 
.getConfiguration()); 
for (Path eachPath : cacheFilesLocal) { 
if (eachPath.getName().toString().trim() 
.equals("departments_map.tar.gz")) { 
URI uriUncompressedFile = new File(eachPath.toString() 
+ "/departments_map").toURI(); 
initializeDepartmentsMap(uriUncompressedFile, context); 
} 
} 
// }} 
}
#JSS2014 
Hive : un peu d’histoire 
• Projet interne Facebook lancé en 
2007 
• Opensourcé en 2009 
• Aujourd’hui le standard de fait 
pour exécuter du SQL sur Hadoop 
• Disponible sur toute les 
distributions populaires
1. Créer des 
#JSS2014 
Hive fonctionnement globale 
foo/foo1.tx 
t 
Block n 
Block n 
Block n 
Block n 
Hive METASTORE 
FOO -> /dw/foo 
select id, count(0) 
from FOO group 
by id 
jobs en se 
servant des 
metadonnées 
2. Génère et soumet le 
traitement au cluster 
task 
task 
task 
task 
Hive DRIVER
#JSS2014 
Interprétation SQL par Hive 
Parser 
Analyse 
Sémantique 
Générateur 
plan 
d’éxecution 
logique 
Générateur 
plan 
d’éxecution 
physique 
HiveQL 
AST 
QB 
Operator 
Tree 
Task Tree
#JSS2014 
M/R comme moteur d’exécution SQL 
M 
M 
M 
M 
M 
R 
R 
R 
HDFS 
HDFS 
M 
M 
R HDFS M R HDFS 
IO 
IO 
IO
#JSS2014 
Hive
#JSS2014 
Hive Quelle usage ? 
Base de donneés Hive 
Langage SQL HiveQL (SQL-92) 
Update Oui Non 
Delete Oui Non 
Transactions Oui Non 
Index Extensive Non / Limité 
Latence Très faible Elevée 
Volume de données To Po 
Gestion des 
Validation à 
données 
l’ecriture, contrainte 
« schema on read »
#JSS2014 
Hive Quelle usage ? 
PAS DE REQUÊTES 
INTERACTIVES 
Datwarehouse 
DB 
Log 
DB 
SQL/NoSQL 
Réseaux 
sociaux
#JSS2014 
Requête interactive sur Hadoop 
STINGER
#JSS2014 
La fin de M/R pour le sql sur Hadoop 
hive> set hive.execution.engine=tez 
Et bientôt 
hive> set hive.execution.engine=spark
#JSS2014 
Impala 
• MPP 
• Requête SQL « interactive » sur Hadoop 
• Compatible Hive 
– Même API 
– Partage le metastore
#JSS2014 
Spark
• Nouveau moteur d’exécution pour Hadoop 
#JSS2014 
– Supporte M/R + Join 
– Permet de construire des plans d’exécution plus 
complexe que M/R 
• Pipelining 
• Utilisation de la mémoire à la place du disque 
• Multiple Reduce Stage 
Tez
#JSS2014 
Traitement complexe M/R 
M 
M 
M 
M 
M 
R 
R 
IO IO 
R 
HDFS 
HDFS 
M 
M 
R HDFS M R HDFS 
IO 
IO 
IO 
IO IO
#JSS2014 
Traitement complexe M/R 
M 
M 
M 
M 
M 
R 
R 
R 
HDFS 
HDFS 
M 
M 
R HDFS M R HDFS 
IO 
IO 
IO
#JSS2014 
Même traitement avec Tez 
M 
M 
M 
M 
M 
R 
R 
R 
R 
R HDFS 
R
#JSS2014 
Comparaison de performances entre 
Hive en mode MapReduce et Hive en 
mode Tez
#JSS2014 
Hive sur donnée brut 
• Hive peut analyser des formats textuels 
(CSV, texte brut avec RegEx, Json, …) 
– Permet de travailler sur de la donnée brut (log, export 
d’API, …) 
• Parsing couteux 
• Problème de la compression
#JSS2014 
Format Binaire 
• SequenceFile, Avro, … 
– Parsing moins couteux 
• Compression par bloc de données 
• Stockage adapté pour M/R
#JSS2014 
Format orienté colonne 
a b c 
a1 b1 c1 
a2 b2 c2 
a3 b3 c3 
a4 b4 c4 
a5 b5 c5 
a1 b1 c1 a2 b2 c2 a3 b3 c3 
a1 a2 a3 b1 b2 b3 c1 c2 c3 
Représentation logique 
des données 
Stockage ligne 
Stockage colonne 
Metadata + Encoding + 
Compression
#JSS2014 
Format orienté colonne 
• ORC et Parquet 
• Permet un stockage des données en 
colonnes 
• Améliore les performances en lecture, 
écriture et traitement 
• Optimisation du stockage grâce à la 
compression induite par le format
#JSS2014 
Comparaison de performances entre 
stockage natif et stockage colonne
#JSS2014 
Vectorisation 
• Hive traite les données ligne à ligne 
– Inefficace notamment pour des agrégations 
• Mais résolue dans le monde « SQL » par la 
Vectorization 
• Contribution hortonwork + microsoft sur Hive 
– Modification du Query Engine pour traiter des « vecteurs 
de colonnes » 
– Meilleur utilisation du CPU et des caches
#JSS2014 
Hive < 0.14 : RBO 
• Optimisation de l’arbre d’exécution 
– Peu d’optimisations 
• Partition pruning 
• Projection pruning 
• Filter push down 
• Pas d’optimisation lié à la donnée 
– Ordre des tables dans les jointures importants 
– Pas de hint
#JSS2014 
CBO 
• Hive 0.14 with Apache Optiq 
• Impala 2.0
#JSS2014 
Hive 0.14 
• Première optimisation 
– Join reordering 
SQL 
parser 
Semantic 
Analyser 
Logical 
Optimizer 
Physical 
Optimizer 
Map 
Reduce 
Translate 
Optiq 
AST optimisé
#JSS2014 
Hive : Calcul des statistiques 
• Même problématique que pour une base 
SQL 
– Les statistiques doivent être calculé et représentative 
des données
#JSS2014 
Vectorization + CBO
#JSS2014 
Pourquoi parler de convergence ? 
SQL 
Langage de requêtes SQL 
Traitement en mode batch 
Format orienté colonne 
(columnstore index, moteur 
vertipaq) 
Moteur d’exécution basé sur 
des statistiques 
Hive 
Langage de requêtes HiveQL 
Vectorisation 
Format ORC (oriented row 
columnar) 
Query planner
#JSS2014 
Le futur du SQL sur Hadoop 
• SQL-20XX 
– Supporté les fonctions analytics 
– WINDOWS, ROOLUP, CUBE 
• Transaction 
• LLAP 
• Materialized Views 
• Requête multi-datasource 
– Prestodb (Facebook) 
– APS PolyBase 
– Oracle Bigdata
#JSS2014 
Questions
##JJSSSS22001144

Contenu connexe

Tendances

Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop
Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshopMigrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop
Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshopNuxeo
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopBenoît de CHATEAUVIEUX
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic searchJEMLI Fathi
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...MongoDB
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Olivier Grisel
 
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLWebinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLMongoDB
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in ParisTed Drake
 
Tunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriTunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriAymen ZAAFOURI
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementMohamed hedi Abidi
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearchFadel Chafai
 
PostgreSQL, plus qu'une base de données, une plateforme aux multiples usages
PostgreSQL, plus qu'une base de données, une plateforme aux multiples usagesPostgreSQL, plus qu'une base de données, une plateforme aux multiples usages
PostgreSQL, plus qu'une base de données, une plateforme aux multiples usagesOpen Source Experience
 
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)Jean-Pierre Riehl
 
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012David Pilato
 

Tendances (20)

Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop
Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshopMigrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop
Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic search
 
Hadoop unit
Hadoop unitHadoop unit
Hadoop unit
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overview
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009
 
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLWebinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in Paris
 
Tunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriTunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouri
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et Développement
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearch
 
Hadoop unit
Hadoop unitHadoop unit
Hadoop unit
 
PostgreSQL, plus qu'une base de données, une plateforme aux multiples usages
PostgreSQL, plus qu'une base de données, une plateforme aux multiples usagesPostgreSQL, plus qu'une base de données, une plateforme aux multiples usages
PostgreSQL, plus qu'une base de données, une plateforme aux multiples usages
 
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
 
HADOOP + R
HADOOP + RHADOOP + R
HADOOP + R
 
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
 

En vedette

Journées SQL Server 2012 - DAX pour les fans de MDX
Journées SQL Server 2012 - DAX pour les fans de MDXJournées SQL Server 2012 - DAX pour les fans de MDX
Journées SQL Server 2012 - DAX pour les fans de MDXDavid Joubert
 
Gabriel bellocq Dax 2014 diaporama bilan 2008-2014
Gabriel bellocq Dax 2014 diaporama bilan 2008-2014Gabriel bellocq Dax 2014 diaporama bilan 2008-2014
Gabriel bellocq Dax 2014 diaporama bilan 2008-2014gabrielbellocq
 
Dossier de production version2 ameliorée
Dossier de production version2 amelioréeDossier de production version2 ameliorée
Dossier de production version2 amelioréesteph95000
 
edhec workshopleveefonds
edhec workshopleveefondsedhec workshopleveefonds
edhec workshopleveefondsWilliam Caly
 
Dossier de production
Dossier de productionDossier de production
Dossier de productionsteph95000
 
Dossier de production definitif
Dossier de production definitifDossier de production definitif
Dossier de production definitifJohanna Lry
 
Quand Winston Churchill faisait de l'analyse de la valeur...
Quand Winston Churchill faisait de l'analyse de la valeur...Quand Winston Churchill faisait de l'analyse de la valeur...
Quand Winston Churchill faisait de l'analyse de la valeur...Frederic VINDREAU
 
Congrès régional d’automne 2013
Congrès régional d’automne 2013Congrès régional d’automne 2013
Congrès régional d’automne 2013dabou-ch
 
Vr100 133106 contabilidad-1
Vr100   133106 contabilidad-1Vr100   133106 contabilidad-1
Vr100 133106 contabilidad-1karitosanta
 
Cronograma de actividades del año lectivo 2013 2014 de 8 vo a 2do
Cronograma de actividades del año lectivo 2013   2014 de 8 vo a 2doCronograma de actividades del año lectivo 2013   2014 de 8 vo a 2do
Cronograma de actividades del año lectivo 2013 2014 de 8 vo a 2doItalo Orozco
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje ticnilzuhu
 
Contexto misiones de centro de investigación histórica guillermo furlong
Contexto misiones de   centro de investigación histórica guillermo furlongContexto misiones de   centro de investigación histórica guillermo furlong
Contexto misiones de centro de investigación histórica guillermo furlongsusanabartz
 
Presentacion nitcs
Presentacion nitcs Presentacion nitcs
Presentacion nitcs ludiviko
 
Lista de chequeo
Lista de chequeoLista de chequeo
Lista de chequeonuryyy
 
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.
Cronograma de actividades del año lectivo 2013   2014 3 ro bach.Cronograma de actividades del año lectivo 2013   2014 3 ro bach.
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.Italo Orozco
 

En vedette (20)

Journées SQL Server 2012 - DAX pour les fans de MDX
Journées SQL Server 2012 - DAX pour les fans de MDXJournées SQL Server 2012 - DAX pour les fans de MDX
Journées SQL Server 2012 - DAX pour les fans de MDX
 
Gabriel bellocq Dax 2014 diaporama bilan 2008-2014
Gabriel bellocq Dax 2014 diaporama bilan 2008-2014Gabriel bellocq Dax 2014 diaporama bilan 2008-2014
Gabriel bellocq Dax 2014 diaporama bilan 2008-2014
 
Dossier de production version2 ameliorée
Dossier de production version2 amelioréeDossier de production version2 ameliorée
Dossier de production version2 ameliorée
 
Santé et modes de vie
Santé et modes de vieSanté et modes de vie
Santé et modes de vie
 
edhec workshopleveefonds
edhec workshopleveefondsedhec workshopleveefonds
edhec workshopleveefonds
 
Dossier de production
Dossier de productionDossier de production
Dossier de production
 
Dossier de production definitif
Dossier de production definitifDossier de production definitif
Dossier de production definitif
 
Quand Winston Churchill faisait de l'analyse de la valeur...
Quand Winston Churchill faisait de l'analyse de la valeur...Quand Winston Churchill faisait de l'analyse de la valeur...
Quand Winston Churchill faisait de l'analyse de la valeur...
 
Congrès régional d’automne 2013
Congrès régional d’automne 2013Congrès régional d’automne 2013
Congrès régional d’automne 2013
 
Vr100 133106 contabilidad-1
Vr100   133106 contabilidad-1Vr100   133106 contabilidad-1
Vr100 133106 contabilidad-1
 
Informatica
InformaticaInformatica
Informatica
 
Carnestoltes 2015 PRIMER
Carnestoltes 2015 PRIMERCarnestoltes 2015 PRIMER
Carnestoltes 2015 PRIMER
 
Dossier de production
Dossier de productionDossier de production
Dossier de production
 
Cronograma de actividades del año lectivo 2013 2014 de 8 vo a 2do
Cronograma de actividades del año lectivo 2013   2014 de 8 vo a 2doCronograma de actividades del año lectivo 2013   2014 de 8 vo a 2do
Cronograma de actividades del año lectivo 2013 2014 de 8 vo a 2do
 
Sex and the city slideshow2
Sex and the city slideshow2Sex and the city slideshow2
Sex and the city slideshow2
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje tic
 
Contexto misiones de centro de investigación histórica guillermo furlong
Contexto misiones de   centro de investigación histórica guillermo furlongContexto misiones de   centro de investigación histórica guillermo furlong
Contexto misiones de centro de investigación histórica guillermo furlong
 
Presentacion nitcs
Presentacion nitcs Presentacion nitcs
Presentacion nitcs
 
Lista de chequeo
Lista de chequeoLista de chequeo
Lista de chequeo
 
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.
Cronograma de actividades del año lectivo 2013   2014 3 ro bach.Cronograma de actividades del año lectivo 2013   2014 3 ro bach.
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.
 

Similaire à Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data

JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataJSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataGUSS
 
Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?Jean-Pierre Riehl
 
JSS2014 – Cloud et BI, quelle architecture pour 2014 ?
JSS2014 – Cloud et BI, quelle architecture pour 2014 ?JSS2014 – Cloud et BI, quelle architecture pour 2014 ?
JSS2014 – Cloud et BI, quelle architecture pour 2014 ?GUSS
 
Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?Jean-Pierre Riehl
 
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017Jean-Pierre Riehl
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data LakeGUSS
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQLAntoine Augusti
 
SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …
SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …
SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …GUSS
 
SQL Saturday 323 Paris 2014 - HDInsight
SQL Saturday 323 Paris 2014 - HDInsightSQL Saturday 323 Paris 2014 - HDInsight
SQL Saturday 323 Paris 2014 - HDInsightRomain Casteres
 
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013serge luca
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
JSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an aprèsJSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an aprèsGUSS
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
 
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...AZUG FR
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteMicrosoft
 

Similaire à Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data (20)

JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataJSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
 
Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?
 
JSS2014 – Cloud et BI, quelle architecture pour 2014 ?
JSS2014 – Cloud et BI, quelle architecture pour 2014 ?JSS2014 – Cloud et BI, quelle architecture pour 2014 ?
JSS2014 – Cloud et BI, quelle architecture pour 2014 ?
 
Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?Cloud et BI, quelle architecture pour 2014 ?
Cloud et BI, quelle architecture pour 2014 ?
 
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
 
mix-it 2011
mix-it 2011mix-it 2011
mix-it 2011
 
Introduction spark
Introduction sparkIntroduction spark
Introduction spark
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …
SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …
SQLSaturday Paris 2014 - HDInsight : Cas d’usages, Hive, Sqoop, Pig, …
 
SQL Saturday 323 Paris 2014 - HDInsight
SQL Saturday 323 Paris 2014 - HDInsightSQL Saturday 323 Paris 2014 - HDInsight
SQL Saturday 323 Paris 2014 - HDInsight
 
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
JSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an aprèsJSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an après
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Big sql4meetup
Big sql4meetupBig sql4meetup
Big sql4meetup
 
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 

Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data

  • 1. #JSS2014 Les journées SQL Server 2014 Un événement organisé par GUSS
  • 2. #JSS2014 Les journées SQL Server 2014 Hive ou la convergence entre datawarehouse et Big Data Julien Buret David Joubert Un événement organisé par GUSS
  • 3. #JSS2014 Merci à nos sponsors
  • 4. #JSS2014 Speakers Julien Buret Directeur technique @julienburet David Joubert Consultant Data & Analytics @Dj_Uber www.djuber.net
  • 5. #JSS2014 On va parler de • Un peu d’Hadoop • Beaucoup de Hive – Historique – Moteurs d’exécution – Stockage – Optimisation de requêtes • Pas mal de démos On ne vas pas en parler • De tout le reste Autres sessions Big Data • APS, l’appliance Big Data, Lundi à 15h30 • Big Data et Real Time, Mardi à 14h Agenda
  • 6. #JSS2014 Hadoop : un peu d’histoire • Framework aidant au développement d’application distribué et scalable • Projet débuté en 2005 – Basé sur 2 papiers de Google (GFS & MapReduce) • Projet Apache depuis 2009
  • 7. #JSS2014 Map Reduce class CompositeKeyWritableRSJ implements Writable, WritableComparable<CompositeKeyWritableRSJ> { // Data members private String joinKey;// EmployeeID private int sourceIndex;// 1=Employee data; 2=Salary (current) data; 3=Salary historical data public CompositeKeyWritableRSJ() { } public CompositeKeyWritableRSJ(String joinKey, int sourceIndex) { this.joinKey = joinKey; this.sourceIndex = sourceIndex; } @Override public String toString() { return (new StringBuilder().append(joinKey).append("t").append(sourceIndex)).toString(); } public void readFields(DataInput dataInput) throws IOException { joinKey = WritableUtils.readString(dataInput); sourceIndex = WritableUtils.readVInt(dataInput); } public void write(DataOutput dataOutput) throws IOException { WritableUtils.writeString(dataOutput, joinKey); WritableUtils.writeVInt(dataOutput, sourceIndex); } public int compareTo(CompositeKeyWritableRSJ objKeyPair) { int result = joinKey.compareTo(objKeyPair.joinKey); if (0 == result) { result = Double.compare(sourceIndex, objKeyPair.sourceIndex); } return result; } public String getjoinKey() { return joinKey; } public void setjoinKey(String joinKey) { this.joinKey = joinKey; } public int getsourceIndex() { return sourceIndex; } public void setsourceIndex(int sourceIndex) { this.sourceIndex = sourceIndex; } } public class MapperRSJ extends Mapper<LongWritable, Text, CompositeKeyWritableRSJ, Text> { CompositeKeyWritableRSJ ckwKey = new CompositeKeyWritableRSJ(); Text txtValue = new Text(""); int intSrcIndex = 0; StringBuilder strMapValueBuilder = new StringBuilder(""); List<Integer> lstRequiredAttribList = new ArrayList<Integer>(); @Override protected void setup(Context context) throws IOException, InterruptedException { // {{ // Get the source index; (employee = 1, salary = 2) // Added as configuration in driver FileSplit fsFileSplit = (FileSplit) context.getInputSplit(); intSrcIndex = Integer.parseInt(context.getConfiguration().get( fsFileSplit.getPath().getName())); // }} // {{ // Initialize the list of fields to emit as output based on // intSrcIndex (1=employee, 2=current salary, 3=historical salary) if (intSrcIndex == 1) // employee { lstRequiredAttribList.add(2); // FName lstRequiredAttribList.add(3); // LName lstRequiredAttribList.add(4); // Gender lstRequiredAttribList.add(6); // DeptNo } else // salary { lstRequiredAttribList.add(1); // Salary lstRequiredAttribList.add(3); // Effective-to-date (Value of // 9999-01-01 indicates current // salary) } // }} } public class ReducerRSJ extends Reducer<CompositeKeyWritableRSJ, Text, NullWritable, Text> { StringBuilder reduceValueBuilder = new StringBuilder(""); NullWritable nullWritableKey = NullWritable.get(); Text reduceOutputValue = new Text(""); String strSeparator = ","; private MapFile.Reader deptMapReader = null; Text txtMapFileLookupKey = new Text(""); Text txtMapFileLookupValue = new Text(""); @Override protected void setup(Context context) throws IOException, InterruptedException { // {{ // Get side data from the distributed cache Path[] cacheFilesLocal = DistributedCache.getLocalCacheArchives(context .getConfiguration()); for (Path eachPath : cacheFilesLocal) { if (eachPath.getName().toString().trim() .equals("departments_map.tar.gz")) { URI uriUncompressedFile = new File(eachPath.toString() + "/departments_map").toURI(); initializeDepartmentsMap(uriUncompressedFile, context); } } // }} }
  • 8. #JSS2014 Hive : un peu d’histoire • Projet interne Facebook lancé en 2007 • Opensourcé en 2009 • Aujourd’hui le standard de fait pour exécuter du SQL sur Hadoop • Disponible sur toute les distributions populaires
  • 9. 1. Créer des #JSS2014 Hive fonctionnement globale foo/foo1.tx t Block n Block n Block n Block n Hive METASTORE FOO -> /dw/foo select id, count(0) from FOO group by id jobs en se servant des metadonnées 2. Génère et soumet le traitement au cluster task task task task Hive DRIVER
  • 10. #JSS2014 Interprétation SQL par Hive Parser Analyse Sémantique Générateur plan d’éxecution logique Générateur plan d’éxecution physique HiveQL AST QB Operator Tree Task Tree
  • 11. #JSS2014 M/R comme moteur d’exécution SQL M M M M M R R R HDFS HDFS M M R HDFS M R HDFS IO IO IO
  • 13. #JSS2014 Hive Quelle usage ? Base de donneés Hive Langage SQL HiveQL (SQL-92) Update Oui Non Delete Oui Non Transactions Oui Non Index Extensive Non / Limité Latence Très faible Elevée Volume de données To Po Gestion des Validation à données l’ecriture, contrainte « schema on read »
  • 14. #JSS2014 Hive Quelle usage ? PAS DE REQUÊTES INTERACTIVES Datwarehouse DB Log DB SQL/NoSQL Réseaux sociaux
  • 15. #JSS2014 Requête interactive sur Hadoop STINGER
  • 16. #JSS2014 La fin de M/R pour le sql sur Hadoop hive> set hive.execution.engine=tez Et bientôt hive> set hive.execution.engine=spark
  • 17. #JSS2014 Impala • MPP • Requête SQL « interactive » sur Hadoop • Compatible Hive – Même API – Partage le metastore
  • 19. • Nouveau moteur d’exécution pour Hadoop #JSS2014 – Supporte M/R + Join – Permet de construire des plans d’exécution plus complexe que M/R • Pipelining • Utilisation de la mémoire à la place du disque • Multiple Reduce Stage Tez
  • 20. #JSS2014 Traitement complexe M/R M M M M M R R IO IO R HDFS HDFS M M R HDFS M R HDFS IO IO IO IO IO
  • 21. #JSS2014 Traitement complexe M/R M M M M M R R R HDFS HDFS M M R HDFS M R HDFS IO IO IO
  • 22. #JSS2014 Même traitement avec Tez M M M M M R R R R R HDFS R
  • 23. #JSS2014 Comparaison de performances entre Hive en mode MapReduce et Hive en mode Tez
  • 24. #JSS2014 Hive sur donnée brut • Hive peut analyser des formats textuels (CSV, texte brut avec RegEx, Json, …) – Permet de travailler sur de la donnée brut (log, export d’API, …) • Parsing couteux • Problème de la compression
  • 25. #JSS2014 Format Binaire • SequenceFile, Avro, … – Parsing moins couteux • Compression par bloc de données • Stockage adapté pour M/R
  • 26. #JSS2014 Format orienté colonne a b c a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 a5 b5 c5 a1 b1 c1 a2 b2 c2 a3 b3 c3 a1 a2 a3 b1 b2 b3 c1 c2 c3 Représentation logique des données Stockage ligne Stockage colonne Metadata + Encoding + Compression
  • 27. #JSS2014 Format orienté colonne • ORC et Parquet • Permet un stockage des données en colonnes • Améliore les performances en lecture, écriture et traitement • Optimisation du stockage grâce à la compression induite par le format
  • 28. #JSS2014 Comparaison de performances entre stockage natif et stockage colonne
  • 29. #JSS2014 Vectorisation • Hive traite les données ligne à ligne – Inefficace notamment pour des agrégations • Mais résolue dans le monde « SQL » par la Vectorization • Contribution hortonwork + microsoft sur Hive – Modification du Query Engine pour traiter des « vecteurs de colonnes » – Meilleur utilisation du CPU et des caches
  • 30. #JSS2014 Hive < 0.14 : RBO • Optimisation de l’arbre d’exécution – Peu d’optimisations • Partition pruning • Projection pruning • Filter push down • Pas d’optimisation lié à la donnée – Ordre des tables dans les jointures importants – Pas de hint
  • 31. #JSS2014 CBO • Hive 0.14 with Apache Optiq • Impala 2.0
  • 32. #JSS2014 Hive 0.14 • Première optimisation – Join reordering SQL parser Semantic Analyser Logical Optimizer Physical Optimizer Map Reduce Translate Optiq AST optimisé
  • 33. #JSS2014 Hive : Calcul des statistiques • Même problématique que pour une base SQL – Les statistiques doivent être calculé et représentative des données
  • 35. #JSS2014 Pourquoi parler de convergence ? SQL Langage de requêtes SQL Traitement en mode batch Format orienté colonne (columnstore index, moteur vertipaq) Moteur d’exécution basé sur des statistiques Hive Langage de requêtes HiveQL Vectorisation Format ORC (oriented row columnar) Query planner
  • 36. #JSS2014 Le futur du SQL sur Hadoop • SQL-20XX – Supporté les fonctions analytics – WINDOWS, ROOLUP, CUBE • Transaction • LLAP • Materialized Views • Requête multi-datasource – Prestodb (Facebook) – APS PolyBase – Oracle Bigdata

Notes de l'éditeur

  1. DAVID
  2. DAVID
  3. DAVID
  4. DAVID JULIEN
  5. DAVID
  6. DAVID Hadoop n’est pas une base de données. C’est un système de fichiers distribué (HDFS) et un moteur de calcul (MapReduce) D’ailleurs il est très peu performant sur l’analyse des données en temps réel => beaucoup d’évolutions dépendent de cette problématique.
  7. La moitié du code nécessaire à la réalisation d’une jointure Au moins 6 classes java à développer
  8. DAVID Développeurs très bon en SQL, mais pas développeurs JAVA
  9. JULIEN Hive n’est pas un moteur de base de données relationnel sur Hadoop Hive est une application cliente hadoop qui permet de générer des jobs M/R à partir d’un langage, plus haut niveau et plus productif que M/R Hive est composé de 2 principaux modules: - Un metastore qui va stocker les informations sur la structure des données stocké dans HDFS. C’est l’équivalent d’un dictionnaire de données. Il contient notamment la correspondance entre un table et son stockage sur HDFS. - le driver, qui va interpréter le SQL fournit par le client et le transformer en job map. reduce
  10. JULIEN Parser (ANTLR) : parser de hiveql vers un abstract syntax tree Analyse sémantique (en 3 partie) : Génération du plan logique à partir de l’AST (Query Block) Optimisation du plan logique Puis génération du plan d’execution physique: Map reduce http://fr.slideshare.net/nzhang/hive-anatomy
  11. JULIEN
  12. Explain d’une requête simple. Temps d’execution. Create external table
  13. DAVID
  14. DAVID Pattern classique avec MapReduce on récupère toute les données (DB + Log + social network, etc..) On stocke tous dans hadoop On fait les use-cases compliqué ou impossible à faire dans un datawarehouse Par contre difficile d’intérogé les donnnés en interactifs Obliger de remettre ces données dans une base de données classique : Pré aggrégation Duplication des données synchronisation
  15. JULIEN
  16. JULIEN
  17. JULIEN
  18. JULIEN
  19. JULIEN
  20. JULIEN
  21. JULIEN
  22. JULIEN
  23. DAVID Impossible de relire un fichier compresse depuis le milieu Donc pb avec le découpage
  24. DAVID Stockage en ligne par système de clé/valeur, optimisé pour le MapReduce (compris que par hadoop) Peuvent être compressé par valeur ou bloc de données pour limiter les I/O. Pas l’idéal pour Hive car stocké au format ligne. Obligé de lire la ligne complète même si on n’a besoin que d’une colonne.
  25. JULIEN Column-oriented organizations are more efficient when an aggregate needs to be computed over many rows but only for a notably smaller subset of all columns of data, because reading that smaller subset of data can be faster than reading all data. Column-oriented organizations are more efficient when new values of a column are supplied for all rows at once, because that column data can be written efficiently and replace old column data without touching any other columns for the rows. Row-oriented organizations are more efficient when many columns of a single row are required at the same time, and when row-size is relatively small, as the entire row can be retrieved with a single disk seek. Row-oriented organizations are more efficient when writing a new row if all of the row data is supplied at the same time, as the entire row can be written with a single disk seek.
  26. DAVID Contribution hortonworks + Microsoft
  27. JULIEN
  28. JULIEN
  29. JULIEN
  30. JULIEN
  31. DAVID
  32. On parlait des speakers, il y a une chose qui leur tient à cœur !