Haddop VF [PDF]

  • Author / Uploaded
  • Nour
  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Hadoop et son écosystème El Houssaine AIT BEN AMAR [email protected]

E.AIT BEN AMAR

Présentation de l’écosystème Hadoop § Hadoop est une plateforme qui utilise une architecture répartie. § C’est l’addition de la capacité de stockage et de traitement de chacun des nœuds, qui permet d’offrir un espace de stockage et une puissance de calcul pouvant traiter des volumes de données de plusieurs téraoctets ou pétaoctets. § L’écosystème Hadoop désigne le framework qui implémente le modèle de calcul MapReduce et fournit un système de fichiers distribué redondant, optimisé et fiable pour la gestion des fichiers de données volumineux (HDFS) ainsi que l’ensemble des outils permettant d’exploiter ce framework.

Pourquoi Hadoop ? § Traiter de larges jeux de données § Tolérance à la panne § Il coûte très cher d'incorporer la fiabilité au sein de chaque application § Efficace meme sur une infrastructure commode

Hadoop § Leprojet Hadoopconsisteen deuxgrandesparties: § Stockagedesdonnées: HDFS(HadoopDistributed FileSystem) § Traitement desdonnées :MapReduce § Principe: § Diviser lesdonnées § Les sauvegardersur une collection de machines,appelées cluster § Traiter les donnéesdirectement là où elles sont stockées,plutôt que de lescopier à partir d’un serveurdistribué § Il est possibled’ajouter desmachinesàvotre cluster,aufur et à mesure que les donnéesaugmentent

Hadoop: Unnouveau paradigme q Traitement àgrande échelle et haute performance v Peutévoluer de 10 nœudsà 10,000nœuds v Plus facile, gratuit,ouvert q Efficace § Puissancede computationCPU,mémoire § Stockagesur disqueslocal q Nouveau § De nouvellesfondations q Actuel § Presquetous lesleadersdu web2.0 § Lagrande entreprise Fortune500

HadoopestRobuste! q Une solutionlogicielle q Ratio coût-puissance intéressant q Évolutif On peut toujours ajouter des nœuds pour plus de capacités Ø Computation Ø Stockage q Général Ø S’applique à une variété de problèmes utiles Ø Programmation parallèle simplifiée q Pasde barrières pour commencer Ø Pas de schémaou de design requis. Ø Chargerdes fichiers « raw » et lancer une applications

Présentation de l’écosystème Hadoop

Hadoop Distributed File System (HFDS) § HDFS (HADOOP Distributed File System) est le système de gestion de fichiers distribués d’Hadoop en charge du stockage des données dans le cluster. § Il permet l'abstraction de l'architecture physique de stockage, afin de manipuler un système de fichiers distribués comme s'il s'agissait d'un disque dur unique. § Le fonctionnement de HDFS est assuré par deux types de nœuds : • Le NameNode qui est un nœud maître et qui dispose d’une machine dédiée pour diriger les DataNode. • Le DataNode est un composant qui stocke et restitue les blocs de données. C’est un nœud esclave implémenté sur chaque machine du cluster qui n’est pas un nœud maître.

9

Hadoop Distributed File System (HFDS) q HDFS (HADOOP Distributed File System) est le système de gestion de fichiers distribués d’Hadoop en charge du stockage des données dans le cluster. v Il permet l'abstraction de l'architecture physique de stockage, afin de manipuler un système de fichiers distribués comme s'il s'agissait d'un disque dur unique. v Le fonctionnement de HDFS est assuré par deux types de nœuds : Ø Le NameNode qui est un nœud maître et qui dispose d’une machine dédiée pour diriger les DataNode. Ø Le DataNode est un composant qui stocke et restitue les blocs de données. C’est un nœud esclave implémenté sur chaque machine du cluster qui n’est pas un nœud maître.

MapReduce q Framework Open Source Java, permet la manipulation des données dans un environnement distribué. q Il est composé de deux étapes principales : v L’étape de map qui va permettre d’effectuer des actions là où sont stockées les données et fournir, en sortie, une liste de clés valeurs. v L’étape de reduce qui va regrouper les résultats des map en fonction de clés et effectuer les actions finales (les actions sur les valeurs).

HBase q Une base de données non relationnelle distribuée. q Elle a la particularité d’utiliser les données directement dans HDFS sans passer par des tâches. q Elle présente donc des caractéristiques assez similaires à celles de HDFS (capacité à gérer des volumes de données de plusieurs Po, forte tolérance de panne…). q Elle est bien adaptée pour gérer des données parsemées comme par exemple une table de plusieurs milliers de colonnes avec une majorité de cellules vides.

Hive q Un outil développé par Facebook qui permet d’utiliser Hadoop par le biais de requêtes HiveQL. q Ce langage est proche du SQL. q Il permet de construire un modèle de données relationnelles basé sur les données contenues dans HDFS. q Ce modèle de données est stocké dans un métastore qui gère la définition des tables ainsi que les métadonnées.

Pig q Un outil développé par Yahoo qui permet d’exécuter des jobs MapReduce en utilisant un langage de scripting (PigLatin). q Les scripts PigLatin permettent de travailler sur des données contenues dans HDFS. q Ces données sont traitées par MapReduce qui retourne le résultat de ses calculs à Pig.

Hue q Un outil permettant d’obtenir une interface graphique de Hadoop. q Cette interface graphique comprend un navigateur de fichiers permettant d’accéder à HDFS, un navigateur de job MapReduce, un navigateur HBASE ainsi qu’un éditeur de requête pour Hive et Pig.

Flume q Un outil permettant d’injecter de gros volumes de données, en temps réel dans HDFS. q Cet outil est capable de « streamer » des données depuis n’importe quelle source pour les ajouter dans Hadoop. q Flume est évolutif (les performances peuvent être accrues en ajoutant des nœuds) et extensible (intègre des données en provenance de sources variées).

Hadoop :Les Distributions § Lesprincipaux

17

Les Distributions q Les principaux

Hortonworks q Il est le seul fournisseur qui utilise 100% du projet Open Source Apache Hadoop sans ses propres (non-open) modifications. q Il est le premier vendeur à utiliser les fonctionnalités Apache HCatalog pour des services de métadonnées. q Par ailleurs, leur initiative Stinger optimise massivement le projet Hive. q Il offre un très bon bac à sable, facile à utiliser pour commencer. q Il a développé et committé des améliorations au niveau du cœur qui rend Apache Hadoop exécutable nativement sur les plates-formes Microsoft Windows incluant Windows Server et Windows Azure.

Hortonworks

Cloudera q La distribution de loin la plus installée avec le plus grand nombre de déploiements référencés. q Un outillage puissant pour le déploiement, la gestion et le suivi est disponible. q Impala est développée par Cloudera pour offrir des traitements en temps réel de Big Data.

Cloudera

MapR q Utilise quelques concepts différents de ses concurrents, en particulier du support pour un système de fichiers Unix natif au lieu de HDFS (avec des composants non Open Source), pour une meilleure performance et une facilité d’utilisation. q Les commandes natives Unix peuvent être utilisées à la place des commandes Hadoop. q Il se différencie de ses concurrents avec des fonctionnalités de haute disponibilité comme les snapshots, la réplication ou encore le basculement avec état (« stateful failover »). q L’entreprise est aussi à la tête du projet Apache Drill, un projet Open Source réinventé à partir de Dremel de Google pour des requêtes de type SQL sur des données Hadoop afin d’offrir des traitements temps réels.

MapR

Choix de la distribution Comment choisir une solution Hadoop? q Modèle économique (Open Source,Commercial..). q Lescomposants. q Maturité de la solution, le support, la documentation, le retour d'expériences. q Lerapport avecHadoop, la rapidité desévolutions. q Partenariats (hébergeurs…),compatibilité.

Lucene, Solr q Solr est un serveur de recherche d'entreprise permettant de centraliser les opérations d'indexation et de services de résultats. q Il est capable de communiquer avec les autres applications via de nombreux protocoles basés sur des standards ouverts, il dispose également d’une interface d’administration en mode Web. q L’une des caractéristiques majeures de Lucene est sa capacité à indexer les contenus par champs. q Solr permet de tirer pleinement parti de cette fonctionnalité. Ce fonctionnement permet une gestion beaucoup plus fine de la pertinence et de la recherche avancée.

Solutions alternatives

ARCHITECTURE ET UTILISATIONS DES COMPOSANTS HADOOP HDFS

HDFS: Hadoop Distributed File System

HDFS q Un système de fichiers distribué, extensible et portable,écrit en Java q Permet de stocker de très gros volumes de données sur un grand nombre de machines (nœuds) équipées de disques durs banalisés (cluster). q Quand un fichier mydata.txt est enregistré dans HDFS, il est décomposé en grands blocs (par défaut 64Mo), chaque bloc ayant un nom unique: blk_1, blk_2...

Architecture q Chaque bloc est enregistré dans un nœud différent du cluster. q DataNode : démon sur chaque nœud du cluster. q NameNode :

DN

Ø Démon s’exécutant sur une machine séparée Ø Contient des métadonnées, Ø Permet de retrouver les nœuds qui exécutent les blocs d’un fichier.

Architecture Si l’un des nœuds a un problème,les données seront perdues q Hadoopréplique chaque bloc 3 fois q Il choisit 3 nœuds au hasard, et place une

copie du bloc dans chacun d’eux q Si le nœud est en panne,le NN le détecte, et s’occupe de répliquer encore les blocs qui y étaient hébergéspour avoir toujours 3 copies stockées q Concept de RackAwareness (rack = baie de stockage)

Architecture Si le NameNode a un problème ? qLes données sont perdues à jamais

Ø Si c’est un problème d’accès(réseau), les données sont temporairement inaccessibles

Architecture Pour éviter cela: q le NameNode sera dupliqué, non seulement sur son propre disque, mais également quelque part sur le système de fichiers du réseau. q Définition d’unautre

NN(Secondary node) q Reprendrele travail si le NameNode actif est défaillant

Exemple de fonctionnement • • • • •

Le client hadoop indique au namenode qu'il souhaite écrire un bloc. Le namenode indique au client hadoop le datanode à contacter. Le client hadoop envoie le bloc au datanode. Les datanodes répliquent les blocs entre eux. Le cycle se répète pour le bloc suivant.

Exemple de fonctionnement • Le client hadoop indique au namenode qu'il souhaite lire un fichier. • Le name node indique au client hadoop la taille du fichier ainsi que les différents data nodes contenant les blocs qui composent ce fichier. • Le client hadoop récupère chacun des blocs sur l'un des data nodes. • Si un des datanodes est indisponible, Le client hadoop en contacte un autre.

HDFS : commandes shell Il y a environ 30 commandes pour manipuler HDFS. Lancer les commandes HDFS : hadoop fs • -cat : affiche le contenu d'un fichier • -text : comme cat mais sait afficher des données compressées • -chgrp,-chmod,-chown : modification des permissions • -put,-get,- copyFromLocal,-copyToLocal : import / export entre le système de fichier local et HDFS • -ls, -lsr : liste les fichiers / répertoires • -mv,-moveFromLocal,-moveToLocal : déplace les fichiers • -stat : informations statistiques sur les ressources (taille des blocs, nombre de blocs, type de fichiers, etc.)

HDFS : commandes shell Exemples de manipulations :

$ hadoop fs –ls /user/brian/ $ hadoop fs -lsr $ hadoop fs –mkdir notes $ hadoop fs –put ~/training/commands.txt notes $ hadoop fs –chmod 777 notes/commands.txt $ hadoop fs –cat notes/commands.txt | more $ hadoop fs –rm notes/*.txt

ARCHITECTURE ET UTILISATIONS DES COMPOSANTS HADOOP MAPREDUCE LE DESIGN PATTERN DE RÉFÉRENCE DES CALCULS DISTRIBUÉS

MapReduce q Map § -> § Application d'une fonction sur chaque donnée de départ § k et k2 : pas nécessairement dans le même espace, ni le même nombre q Shuffle § Tri des résultats par clef i.e. on regroupe les v2 qui ont la même k2 q Reduce § Application d'une fonction de réduction sur tous les groupes

Exécution d’un traitement MapReduce q Map § Itérer sur un grand nombre d’enregistrements. § Extraire quelque chose ayant un intérêt pour chacun d’eux. q Reduce § Regrouper et trier les résultats intermédiaires. § Agréger ces résultats. § Générer le résultat final.

Exécution d’un traitement MapReduce q Traitement parallélisé Ø Le nombre de « maps » est déterminé par le nombre de blocks DFS du fichier d’entrée. Ø ~10-100 maps/node q Le nombre de « reduces » est par défaut 1 sinon peut être renseigné dans le programme reduce Ø ~1000 X taille du buffer

Exécution d’un traitement MapReduce

Exécution d’un traitement MapReduce v Le Client soumet un job au JobTracker v Le JobTracker interroge le NameNode pour localiser les données v Le JobTracker localise des TaskTracker près des données v Le JobTracker soumet des tâches aux TaskTrackers v Le TaskTracker notifie la terminaison au JobTracker v Le Client polle le JobTracker pour avoir l'état de son job

Map Reduce:Exemple

Comptage des mots avec Java et Hadoop

Hadoop1.0 => Hadoop2.0

YARN q Il est possible de séparer Hadoop en deux grandes entités distinctes :

o Le stockage de données via HDFS, o Le traitement de données distribué,principalement porté par MapReduce. q YARN est une refonte complète de cette deuxième partie du framework et a été écrit afin de répondre à plusieurs limitations majeures d'Hadoop.

YARN q Il représente une refonte du JobTracker (le service en charge du lancement et du suivi des tâches sur le cluster Hadoop). q Les évolutions apportées ont plusieurs objectifs, dont le principal est une meilleure scalabilité de l'ensemble. q À ce titre, le JobTracker tel que nous le connaissions a disparu et été scindé en deux composants : v ResourceManager : l'ordonnanceur, qui est responsable de la priorisation des tâches et de l'allocation aux différents nœuds du cluster, v ApplicationManager : présent sur chaque nœud, il gère le cycle de vie d'une tâche acceptée par un nœud.

Yarn qLe ResourceManager: v Il remplace le JobTrackerdu point de vue du client qui soumet desjobs (ou plutôt desapplications en Hadoop2) à un cluster Hadoop. v Deux tâches distinctes à accomplir:

Ø Scheduler Ø ApplicationsManager

Yarn Le Scheduler: Ø Le Scheduler estresponsable de l’allocation des ressources des applications tournant sur le cluster. Ø Il s’agituniquement d’ordonnancement et d’allocation de ressources. Ø Les resources allouées auxapplications sont appelées desContainers. § Un Container désigne un regroupement de mémoire,de CPU, d’espace disque, de bande passante réseau, …

Yarn ApplicationsManager : Ø Lanceret au besoin relancer des jobs Ø Négocier les Containers nécessairesauprès du Scheduler Ø Superviser l’état et la progressiondes jobs.

Yarn

Exemple import java.io.IOException; import java.util.StringTokenizer;

q WordCount Ø dénombrement des occurrences

import import import import import import import import import

org.apache.hadoop.conf.Configuration; org.apache.hadoop.fs.Path; org.apache.hadoop.io.IntWritable; org.apache.hadoop.io.Text; org.apache.hadoop.mapreduce.Job; org.apache.hadoop.mapreduce.Mapper; org.apache.hadoop.mapreduce.Reducer; org.apache.hadoop.mapreduce.lib.input.FileInputFormat; org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCount { public static class TokenizerMapper extends Mapper{

des mots

private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } }

Ø Les k et v des doivent être Writable pour être

} public static class IntSumReducer extends Reducer { private IntWritable result = new IntWritable();

sérialisable par Hadoop

public void reduce(Text key, Iterable values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); }

Ø Les clef (k) doivent être WritableComparable pour le

} public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); }

tri lors du Shuffle }

A. Denis – ENSEIRB

55

Exemple q Map: WordCount Map : génère une paire pour chaque mot public static class TokenizerMapper extends Mapper{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } }

Exemple q Reduce: WordCount Reduce : génère un total pour chaque mot public static class IntSumReducer extends Reducer { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } }

Exemple – Assemblage du Job Classes pour :

q Input, Output : classes de sérialisation, chemin q Map et Reduce q Optionel : class Combiner Ø Reduce localement sur chaque noeud avant le Shuffle

Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1);

ARCHITECTURE ET UTILISATIONS DES COMPOSANTS HADOOP HBASE

HBase

60

HBase

HBase 2006 - Google sort son papier sur BigTable 2007 - Version prototype d'HBase / contribution à Hadoop - Première version d'HBase 2008 - Hadoop devient un top-level project à la fondation apache et HBase un sous-projet 2010 - HBase devient un top-level project à la fondation apache

62

HBase q q q q q q

Distribuée Orientée colonne Multidimensionnelle Haute Disponibilité Haute Performance Système de stockage

64

HBase •

HBase est un système de gestion des données pour un environnement distribué qui doit être couplé au gestionnaire de fichiers Hadoop.



HBase gère la partie logique, tandis qu'Hadoop gère la partie physique.



C'est un modèle de stockage Big Data orienté colonne, basé sur le principe de BigTable de Google.

66

HBase §

Les données sont gérées au sein de grande tables (appelées Htable) composées de lignes (nomées row) et de famille de colonnes (Family).

§

Les familles de colonnes sont sous-divisées en colonnes (qualifier).

§

Les lignes sont des identifiants dont la valeur est unique, soit l'équivalent de la clé primaire dans le mode relationnel.

: § •Comparaison avec un SGBDR Htable => ensemble de toutes les tables de la base • family => une table • qualifier => un attribut row => clé primaire • De fait que toutes les données sont logiquement placées dans la même table, les jointures sont donc inutiles. 68

HBase Architecture : Aspect logique

70

Architecture : Aspectphysique Avant d'être stockées à travers le cluster, les données à stocker transitent par un Framework fourni avec Hbase : Le Zookeeper. Il coordonne la destination d'archivage des données dans un système distribué. Ces données sont ensuite réparties sur les différents serveurs ( region ) du cluster, où elles sont triées et compactées. Pour une meilleure gestion de l'espace mémoire, les données sont toujours sauvegardées sous forme de bytes. ELles sont stockées dans les regionservers sous forme de blocs de données ( les storefiles) d'une taille configuée par défaut de 64 ( configuration faite via Hadoop) 72

Architecture : Aspectphysique

v La répartition des données sur les regionserveurs se fait

en 2 étapes : §Les lignes d'une Htable sont scindées en paquets réguliers par le regionserveur. §chaque paquet est dirigé chacun vers un serveur-esclave où il est de nouveau divisé par le memestore selons les colonnes de la Htable. vLes données issues de la même famille de colonne sont alors stockées dans un même storefile ( ou datafile pour hadoop )

74

Comment fonctionneHBase? Deux types de nœuds §M§Master (un à la aster : fois) § §Gère les opérations du cluster Affectation, répartition de la charge, fractionnement §Haute disponibilité avec Zookeeper

§R egionServer §héberge les tables, exécute les lectures, écritures §les Clients dialoguent directement avec eux pour les lectures / écritures

76

HBase Architecture

78

HBase Architecture

80

HBase Architecture

§

La répartition des données sur les « RegionServer » se fait en 2 étapes :

• • §

Les lignes d'une HTable sont scindées en paquets réguliers par le RegionServer, Chaque paquet est dirigé chacun vers un serveur-esclave où il est de nouveau divisé par le Memstore selon les colonnes de la HTable.

Les données issues de la même famille de colonne sont alors stockées dans un même Storefile (ou Data File pour Hadoop)

82

HBase Architecture

84

HBase Architecture Elément critique § Les éléments influent sur la vitesse de la lecture des données. Choix des colonnes : § Requête utilisant une seule colonne de familles. § Taille du nom de colonne de familles le plus petit possible § Exemple : familles de colonnes = ( température d'un composant ) => t = ( état activé ou nom du composant ) => e

86

Utilisation de la base de données NoSQL (familles de colonnes, versions) § Entrerdansle shellde HBase: hbaseshell § Listerle contenudestablesHBase: list § Décrireunetable HBase: describe‘Table’ § Liretouteslesdonnéesd’unetable HBase:

scan‘Table’

88

Utilisation de la base de données NoSQL (familles de colonnes, versions) § Créerunetable TavecsesfamillesdecolonnesF1et F2: create ‘T’,‘F1’,’F2’ § Déverrouillerunetable : disable ‘T’ § Déverrouillertouteslestables : disable_all ‘ *.*’ § Ajouterunefamilledecolonneà une table alter ‘T’, NAME=>‘F3’

90

Utilisation de la base de données NoSQL (familles de colonnes, versions) § Reverrouillerunetable : enable ‘T’ § Ajouterdesvaleursdansunetable : put 'T', 'R1','F1:C1','V1' § Lireune ligne avectoutessesvaleurs: disable ‘T’ § Savoirsila tableexist:

exist‘T’

92

Utilisation de la base de données NoSQL (familles de colonnes, versions) § Lire des familles de colonnes : scan‘T’, {COLUMNS=>[‘F1’,’F2’]} § Lire des colonnes :

scan ‘T’, {COLUMNS => [‘F1:C3’,’F2:C1’]} § Lire des colonnes à partir d’une ligne précise :

scan ‘T’, {COLUMNS => [‘F1:C3’,’F2:C1’],STARTROW=> ‘R2’} § Lire des colonnes jusqu’à une ligne précise :

scan ‘T’, {COLUMNS => [‘F1:C3’,’F2:C1’],STOPROW=> ‘R6’}

94

Utilisation de la base de données NoSQL (familles de colonnes, versions) § Lire une ligne avec toutes les valeurs : get ‘T’,‘R1’ § Lire les valeurs d’une ligne et d’une famille de colonnes : get ‘T’,‘R1’,’F1’ § Lire les valeurs d’une ligne et d’une colonne : get ‘T’,‘R1’,’F1:C3’ § Vider une table : truncate ‘T’

96

Utilisation de la base de données NoSQL (familles de colonnes, versions) § Supprimer une table : drop ‘T’ § Supprimer une famille de colonnes : alter ‘T’, delete=>’F1’ § Supprimer une ligne entière : deleteall ‘T’,’R1’ § Supprimer une valeur via ses coordonnées : delete ‘T’,’R1’,’F1:C2’

98

Exemple

ID_Client: Clef, ColumnFamily1: Qualifier1=Valeur,Qualifier2= Valeur …ColumnFamily2: Qualifier1=Valeur,Qualifier2=Valeur… ID_Client : Clé, adresse : ….. , client, ….., produit

10 0

ARCHITECTURE ET UTILISATIONS DES COMPOSANTS HADOOP HIVE

10 2

Hive Architecture §

Entrepôt de données pour Hadoop Langage semblable à SQL, appelé HiveQL (HQL ).

§

N’est pas conçu pour :



Le traitement des transactions en ligne,



Des requêtes temps réel.

10 4

Hive Architecture

10 6

Utilisation du langage Hive QL (tables, tables externes,partitions) HiveQL supporte q DDL (Create, Alter, Drop) q DML (Load, Insert, Select) q Fonctions utilisateurs q Appel à des programmes externe MapReduce

10 8

Utilisation du langage Hive QL (tables, tables externes,partitions) Utilisation d’opérations Hive Data Definition Language (DDL)

11 0

Utilisation du langage Hive QL (tables, tables externes,partitions) Utilisation d’opérations Hive Data Manipulation Language (DML)

11 2

Utilisation du langage Hive QL (tables, tables externes,partitions) Utilisation d’opérations SQL

11 4

Hive : Créer une table

hive> CREATE TABLE employes (id INT, prenom STRING, nom STRING) 1ere ligne : créer une table de 3 colonnes

> ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ; 2eme ligne : indique que le séparateur entre les champs est une virgule

hive> DESCRIBE employes; id prenom nom

La commande doit finir par un point virgule pour l’exécuter

Affiche la structure de la table

int string string

11 6

Hive : Charger les données dans la table

hive> LOAD DATALOCAL INPATH'data/data-employes.txt Copier les valeurs à partir d’un fichier local data-employes.txt

> OVERWRITE INTO TABLE employes;

Les enregistrements éventuels de la table employes sont supprimés

$ hdfs dfs -cat /user/hive/warehouse/employes/data-employes.txt 100,jean,martin 200,robert,poulain Afficher les enregistrements copiés. Les tables Hive sont stockés par défaut dans le répertoire 300,michel,dunot /user/hive/warehouse

11 8

Hive: Effectuerdesrequêtessimples

hive> SELECT COUNT(*) FROM employes; Compter le nombre d’enregistrements de la table employes

hive> SELECT * FROM employes WHERE prenom = “Robert”; Afficher les enregistrements satisfaisant un critère

12 0

Hive: Supprimerunetable

hive> DROP TABLE employes; Supprimer la table sélectionnée

$ hdfs dfs -ls /user/hive/warehouse/

La table a été supprimée

12 2

Techniques performantes avec Hive

§

Record Columnar File format (RCFile).

§

Partition : définir ses propres colonnes, son stockage et sa sérialisation.



• §

Format row-columnar hybride qui permet une analyse efficace lorsque seul un sous-ensemble des données est nécessaire.

Les partitions permettent d’accélérer les requêtes. Les partitions sont physiquement stockées dans des répertoires séparés dans HDFS.

Buckets : découpage des partitions



Optimisation pour les jointures 12 5