DAVID.

Slides:



Advertisements
Présentations similaires
Optimisation SQL Server
Advertisements

Exposés logiciels, systèmes et réseaux
Montée en charge avec SQL Server 2005: bonnes pratiques & performances
19 septembre 2006 Tendances Logicielles IBM Rational Data Architect Un outil complet de modélisation et de conception pour SGBD Isabelle Claverie-Berge.
Découverte automatique de mappings fondée sur les requêtes dans un environnement P2P Présenté Par: Lyes LIMAM Encadré Par: Mohand-Said Hacid.
MySQL I / Présentation. II / Administration et Outils.
PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
Intégrer vos données avec.
3ème édition.
Sélection automatique d’index et de vues matérialisées
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
Licence GNU FDL - Version 1.5
SSIS Design Patterns David Joubert Thomas Ricquebourg.
To Tune or not to Tune? To Tune or not to Tune? A Lightweight Physical Design Alerter Costa Jean-Denis Le Yaouanc Aurélie Mécanismes de SGBD 2007.
Le langage PHP 5.
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.
Principes de persistance dans les applications orienté objet
Les Webcasts Groupe des Utilisateurs SQL Server Avril 2014 – Statistiques Incrémentales Fred Pichaut – Microsoft Senior.
JDBC ou comment manipuler une base de données en Java ?
Services fournis par le SI et technologies associées
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Intégration ActiveXML - Xyleme
Framework Play 2.0 Démonstration du proof of concept
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France.
Structures de données IFT-10541
OPTIMISATION DE BASE DE DONNEES ORACLE
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Les Composants de l’architecture Oracle
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Créer des packages.
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Fonctionnalités et limites d’outils d’indexation et de recherche.
#JSS2014 Les journées SQL Server 2014 Un événement organisé par GUSS.
Module 12 : Implémentation de procédures stockées.
{ Windows et PHP Un couple qui évolue Pierre Couzy – Microsoft France
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
Gérer l'instance Oracle
22 Azure: comment migrer une application 08/02/2010 Sébastien Pertus, BeWise Thomas Conté, Microsoft.
Ceci est une session expert Cette session est déconseillée aux novices des moteurs Analysis Services 2000 ou 2005 La session « Découverte de Analysis.
Le Langage SQL Introduction. 2 Historique du Langage SQL E. F. CODD : premiers articles dans les années 70 IBM crée le langage SEQUEL (Structured English.
L’offre décisionnel IBM
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Module 1 : Vue d'ensemble de Microsoft SQL Server
SQLSaturday 323 – Paris 2014 HDInsight Cas d'usages, Hive, Sqoop, Pig,...
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Miguel Garzon CrUise Lab - SITE CSI PROJET 2013 Symmetric Hash Join.
Intégration des Tableaux Multidimensionnels en Pig pour
Dr Mohamed Anis BACH TOBJI
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Les bases de données Séance 8 Jointures.
Étude de systèmes de fichiers distribués Théorie et pratique Cyril Séguin Directeurs de thèse Gaël Le Mahec Alain Cournier Benjamin Depardon c.
HEPIX N. Neyroud 1.
Gestion des documents internes avec SQL Server 2005 Date de publication : janvier 2006.
Tuteur : Jean-Philippe Prost Soutenance de Projet Licence Professionnelle Assistant de Projet Informatique Développement d’Applications E-Business Année.
@GUSS_FRANCE.
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.
1 CEC A.-CHAVANNE Sites Web et bases de données. 2 UNE BASE DE DONNÉES : POURQUOI ? Manipulation de grandes quantités d’information – représentation des.
SQLSATURDAY 420 – PARIS 2015 SQL 2016, UN NOUVEAU SOUFFLE POUR LA B.I. MICROSOFT ON PREMISE ?
Java et les bases de données Etat de l’art 14 juin 2012.
PetaSky: Expérimentations avec HadoopDB et Hive 1 Amin Mesmoudi.
SQLSaturday Paris 2015 SSAS et le moteur relationnel Faire son choix.
SQLSaturday Paris 2015 SSDT-DB pour les sceptiques! Cédric L. Charlier.
Hadoop distributions Hadoop Hadoop est un framework Java libre destiné à faciliter la création d'applications distribuées.
Transcription de la présentation:

DAVID

Hive ou la convergence entre datawarehouse et Big Data Julien Buret David Joubert DAVID

Merci à nos sponsors DAVID

Speakers Julien Buret David Joubert Directeur technique Consultant Data & Analytics @Dj_Uber www.djuber.net DAVID JULIEN

Agenda On va parler de On ne vas pas en parler Un peu d’Hadoop Beaucoup de Hive Historique Moteurs d’exécution Stockage Optimisation de requêtes Pas mal de démos De tout le reste Autres sessions Big Data APS, l’appliance Big Data, Lundi à 15h30 Big Data et Real Time, Mardi à 14h DAVID

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 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.

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) { public int getsourceIndex() { return sourceIndex; public void setsourceIndex(int 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); } // }} La moitié du code nécessaire à la réalisation d’une jointure Au moins 6 classes java à développer

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 DAVID Développeurs très bon en SQL, mais pas développeurs JAVA

Hive fonctionnement globale Hive METASTORE foo/foo1.txt Block n task FOO -> /dw/foo Block n task Créer des jobs en se servant des metadonnées 2. Génère et soumet le traitement au cluster Block n task select id, count(0) from FOO group by id 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 Block n task Hive DRIVER

Interprétation SQL par Hive HiveQL Parser AST Analyse Sémantique QB Générateur plan d’éxecution logique 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 Operator Tree Générateur plan d’éxecution physique Task Tree

M/R comme moteur d’exécution SQL HDFS R IO M IO M R HDFS M R HDFS M IO JULIEN M R HDFS M

Hive Explain d’une requête simple. Temps d’execution. Create external table

Hive Quelle usage ? Base de donneés Hive Langage SQL HiveQL (SQL-92) Update Oui Non Delete Transactions Index Extensive Non / Limité Latence Très faible Elevée Volume de données To Po Gestion des données Validation à l’ecriture, contrainte « schema on read » DAVID

PAS DE REQUÊTES INTERACTIVES Hive Quelle usage ? PAS DE REQUÊTES INTERACTIVES Datwarehouse Réseaux sociaux DB 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 DB SQL/NoSQL Log

Requête interactive sur Hadoop JULIEN STINGER

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 JULIEN

Impala MPP Requête SQL « interactive » sur Hadoop Compatible Hive Même API Partage le metastore JULIEN

Spark JULIEN

Tez Nouveau moteur d’exécution pour Hadoop 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 JULIEN

Traitement complexe M/R HDFS R IO M IO IO IO IO M R HDFS M R HDFS M IO IO JULIEN M R HDFS M

Traitement complexe M/R HDFS R IO M IO M R HDFS M R HDFS M IO JULIEN M R HDFS M

Même traitement avec Tez HDFS R JULIEN M R M

Comparaison de performances entre Hive en mode MapReduce et Hive en mode Tez

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 DAVID Impossible de relire un fichier compresse depuis le milieu Donc pb avec le découpage

Format Binaire SequenceFile, Avro, … Compression par bloc de données Parsing moins couteux Compression par bloc de données Stockage adapté pour M/R 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.

Format orienté colonne Représentation logique des données Stockage ligne a1 b1 c1 a2 b2 c2 a3 b3 c3 a b c a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 a5 b5 c5 Stockage colonne a1 a2 a3 b1 b2 b3 c1 c2 c3 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. Metadata + Encoding + Compression

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

Comparaison de performances entre stockage natif et stockage colonne

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 DAVID Contribution hortonworks + Microsoft

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 JULIEN

CBO Hive 0.14 with Apache Optiq Impala 2.0 JULIEN

Hive 0.14 Première optimisation Join reordering SQL parser Semantic Analyser Logical Optimizer Physical Optimizer Map Reduce JULIEN Translate AST optimisé Optiq

Hive : Calcul des statistiques Même problématique que pour une base SQL Les statistiques doivent être calculé et représentative des données JULIEN

Vectorization + CBO

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 DAVID

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

Questions

http://GUSS.Pro/jss Les évaluations des sessions, c’est important !! …Et en plus on peut gagner des cadeaux http://GUSS.Pro/jss On parlait des speakers, il y a une chose qui leur tient à cœur !