HUGFR : Une infrastructure Kafka & Storm pour lutter contre les attaques DDoS...
HCatalog
1. HUG France #3 - 28 juin 2012
HCatalog
Couche de gestion des métadonnées pour
Hadoop
Rémy DUBOIS
rdubois_at_talend.com
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/
2. Agenda
• Qu’est que HCatalog?
• HCatalog dans l’écosystème d’Hadoop
• « How to » sans HCatalog
• « How to » avec HCatalog
• HCatalog par l’exemple
• Le futur de HCatalog
• Q/A
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/
3. HCatalog?
• Projet dans l’incubateur d’Apache
• Service de gestion de table et de stockage de données qui permet:
• D’enregistrer et de partager le schéma des données.
• D’ignorer où et comment est stockée la donnée.
• Une interopérabilité entre les différents outils de transformation autour
d’Hadoop.
• La version 0.4 est disponible dans Hortonworks Data Platform V1.0
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/
4. Différents outils de transformation
• Early adopters
Map/Reduce • Orienté performance
• ETL
Pig • Data modeling
• Algorithmes itératifs
• Analyses
Hive • Connecteurs vers des outils de BI.
Choix du meilleur outils pour un cas d’utilisation donné.
Difficile pour les utilisateurs de partager leurs données.
5. Comparaison des outils
Map/Reduce Pig Hive
Record format Key/Value pairs Tuples Record
Data model User defined int, float, string, int, float, string, maps,
bytes, maps, tuples, structs, lists
bags
Schema Encoded in app Declared in script or Read from metadata
read by loader
Data location Encoded in app Declared in script Read from metadata
Data format Encoded in app Declared in script Read from metadata
• Les utilisateurs Pig et MR doivent connaître beaucoup d’information
pour écrire leurs applications.
• Quand le schéma de donnée, l’emplacement, ou le format changent, les
applications Pig et MR doivent être re-écrites, re-testées et re-déployées.
• Les utilisateurs Hive doivent charger les données de PIG/MR pour y avoir
accès.
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/
6. L’Ecosystème d’Hadoop
MapReduce Hive Pig
SerDe
InputFormat/ InputFormat/ Load/
Metastore Client
OuputFormat OuputFormat Store
HDFS
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/
8. Comparaison des outils avec HCatalog
Fonctionnalité Map/Reduce + HCat Pig + HCat Hive
Record format Record Tuples Record
Data model int, float, string, maps, int, float, string, bytes, int, float, string, maps,
structs, lists maps, tuples, bags structs, lists
Schema Read from metadata Read from metadata Read from metadata
Data location Read from metadata Read from metadata Read from metadata
Data format Read from metadata Read from metadata Read from metadata
• Les utilisateurs Pig/MR peuvent lire le schéma depuis les métadonnées.
• Les utilisateurs Pig/MR n’ont plus à se soucier ni de l’emplacement des
données, ni du format des données.
• Accès aux données des autres utilisateurs dès qu’elles sont commitées.
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/
9. Un exemple avec Pig
Imaginons que nous voulons compter le nombre de fois qu’un utilisateur a visité
chaque URL:
raw = load '/data/rawevents/20120530' as (url, user);
botless = filter raw by myudfs.NotABot(user);
grpd = group botless by (url, user);
cntd = foreach grpd generate flatten(url, user), COUNT(botless);
store cntd into '/data/counted/20120530';
Avec HCatalog:
raw = load 'rawevents' using HCatLoader();
botless = filter raw by myudfs.NotABot(user) and ds == '20120530';
grpd = group botless by (url, user);
cntd = foreach grpd generate flatten(url, user), COUNT(botless);
store cntd into 'counted' using HCatStorer();
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/
10. Une API REST pour HCatalog: TEMPLETON
• REST Endpoints: accès aux informations:
• Des bases de données
• Des tables
• Des partitions
• Des colonnes
• Opérations REST:
• PUT pour créer des objets ou les mettre à jour.
• GET pour lister des objets ou les décrire.
• DELETE pour supprimer des objets.
GET http://hostname:50111/templeton/v1/ddl/database/default/table
Hadoop/
HCatalog
{
"tables": ["counted","processed",],
"database": "default“
}
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/
11. #3 HUG France 28 juin 2012
Démonstration
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/
12. #3 HUG France 28 juin 2012
Le futur de HCatalog
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/
13. Lire et écrire les données en parallèle
• Ce que veulent les utilisateurs:
• Lire et écrire leurs enregistrements en parallèle entre Hadoop et leur système
parallèle.
• Indépendamment du langage.
• Sans connaissance particulière sur le format des fichiers Hadoop.
• Ce qui existe aujourd’hui:
• WebHDFS
• Peut traiter les données en parallèle.
• Indépendant du langage.
• Ne traite que les bytes et ne comprend pas les formats Hadoop.
• Sqoop
• Peut traiter les données en parallèle.
• Comprend les différents formats des fichiers Hadoop.
• Requiert un connecteur JDBC.
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/
14. HCatReader et HCatWriter
getHCatReader
Input splits Master HCatalog
HCatReader
read
Slave Iterator<HCatRecord>
read
Slave Iterator<HCatRecord> HDFS
read
Slave Iterator<HCatRecord>
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/
15. Hive JDBC/ODBC aujourd’hui
Issue: Nécessité d’avoir le code Hive sur le client
JDBC Client
Hive Server Hadoop
Issues:
•Concurrence
•Sécurité
•Extensibilité
ODBC Client
Issue: La version Open Source n’est pas simple à utiliser
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/
16. Proposition ODBC/JDBC
JDBC Client
Fournissent des implémentations REST Server
Open Source robustes Hadoop
• Crée le job à l’intérieur du cluster.
• Exécute le job avec les droits de l’appelant.
• Supporte la sécurité
ODBC Client
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/
17. #3 HUG France 28 juin 2012
Questions
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/