Une introduction à Hive
-
Upload
hadoop-user-group-france -
Category
Documents
-
view
1.513 -
download
5
description
Transcript of Une introduction à Hive
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
HUG France SL2013 – Mai 2013
Introduction à HIVE
Hadoop comme Entrepôt de données
Charly CLAIRMONTAltic - http://[email protected]@egwada
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
D'où vient Hive ?
● Chez Facebook manipulation d'une quantité monstre des données chaque jour
● Avoir des alternatives à ● MapReduce● Pig
● Rentabiliser les ingénieurs qui connaissent et maîtrisent SQL !
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
C'est quoi Hive ?
Une infrastructure pour Entrepôt de Données
on peut tout simplement le considérer comme un Data Warehouse !
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Comment ça marche ?
● Hive a pour fondation Hadoop● Hive stocke ses données dans HDFS● Hive compile des requêtes SQL en jobs
MapReduce et les exécute sur le cluster Hadoop
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Hive structure la donnée dans un modèle bien connu : Tables, colonnes, lignes...
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Hive architecture, composants
HDFS
DDL QueriesBrowsing
MapReduce
MetaStore
Thrift API
SerDeThrift Jute JSON..
ExecutionDriver
Parser
Planner
DB
Web U
I
Optimizer
JDBC ODBCCLI
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Hive Architecture, détail composants (1)
● Interface Externe
● fournit deux sortes d'interfaces
– utilisateur● commande line (CLI)● WEB
– programmation (API)● JDBC, ODBC
● Thrift Server expose une API très simple pour exécuter les requêtes HiveQL
● Metastore est un catalogue.
● Tous les autres composants de Hive interagissent avec le Metastore.
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Hive Architecture, détail composants (2)
● Driver
Gère le cycle de vie des requêtes HiveQL durant leur compilation, leur optimisation, et leur exécution
● Compiler
Transforme les requêtes en un plan qui constitue une suite de DAG de job MapReduce
Le Driver soumet les jobs mapReduce individuels depuis le DAG vers le moteur d'exécution selon une séquence
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Hive Architecture, détail composants (3)
● Le Metastore est un catalogue qui contient les metadonnées des tables stockées dans Hive
● Database : espace de nom pour les tables● Table : Métadonnées des tables qui contiennent la liste
des colonnes, leur types, leurs propriétaires, leur emplacements de stockages et les informations de sérialisation
● Partition : chaque partition peut avoir ses propres colonnes, son stockage et sa sérialisation
● Buckets : découpage des partitions (optimisation pour les jointures)
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Cycle de vie d'une requête
● Parser transfome la requête en arbre
● Semantic Analyzer transforme l'arbre en une représentation interne de la requête par bloc
● Logical Plan Generator convertit la représentation interne en un plan logique, c'est-à-dire un arbre d'opérations logiques
● Optimizer parcourt plusieurs fois le plan logique d'opérations pour le rendre plus performant
● Physical Plan Generator convertit le plan logique en un plan physique de DAG de job mapReduce
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
HiveQL, SQL pour Hive
● HiveQL supporte● DDL (Create, Alter, Drop)● DML (load, Insert,Select)● Fonction utilisateurs● Appel à des programmes externe MapReduce
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Création de tables
SHOW TABLES;
CREATE TABLE shakespeare (freq INT, word STRING) ROW FORMAT
DELIMITED FIELDS TERMINATED BY ‘\t’
STORED AS TEXTFILE;
DESCRIBE shakespeare;
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Chargement de données depuis HDFS
LOAD DATA LOCAL INPATH ‘/logs/status_updates’ INTO TABLE status_updates PARTITION (ds=’2013-05-28’);
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale
- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
Sélection / Insertion résultat
FROM (
SELECT a.status, b.school, b.gender
FROM status_updates a
JOIN profiles b ON (a.userid = b.userid and a.ds=’2013-05-28’ )
) subq1
INSERT OVERWRITE TABLE gender_summary PARTITION(ds=’2013-05-28’)
SELECT subq1.gender, COUNT(1) GROUP BY subq1.gender
INSERT OVERWRITE TABLE school_summary PARTITION(ds=’2009-05-28’)
SELECT subq1.school, COUNT(1) GROUP BY subq1.school
Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
HUG France SL2013 – Mai 2013
Introduction à HIVE
Merci !
Charly CLAIRMONTAltic - http://[email protected]@egwada