Difference between revisions of "SQL-on-Hadoop"

From air
Jump to navigation Jump to search
Line 65: Line 65:
   
 
Une architecture de machines HDFS (aussi appelée cluster HDFS) repose sur deux types de composants majeurs :
 
Une architecture de machines HDFS (aussi appelée cluster HDFS) repose sur deux types de composants majeurs :
**NameNode (nœud de noms) : ce composant gère l'espace de noms, l'arborescence du système de fichiers et les métadonnées des fichiers et des répertoires. Il centralise la localisation des blocs de données répartis dans le cluster. Il est unique mais dispose d'une instance secondaire qui gère l'historique des modifications dans le système de fichiers (rôle de backup). Ce NameNode secondaire permet la continuité du fonctionnement du cluster Hadoop en cas de panne du NameNode d'origine ;
+
* NameNode (nœud de noms) : ce composant gère l'espace de noms, l'arborescence du système de fichiers et les métadonnées des fichiers et des
  +
répertoires. Il centralise la localisation des blocs de données répartis dans le cluster. Il est unique mais dispose d'une instance secondaire qui gère
  +
l'historique des modifications dans le système de fichiers (rôle de backup). Ce NameNode secondaire permet la continuité du fonctionnement du cluster
  +
Hadoop en cas de panne du NameNode d'origine ;
  +
* DataNode (nœud de données) : ce composant stocke et restitue les blocs de données. Lors du processus de lecture d'un fichier, le NameNode est interrogé
  +
pour localiser l'ensemble des blocs de données. Pour chacun d'entre-eux, le NameNode renvoie l'adresse du DataNode le plus accessible, c'est-à-dire le
  +
DataNode qui dispose de la plus grande bande passante. Les DataNodes communiquent de manière périodique au NameNode la liste des blocs de données
  +
qu'ils hébergent. Si certains de ces blocs ne sont pas assez répliqués dans le cluster, l'écriture de ces blocs s'effectue en cascade par copie sur
  +
d'autres.
   
 
=Notes et Références=
 
=Notes et Références=

Revision as of 23:58, 21 October 2015

Présentation

  • Enseignants : Georges-Pierre Bonneau, Didier Donsez (VT2015)
  • Sujet : SQL-on-Hadoop
  • Date : 23 octobre 2015
  • Auteur : Guo Kai

Résumé

SQL-On-HADOOP est une classe des outils logiciels analytiques qui combinent les interrogations de SQL-style établies avec les composants du Hadoop data framwork récent.

Abstract

SQL-on-Hadoop is a class of analytical application tools that combine established SQL-style querying with newer Hadoop data framework elements.

Mots clefs

SQL, Hadoop, MapReduce, SQL Connecters, Hadoop Cluster, Data Node, Task Tracker, Name Node

Synthèse

Pourquoi SQL-on-Hadoop

La technologie Hadoop est conçue pour traiter les big data qui offre aux entreprises un moyen rentable pour stocker et analyser les données du grand nombre. Les entreprises cherchent à utiliser Hadoop pour augmenter leur entrepôt de données traditionnel. Par rapport aux solutions traditionnelles d'entrepôt de données, Hadoop peut se varier par rapport au matériel et peut être utilisé pour stocker les données structurées ainsi que les données non structurées. Entrepôts de données traditionnels basés sur les technologies de base de données relationnelles existent depuis longtemps et ont un ensemble d'outils matures pour la requête et l'analyse. Les utilisateurs professionnels utilisent SQL comme langage de requête pour exécuter des requêtes ad hoc au lieu des entrepôts existants. En outre, des outils de reporting comme Cognos, Business Objects, MicroStrategy comptent sur SQL lourdement. La valeur importante de Hadoop se réalise lorsque les utilisateurs peuvent accéder et effectuer des données ad-hoc requêtées directement sur Hadoop en utilisant des outils qui supportent SQL.

Introduction brève de Hadoop

Hadoop est un framework Java libre destiné à faciliter la création d'applications distribuées et échelonnables (scalables), permettant aux applications de travailler avec des milliers de nœuds et des pétaoctets de données. Hadoop a été inspiré par les publications MapReduce, GoogleFS et BigTable de Google.

Hadoop a été créé par Doug Cutting et fait partie des projets de la fondation logicielle Apache depuis 2009.

Hadoop consiste de Hadoop Common package qui fournit les abstractions du niveau du système de fichier et du niveau du système d'exploitation, le moteur de MapReduce (MapReduce/MR1 ou YARN/MR2) et le Hadoop Distributed File System (HDFS).

Fig. 1 : Architecture de Hadoop
  • MapReduce layer

MapReduce est un patron d'architecture de développement informatique, inventé par Google1, dans lequel sont effectués des calculs parallèles, et souvent distribués, de données potentiellement très volumineuses, typiquement supérieures en taille à 1 téraoctet.

MapReduce permet de manipuler de grandes quantités de données en les distribuant dans un cluster de machines pour être traitées.

Applications typically implement the Mapper and Reducer interfaces to provide the map and reduce methods. These form the core of the job. Les applications implémentent typiquement les interfaces Mapper et Reducer pour fournir les méthodes map et reduce qui forment le corps du job.

Map

Dans cette étape, le nœud analyse un problème, le découpe en sous-problèmes, et les délègue à d'autres nœuds (qui peuvent en faire de même récursivement). Les sous-problèmes sont ensuite traités par les différents nœuds à l'aide de la fonction Reduce qui à un couple (clé, valeur) associe un ensemble de nouveaux couples (clé, valeur) : map(clé1,valeur1) → list(clé2,valeur2)

//En pseudo code cela donnerait Map(void * document){

  int cles = 1;
  for each mot m in document
     calculIntermediaire(m,cles);

}

Reducer

Vient ensuite l'étape Reduce, où les nœuds les plus bas font remonter leurs résultats au nœud parent qui les avait sollicités. Celui-ci calcule un résultat partiel à l'aide de la fonction Reduce (réduction) qui associe toutes les valeurs correspondantes à la même clé à une unique paire (clé, valeur). Puis il remonte l'information à son tour.

//En pseudo code cela donnerait Reduce(entier cles, Iterator values){

  int result = 0;
  for each v in values
     result += v;

}

  • HDFS layer

Le HDFS est un système de fichiers distribué, extensible et portable développé par Hadoop à partir du GoogleFS. Écrit en Java, il a été conçu pour stocker de très gros volumes de données sur un grand nombre de machines équipées de disques durs banalisés. Il permet l'abstraction de l'architecture physique de stockage, afin de manipuler un système de fichiers distribué comme s'il s'agissait d'un disque dur unique.

Une architecture de machines HDFS (aussi appelée cluster HDFS) repose sur deux types de composants majeurs :

 * NameNode  (nœud de noms) : ce composant gère l'espace de noms, l'arborescence du système de fichiers et les métadonnées des fichiers et des    
   répertoires. Il centralise la localisation des blocs de données répartis dans le cluster. Il est unique mais dispose d'une instance secondaire qui gère  
   l'historique des modifications dans le système de fichiers (rôle de backup). Ce NameNode secondaire permet la continuité du fonctionnement du cluster 
   Hadoop en cas de panne du NameNode d'origine ;
 * DataNode (nœud de données) : ce composant stocke et restitue les blocs de données. Lors du processus de lecture d'un fichier, le NameNode est interrogé 
   pour localiser l'ensemble des blocs de données. Pour chacun d'entre-eux, le NameNode renvoie l'adresse du DataNode le plus accessible, c'est-à-dire le 
   DataNode qui dispose de la plus grande bande passante. Les DataNodes communiquent de manière périodique au NameNode la liste des blocs de données 
   qu'ils hébergent. Si certains de ces blocs ne sont pas assez répliqués dans le cluster, l'écriture de ces blocs s'effectue en cascade par copie sur 
   d'autres.

Notes et Références