Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Hadoop
  3. SQL dans Hadoop
Extrait - Hadoop Devenez opérationnel dans le monde du Big Data
Extraits du livre
Hadoop Devenez opérationnel dans le monde du Big Data
1 avis
Revenir à la page d'achat du livre

SQL dans Hadoop

Introduction

« La valeur d’une technologie est proportionnelle au carré du nombre de personnes qui l’utilise. » (loi de Metcalfe)

La solution conceptuelle au problème du traitement de données dans l’économie numérique est la suivante : les traitements/calculs doivent être divisés en tâches et leur exécution doit être parallélisée dans un cluster d’ordinateurs complètement tolérant aux pannes. Dès lors, l’approche de centralisation qui a prévalu jusqu’ici est tout simplement inenvisageable. La tolérance aux pannes est fournie par un tout nouveau type de système de fichiers appelé "Système de Fichiers distribué" (DFS), et le découpage et le parallélisme des tâches se font à l’aide d’un nouveau modèle de programmation appelé le MapReduce. Une application générique de gestion de ressources comme le YARN ou MESOS permet d’aller au-delà du MapReduce et d’utiliser d’autres modèles de calcul sur le cluster. Hadoop, l’implémentation MapReduce la plus populaire et la plus mature du marché, est en passe de devenir le standard de facto dans l’ère numérique. Nous pouvons dire sans prendre de risque qu’Hadoop va devenir la plateforme de traitement...

Étude de l’écosystème Hadoop

Hadoop est une plateforme qui implémente le modèle de calcul MapReduce et fournit un système de fichiers distribué redondant, fiable et optimisé pour la gestion des fichiers volumineux : le HDFS. En réalité, Hadoop est un ensemble de classes écrites en Java pour la programmation des tâches MapReduce et HDFS. Ces classes peuvent tout aussi bien s’écrire dans d’autres langages tels que C#, Scala, etc. Ces classes permettent à l’analyste d’écrire des fonctions qui vont traiter les données sans avoir à se préoccuper de la façon dont ces fonctions sont distribuées et parallélisées dans le cluster. Pour tirer le meilleur parti d’un cluster Hadoop, la fondation Apache a inclus dans Hadoop une série de logiciels et d’outils. Cet ensemble forme aujourd’hui ce qu’il est judicieux d’appeler l’écosystème Hadoop ou le framework Hadoop. Pourquoi ? Parce que sans ces outils, il reviendrait à chaque entreprise en fonction de son besoin, de développer elle-même des outils compatibles avec Hadoop afin de déployer ses solutions sur le cluster ; ce qui serait une "daunting task" (tâche herculéenne).

Actuellement, pas mal de développeurs sont en train de travailler...

Langages d’abstraction

Il y a des raisons de croire que le MapReduce va devenir le mode normal de traitement des données dans l’ère numérique et donc qu’Hadoop va devenir l’outil par défaut du traitement de données. Le problème est que le MapReduce est un langage de très bas niveau, c’est-à-dire très proche de la machine. Il implique que le développeur sache interagir avec le cluster, ce qui peut être très difficile pour un développeur néophyte dans le monde du traitement parallèle, ou pour des utilisateurs métier. L’un des moyens de simplifier le développement MapReduce, et Hadoop en général, consiste à fournir ce qu’on appelle un langage d’abstraction. Un langage d’abstraction est un langage à syntaxe relativement proche du langage humain qui permet d’exprimer des problèmes métier sous forme de requêtes simples.

L’abstraction vient du fait que lorsque l’utilisateur exprime son besoin sous forme d’une requête, cette requête est transformée en instructions machine. Ainsi, le langage d’abstraction n’est en réalité qu’une couche qui masque la complexité d’expression des problèmes en langage de bas niveau comme le ferait un développeur. Plus le niveau d’abstraction offert par le langage est élevé, et plus on est éloigné de la machine, ce qui est plus simple pour les utilisateurs. La fondation Apache fournit pour le moment trois langages d’abstraction pour le MapReduce : Hive, Pig et Cascading. Ces trois langages, conçus pour un public non développeur, permettent d’exprimer des jobs MapReduce dans un style de programmation similaire à celui de SQL, familier aux utilisateurs. Par la suite, ces langages transforment les requêtes écrites en jobs MapReduce qui sont soumises au cluster pour leur exécution. Globalement, Hive offre un langage de plus haut niveau d’abstraction que Pig et Pig offre une abstraction de plus haut niveau que Cascading. Dans cet ouvrage, nous étudierons uniquement SQL, Hive et Pig. Cascading étant de trop bas niveau pour les analystes métier uniquement habitués à SQL. La figure suivante illustre...

Moteurs natifs SQL sur Hadoop

Hadoop est en train de gagner du terrain dans les entreprises, celles-ci utilisent de plus en plus le HDFS comme répertoire de stockage central pour toutes leurs données ; données provenant de plusieurs sources telles que les systèmes opérationnels (comptabilité, marketing, finance, ressources humaines, etc.), les médias sociaux, Internet, les données de capteurs, et les données de diverses applications. Au même moment, la majorité des outils de gestion et d’exploitation des données (par exemple l’ERP SAP, Oracle, SAS, Tableau, Excel, etc.) s’appuient sur SQL. Les analystes métier et autres professionnels qui travaillent sur ces outils sont à l’aise avec SQL. C’est l’une des raisons majeures qui a provoqué le développement des offres SQL sur Hadoop ces dernières années. Facebook a été le premier sur le marché à offrir une solution SQL sur Hadoop : Hive avec HiveQL, un langage d’interrogation comparable à SQL. Hive a permis de transformer et de compiler les requêtes HiveQL en série de jobs MapReduce. À mesure que les besoins des utilisateurs ont évolué et que les exigences du Numérique se sont accrues, le temps de latence de toutes les solutions SQL sur Hadoop qui transforment les requêtes en jobs MapReduce (les langages d’abstraction) est devenu inacceptable. Pour résoudre ce problème, la majorité des éditeurs ont décidé de développer des moteurs SQL natifs, massivement parallèles, qui exécutent directement SQL sur le HDFS sans passer par le MapReduce. Le concept de moteur SQL massivement parallèle n’est pas nouveau. Certains systèmes de gestion de bases de données relationnelles tels que GreenPlum, PostgreSQL, Informix XPS, IBM DB2 UDB, NCR Teradata, SQL Server Parallel DWH, ou Sybase IQ12-Multiplex, distribuent les bases de données sur un ensemble d’ordinateurs connectés à un réseau LAN et exécutent des requêtes SQL de façon concurrente (parallèle) et simultanée sur ces machines. Parce qu’ils sont capables d’exécuter du SQL sur des architectures distribuées, ces systèmes...

Conclusion

L’adoption à large échelle et le succès d’Hadoop ne dépendent pas des développeurs Java, mais contre toute attente des utilisateurs métier. Ceux-ci ont l’habitude de développer leurs applications d’exploitation de données en SQL. Facebook a été le premier à réagir à ce constat et a proposé Hive. Hive est une infrastructure comparable au datawarehouse, qui fournit aux utilisateurs un langage d’interrogation de données proche de SQL : HiveQL. Le premier écueil avec HiveQL vient directement de sa nature : parce qu’il est un langage descriptif, la complexité des problèmes qu’on peut exprimer est faible. Pour pallier cette insuffisance, Yahoo! a conçu Pig Latin, un langage de flux de données suffisamment simple à utiliser par les analystes métier. En arrière-plan, ces langages transforment les requêtes des utilisateurs en jobs MapReduce. Avec l’évolution des besoins du Numérique, la latence du MapReduce s’est trouvée inacceptable pour les problématiques interactives, il a donc fallu penser à de nouvelles approches. Et c’est ainsi que les moteurs SQL sur Hadoop sont nés. Ceux-ci s’appuient sur les principes de fonctionnement des bases de données parallèles et des SGBDR...

Guide d’étude du chapitre

Question 1 : Pourquoi a-t-on besoin d’un écosystème Hadoop ? 

Question 2 : On peut utiliser Hadoop sans passer par un écosystème d’outils.

images/case.PNG Vrai
images/case.PNG Faux

Question 3 : Citez trois outils de votre choix de l’écosystème Hadoop et donnez leur rôle.

Question 4 : Qu’est-ce qu’un langage d’abstraction ? 

Question 5 : Hive est un langage SQL d’écriture des requêtes sous Hadoop.

images/case.PNG Vrai
images/case.PNG Faux

Question 6 : Hive peut exécuter du code Python.

images/case.PNG Vrai
images/case.PNG Faux

Question 7 : Quelle différence faites-vous entre HiveQL et SQL ?

Question 8 : Qu’est-ce qu’une UDF (User Defined Function) ? 

Question 9 : Quel est le rôle d’une UDF dans la programmation HiveQL ? 

Question 10 : Soit le fichier de données suivant, stocké sur le HDFS dans le répertoire projets/livre_hadoop/hive/orders.txt. Vous souhaitez utiliser Hive pour effectuer des études statistiques sur ce fichier de données.

orderid

customerid

orderdate

qtity

3

10007

02/06/2011 00:00

2

6

10007

15/10/2009 00:00

1

9

10012

15/10/2009 00:00

2

12

10005

22/11/2010 00:00

1

15

10005

22/11/2010 00:00

1

18

10009

22/11/2010 00:00

1

21

10011

22/11/2010 00:00

1

24

10010

23/11/2010 00:00

1

27

10003

23/11/2010 00:00

2

30

10006

23/11/2010 00:00

1

33

10002

23/11/2010 00:00

1

36

10012

23/11/2010 00:00

1

39

10004

06/04/2010 00:00

1

42

10006

15/01/2011 00:00

1

1 - Écrivez le script HiveQL de création de la table orders.

2 - Écrivez le script HiveQL d’insertion des lignes de ce fichier dans la table orders que vous avez précédemment créée.

3 - Écrivez le script HiveQL de la somme des quantités par client.

Question 11 : Quel est le langage offert par Pig pour la programmation des données ? 

Question 12 : Soit le fichier de données suivant, stocké sur le HDFS dans le répertoire projets/livre_hadoop/pig/orders.txt. Vous souhaitez utiliser Pig pour effectuer des études statistiques sur ce fichier de données.

orderid

customerid

orderdate

qtity

3

10007

02/06/2011 00:00

2

6

10007

15/10/2009 00:00

1

9

10012

15/10/2009 00:00

2

12

10005

22/11/2010 00:00

1

15

10005

22/11/2010 00:00

1

18

10009

22/11/2010 00:00

1

21

10011

22/11/2010 00:00

1

24

10010

23/11/2010 00:00

1

27

10003

23/11/2010 00:00

2

30

10006

23/11/2010 00:00...

À retenir

  • En vertu de la loi de Metcalfe, le succès et l’adoption à large échelle d’Hadoop ne dépendent pas des développeurs, mais des utilisateurs métier.

  • Pour qu’Hadoop séduise le cœur des analystes métier, il faut qu’il leur donne la possibilité d’utiliser leur langage favori : SQL.

  • L’écosystème Hadoop est un ensemble d’outils qui permettent de faciliter l’exploitation d’Hadoop et de favoriser son adoption en entreprise.

  • Un langage d’abstraction est un langage à syntaxe relativement proche du langage humain, qui masque la complexité d’expression des problèmes directement en langage de bas niveau.

  • Plus le niveau d’abstraction offert par un langage est élevé, et plus le langage est simple à utiliser.

  • Hive est une infrastructure informatique comparable au datawarehouse, qui fournit des services de requêtes et d’agrégation de très gros volumes de données stockées sur un système de fichiers distribué de type HDFS. Il fournit un langage d’abstraction appelé HiveQL.

  • HiveQL fournit une couche SQL pour les requêtes des utilisateurs, mais transforme en arrière-plan ces requêtes en jobs MapReduce.

  • Pig est un environnement d’exécution de flux interactifs de données sous Hadoop....