Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Une introduction à Hive
1. 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 CLAIRMONT
Altic - http://altic.org
charly.clairmont@altic.org
@egwada
2. 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 !
3. 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 !
4. 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
5. 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...
6. 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
SerDe
Thrift Jute JSON..
Execution
Driver
Parser
Planner
DB
WebUI
Optimizer
JDBC ODBCCLI
7. 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.
8. 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
9. 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)
10. 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
11. 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
12. 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;
13. 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’);
14. 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
15. 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 CLAIRMONT
Altic - http://altic.org
charly.clairmont@altic.org
@egwada