WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Stratégies d'optimisation de requêtes SQL dans un écosystème Hadoop

( Télécharger le fichier original )
par Sébastien Frackowiak
Université de Technologie de COmpiègne - Master 2 2017
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

4 SQL SUR HADOOP

4.1 Hive

4.1.1 Histoire

Hive est un projet initié en 2007 par Facebook(AshishThusoo, 2009). Le réseau social disposait alors d'une infrastructure de traitement de données classique, basée sur un entrepôt de données construit surun SGBDR du marché.Année après année, la quantité de données à traiter devenait de plus en plus importante et l'architecture en place devint rapidement obsolète. Hadoop s'est ainsi rapidement imposé comme la solution à ces difficultés de montée en charge : c'est un projet Open Source et surtout, il propose une infrastructure scalable déjà éprouvée.

Si la capacité de traitement de l'infrastructure Hadoop était aisément extensible et si les traitements s'exécutaient dorénavant en quelques heures au lieu d'un jour ou plus, il fallait en revanche les développer en utilisant le paradigme MapReduce. Les utilisateurs des entrepôts de données, plus habitués au SQL, n'étaient pas forcément à l'aise dans l'écriture de programmes de ce type.

L'équipe de Jeff Hammerbacher créa alors Hive, un entrepôt de données au-dessus de Hadoop, dont le langage d'interrogation des données, le HQL (Hive Query Langage), est le portage « distribué »du SQL des SGBDR classiques.

Hive est rapidement passé sous licence Apache, sa première version stable date d'octobre 2010, et continue d'être améliorée tout en bénéficiant des évolutions continues de Hadoop.

4.1.2 Architecture

Hive est composé des éléments suivants (LeftyLeverenz, 2015) :

· le metastore

Le metastore contient l'ensemble des données décrivant les tables (schéma de données, localisation des fichiers, et les statistiques concernant les données telles que le nombre de lignes, la taille moyenne d'une ligne, etc.).

· un compilateur (compiler) et un optimiseur (optimizer)

Le compilateur réalise l'analyse syntaxique (générant un arbre syntaxique abstrait ou AST) puis l'analyse sémantique (génération d'un arbre d'opérations ou operatortree) définissant l'ensemble des étapes nécessaires à l'accomplissement de la requête. Au cours de cette analyse, le metastoresera sollicité pour validerque l'ensemble des objets (fichiers et champs) décrits dans la requête sont valides.

Il est à noter qu'il ne figure aucune dépendance à MapReduce, ni à d'autres frameworks distribués, à ce stade de la compilation.

Ensuite, selon le framework distribué utilisé par Hive, un compilateur de tâche sera exécuté (MapRedCompiler par exemple) et génèrera une tâche exécutable (MapRedTask, c'est-à-dire du code Java implémentant le framework MapReduce dans ce cas de figure) décrit par un arbre d'opérations qui aura d'abord été optimisé puis transformé en enchaînement de travaux (MapRedWork).

Les dernières versions de Hive permettent d'utiliser d'autres frameworks distribués comme Tez et Spark, sans remettre en question cette architecture.

· un exécuteur (executor)

L'exécuteur est en charge de soumettre lestâches auNodeManager(côté Hadoop). Il supervisera ainsi leur exécution jusqu'à leur achèvement.

· une interface utilisateur (UI)

L'interface utilisateur permet à l'utilisateur d'interagir avec Hive (envoyer des requêtes / obtenir les résultats) au travers d'un client connecté au serveur Hive via un connecteur ODBC ou JDBC dans la plupart des cas.

· le pilote (driver)

Le pilote contrôle les échanges entre l'interface utilisateur, le compilateur et l'exécuteur. Il reçoit ainsi la demande d'exécution d'une requête par l'utilisateur qu'il soumettra au compilateur, puis à l'exécuteur après compilation. Il est également en charge de restituer le résultat de la requête, reçu par l'exécuteur, à l'utilisateur.

Figure 6 : architecture de Hive

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Nous devons apprendre à vivre ensemble comme des frères sinon nous allons mourir tous ensemble comme des idiots"   Martin Luther King