Vous êtes sur la page 1sur 22

Chapitre 2 : Système Pig de Hadoop

Professeur Chiba Zouhair


Plan
Introduction
Les langages d'abstraction

L'architecture Apache Pig

Etapes d’exécution d’un programme Pig Apache

Pourquoi utiliser Apache Pig ?

Les caractéristiques et points forts de Apache Pig

Pig Apache vs MapReduce

Pig vs SQL

Pig vs Spark

Apache Pig vs Hive


Applications de Pig

Modèle de données sous Apache Pig


Introduction
 Une des solutions conceptuelles au problème de traitement de masses de données majoritairement utilisées dans le
Big Data est la suivante : les traitements/calculs sont divisés en tâches et leur exécution est parallélisée
(MapReduce) dans un cluster d'ordinateurs tolérant aux pannes (HDFS).

 Hadoop est une implémentation de MapReduce qui s'avère être la plus populaire et la plus mature du marché, et en
passe de devenir le standard de facto du Big Data.

 Hadoop va devenir la plateforme de traitement de données par défaut des utilisateurs, un peu comme Excel, qui est
progressivement devenu le logiciel par défaut d'analyse de données. Problème : à la différence d'Excel, Hadoop n'a
pas été à la base conçu pour être utilisé par les « utilisateurs métier », mais par les développeurs.

 Or, selon la loi de Metcalfe, « la valeur d'un standard est proportionnelle au carré du nombre de systèmes qui
l'utilisent ». Nous pouvons contextualiser cette citation en disant que « la valeur d'une technologie est proportionnelle
au carré du nombre de personnes qui l'utilisent ». En d'autres termes, l'adoption à grande échelle et le succès de
Hadoop ne dépendent pas d'une minorité de développeurs, mais des utilisateurs métier !!!

 La fondation Apache a bien compris ce paradigme et c'est pourquoi, depuis qu'elle a repris Hadoop en 2009, elle
s'évertue à rapprocher Hadoop le plus possible du langage SQL (Structurd Query Language).

 Pourquoi spécialement le SQL ?


1) SQL est le langage le plus employé par les utilisateurs métier pour la manipulation des données.
2) Les entreprises utilisent de plus en plus HDFS à titre d'outil de stockage central pour toutes les données de
l'entreprise, et que la majorité des outils d'exploitation de ces données (par exemple SQL Server, Business
Objects, Oracle, SAS, Tableau, etc.) s'appuient sur le SQL.

Il faut des outils capables d'exécuter SQL directement sur HDFS (Pig & Hive)
1
Les langages d'abstraction

 Dans l'ère numérique, Hadoop (MapReduce + HDFS) va devenir l'outil par défaut du traitement (parallèle) 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 des compétences poussées, pour les développeurs ou les utilisateurs métiers pour interagir avec le Cluster.

 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étiers 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 plus bas 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 directement 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, et plus simple il est
pour les utilisateurs.

2
Les langages d'abstraction
 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 du SQL, familier aux utilisateurs. Par la suite, ces langages
transforment les requêtes écrites en Jobs MapReduce qui sont soumises au cluster pour exécution.

Relation entre le niveau d'abstraction du langage et la


proximité du cluster

 Globalement, Hive offre un langage de plus haut niveau d'abstraction que Pig, et Pig offre une abstraction de plus
haut niveau que Cascading. Cascading étant de trop bas niveau pour les analystes métier uniquement habitués au
SQL. 3
C'est quoi Pig Hadoop ?

 Apache Pig est un logiciel (Langage de programmation de haut niveau + Moteur d’éxecution) initialement
développé en interne par Yahoo ! en 2006. Il permet d’écrire des traitement utiles sur des données, sans subir la
complexité de Java. Le but est de rendre Hadoop accessible à des non-informaticiens scientifiques : physiciens,
statisticiens, mathématiciens. . .

 Le nom « Pig » a été choisi, car ce langage de programmation est conçu pour fonctionner sur n’importe quel type de
données à l’instar d’un cochon qui dévore tout et n’importe quoi.

 En 2007, Pig est rendu Open Source par le biais de l’incubateur Apache. En 2008, la première version de Apache
Pig est lancée. Le succès est au rendez-vous, et Pig devient un projet Apache de premier niveau en 2010.

 En utilisant Apache Pig, les Data Analysts peuvent passer moins de temps à écrire des programmes MapReduce. Ils
peuvent ainsi rester focalisés sur l’analyse des données.

 Ainsi, Apache Pig est une abstraction pour MapReduce. Cet outil est utilisé pour analyser les vastes datasets en les
représentant comme des flux de données. Toutes les opérations de manipulation de données sur Hadoop peuvent
être effectuées en utilisant Apache Pig.

4
C'est quoi Pig Hadoop ?

 Pig propose un langage de scripts appelé « Pig Latin ». Ce langage est qualifié de « Data Flow Language ». Ses
instructions décrivent des traitements sur un flot de données. Conceptuellement, ça ressemble à un tube Unix ;
chaque commande modifie le flot de données qui la traverse. Pig Latin permet également de construire des
traitements beaucoup plus variés et non-linéaires.

 Pig traduit les programmes Pig Latin en jobs MapReduce et intègre les résultats dans le flot.

 Apache Pig a un composant connu sous le nom de Pig Engine (Moteur Pig) qui accepte les scripts Pig Latin
comme entrée et convertit ces scripts en tâches MapReduce.

 Ce langage fournit divers opérateurs à l'aide desquels les programmeurs peuvent développer leurs propres fonctions
pour lire, écrire et traiter des données.

Exemple Programme Pig :

Ce programme affiche les 10 adultes les plus jeunes extraits d’un fichier csv contenant 3 colonnes : identifiant, nom et
age.

Pour l’exécuter : pig programme.pig. Ça lance un job MapReduce dans Hadoop. On peut aussi taper les instructions
une par une dans le shell de Pig. Pig est ETL (Extraction, Transformation, Load) de Hadoop.
5
L'architecture Apache Pig
 L’architecture Apache Pig repose sur deux composants principaux : le langage Pig Latin et l’environnement runtime
(Pig Engine) permettant l’exécution des programmes PigLatin.

 Le langage Pig Latin permet d’écrire des programmes d’analyse de données. Il délivre divers opérateurs (LOAD,
FILTER, ORDER BY) que les programmeurs peuvent utiliser pour développer leurs propres fonctions pour lire, écrire
ou traiter des données.

 Un programme Pig Latin est composé d’une série de transformations ou d’opérations, appliquées aux données «
input » (entrée) pour produire un « output » . Ces opérations décrivent un flux de données traduit en une
représentation exécutable par l’environnement d’exécution Hadoop Pig.

 Pour analyser des données en utilisant Apache Pig, les programmeurs doivent impérativement écrire des scripts avec
le langage Pig Latin. Tous ces scripts sont convertis en tâches Map et Reduce de façon interne. Le composant Pig
Engine se charge de convertir les scripts en jobs MapReduce.

 Toutefois, le programmeur n’a même pas connaissance de ces jobs. C’est ainsi que Pig permet aux programmeurs
de se concentrer sur les données plutôt que sur la nature de l’exécution.

 On distingue deux modes d’exécution pour Pig :

 En mode Local, Pig s’exécute sur un JVM unique et utilise le système de fichier local. Ce mode est adapté
pour l’analyse de petits ensembles de données.
6
L'architecture Apache Pig
 En mode Map Reduce, les requêtes écrites en Pig Latin sont traduites en jobs MapReduce et exécutées sur
un cluster Hadoop. Ce dernier peut être partiellement ou entièrement distribué. Le mode MapReduce
combiné avec un cluster entièrement distribué est utile pour exécuter Pig sur de larges ensembles de données.

 Apache Pig fonctionne donc "au-dessus" de MapReduce comme le montre son architecture (voir les images ci-
après). Concrètement, cela veut dire que les instructions PigLatin sont parsées, optimisées puis "converties" en
fonctions mappers et reducers qui sont exécutées sur les données.

Architecture de Apache Pig Pile logicielle de Apache Pig


7
Etapes d’exécution d’un programme Pig Apache
1) Pig Latin Scripts (Scripts de Pig) : Initialement, nous soumettons les scripts Pig écrits en Pig Latin à
l'environnement d'exécution Apache Pig. Il existe trois manières d'exécuter le script Pig : a) Grunt Shell : C'est le
shell interactif d'Apache Pig pour exécuter tous les scripts Pig. b) Pig Server : nous pouvons écrire toutes les
commandes Pig dans le fichier de script, puis exécuter le fichier de script Pig. Pig Server exécute ce fichier de
script. c) Script intégré : nous pouvons créer des UDF en utilisant des langages tels que Java, Ruby, Python, etc, si
certaines fonctions ne sont pas disponibles. Cette UDF est intégrée dans le fichier Pig Latin Script, puis le fichier de
script est exécuté.

2) Parser (Analyseur) : Initialement, les scripts Pig sont traités par


l‘Analyseur (Parser). Il vérifie la syntaxe du script, les types des
données, et effectue d’autres vérifications requises. La sortie de
l'analyseur sera un DAG (Directed Acyclic Graph ou Plan Logique),
qui représente les instructions de Pig Latin, et les opérateurs logiques.

3) Optimizer (Optimiseur) : Ensuite, la sortie de l'analyseur, c'est-à-dire le


DAG, est soumise à l'optimiseur. L'optimiseur effectue les activités
d'optimisation telles que la division, la transformation, la fusion, la
réorganisation des opérateurs, etc. L'optimiseur est chargé de fournir la
fonction d'optimisation automatique à Pig.

4) Compiler (Compilateur) : Le compilateur compile le plan logique


(DAG) optimisé en une série de tâches MapReduce.

5) Execution Engine (Moteur d'exécution) : Enfin les jobs MapReduce


sont soumis à Hadoop dans un ordre trié. Ensuite, ces travaux
MapReduce sont exécutés sur Hadoop produisant ainsi les résultats
souhaités.
8
Pourquoi utiliser Apache Pig ?

 Par le passé, les programmeurs et analystes ou utilisateurs métier ne maîtrisant pas Java, avaient du mal à
utiliser Hadoop. Il était particulièrement délicat pour eux d’effectuer des tâches MapReduce.

 Ce problème a pu être résolu grâce à Apache Pig. En utilisant le langage Pig Latin, les programmeurs peuvent
effectuer facilement des tâches MapReduce sans avoir à taper des codes complexes en Java.

 Par ailleurs, Apache Pig repose sur une approche « multi-requête » permettant de réduire la longueur des
codes. Une opération qui nécessiterait 200 lignes de code en Java peut être réduire à seulement 10 lignes avec Pig.
En moyenne, Apache Pig divise le temps de développement par 16.

Comparaison Map Reduce et Pig

9
Pourquoi utiliser Apache Pig ?

 Un avantage du langage Pig Latin est qu’il est relativement proche du langage SQL. Une personne accoutumée à
SQL maîtrisera facilement Pig.

 Enfin, de nombreux opérateurs sont fournis nativement. Ils permettent de prendre en charge les diverses opérations
de données. L’outil offre aussi des types de données comme les tuples, les bags et les maps manquant à MapReduce.

Exemple comparaison Code Pig et code Map Reduce :

10
Pourquoi utiliser Apache Pig ?

11
Pourquoi utiliser Apache Pig ?

 L’un des défis de traitement de données à l'aide de MapReduce dans Hadoop consiste à implémenter votre logique
de traitement en utilisant uniquement un mappage et une fonction de réduction. Pour un traitement complexe,
vous devez souvent interrompre le traitement lors de plusieurs opérations MapReduce qui sont chaînées ensemble
pour produire le résultat souhaité.

 Pig permet de définir un traitement comme une série de transformations via lesquelles les données circulent pour
produire le résultat souhaité.

 Le langage Pig Latin vous permet de décrire le flux de données provenant d’une entrée brute, via une ou plusieurs
transformations, pour produire le résultat souhaité. Les programmes Pig Latin suivent le modèle général suivant :

 Chargement : lecture des données à manipuler dans le système de fichiers.

 Transformation : manipulation des données.

 Copie de sauvegarde ou stockage : sortie des données ou stockage après traitement.

12
Les caractéristiques et points forts de Apache Pig

Les caractéristiques et points forts de Apache Pig sont :

 Facilité de programmation : Le langage de programmation Pig Latin, similaire à SQL, permet d’écrire un script
Pig facilement.

 Riche ensemble d'opérateurs : Un vaste ensemble d’opérateurs permet d’effectuer une large variété
d’opérations de données. À partir de ces opérateurs, les utilisateurs peuvent développer leurs propres fonctions
pour lire, traiter, et écrire les données.

 Opportunités d'optimisation : En outre, les tâches Apache Pig optimisent automatiquement leur exécution. Les
programmeurs peuvent donc se focaliser uniquement sur la sémantique du langage.

 Extensibilité &UDF (User-Defined Functions) : Il est aussi possible de créer des UDF (user-defined functions)
ou fonctions définies par l’utilisateur dans d’autres langages de programmation comme Java. Elles peuvent ensuite
être invoquées ou intégrées à des scripts Pig. Comme, en utilisant les opérateurs existants, les utilisateurs peuvent
développer leur propres fonctions UDF pour lire, traiter, et écrire des données.

 Traitement de toutes sortes de données : Avec Apache Pig, il est possible d’analyser tous les types de
données structurés ou non. Les résultats des analyses sont stockés dans le HDFS de Apache Hadoop ou dans le
système de fichiers local.

13
Pig Apache vs MapReduce

Apache Pig MapReduce


Pig est un langage de flux de données MapReduce est un paradigme de
traitement de données
C’est un langage de haut niveau MapReduce est de bas niveau et rigide

Effectuer une opération de jointure dans Il est difficile d’effectuer une opération
Apache Pig est assez simple de jointure entre des datasets avec
MapReduce
Tout programmeur novice ayant une Pour travailler avec MapReduce, il faut
connaissance de base de SQL peut être familier avec Java
travailler facilement avec Apache Pig
Apache Pig utilise une approche multi- MapReduce nécessitera presque 20 fois
requêtes, réduisant ainsi plus de lignes pour effectuer la même
considérablement la longueur des codes tâche
Il n'y a pas besoin de compilation. Lors Les tâches MapReduce impliquent un
de l'exécution, chaque opérateur long processus de compilation
Apache Pig est converti en interne en
une tâche MapReduce.

14
Pig vs SQL & Pig vs Spark
Pig vs SQL :
Apache Pig SQL

Pig Latin est un langage procédural SQL est un langage déclaratif

Dans Apache Pig, le schéma est facultatif. Un schéma est obligatoire en SQL
Nous pouvons stocker des données sans
concevoir de schéma (les valeurs sont
stockées sous la forme $01, $02, etc.)
Apache Pig offre une possibilité limitée Il y a plus d'opportunités pour l'optimisation
d'optimisation des requêtes des requêtes en SQL
Le modèle de données dans Apache Pig est Le modèle de données en SQL est relationnel
relationnel imbriqué plat

Pig vs Spark :

 Pig est un outil open source qui fonctionne sur le Framework Hadoop à l'aide de scripts Pig qui se convertissent
ensuite implicitement en tâches MapReduce pour le traitement de données volumineuses. Tandis que Spark est un
Framework open source qui utilise des ensembles de données distribués résilients (RDD) et Spark SQL pour traiter
le Big Data.

 Le Framework Spark est plus efficace et évolutif que le framework Pig.

 Les scripts Pig Latin peuvent être utilisés comme fonctionnalités de type SQL, tandis que Spark prend en charge les
fonctionnalités et les API intégrées telles que PySpark pour le traitement des données.

15
Apache Pig vs Hive & Applications de Pig

Pig vs Hive :

Apache Pig Hive


Apache Pig utilise un langage appelé Pig Hive utilise un langage appelé HiveQL. Il a
Latin. Il a été créé à l'origine chez Yahoo. été créé à l'origine sur Facebook.
Pig Latin est un langage de flux de données. HiveQL est un langage de traitement de
requêtes.
Pig Latin est un langage procédural. HiveQL est un langage déclaratif.

Apache Pig peut gérer des données Hive est principalement destiné aux données
structurées/non structurées/semi-structurées. structurées.

Les applications de Apache Pig

o En règle générale, Apache Pig est utilisé par les Data Scientists pour effectuer des tâches impliquant le traitement
Hadoop et le prototypage rapide. On l’utilise notamment pour traiter d’immenses sources de données comme les
logs web.

o Cet outil permet aussi le traitement de données pour les plateformes de recherche. Enfin, il permet de traiter les
charges de données sensibles au temps.

16
Modèle de données sous Apache Pig

 Le modèle de données de Pig Latin permet à Apache Pig de gérer tous les types de données. Pig Latin peut gérer des
types de données atomiques tels que int, float, double, long, etc. Ainsi que des types de données complexes tels que
Bag, Tuple et Map.

 Le modèle de données de Pig Latin est entièrement imbriqué :

o Le modèle de données de Pig est simple. Un script Pig Latin travaille sur des données élémentaires nommées
‘Atom’ ou ‘Champ’. Un Atom représente un type élémentaire tel que int, long, double, chararray, etc.

o Un ensemble d’Atoms, par exemple une ligne dans un fichier, s’appelle un ‘Tuple’. Les Tuples sont regroupés
dans un ‘Bag’ (Sac de tuples).

o Aussi, Pig Latin propose une représentation de données sous la forme ‘Clé, Valeur’. Ce type est connu sous le
nom ‘Map’.

17
Modèle de données sous Apache Pig
o Un champ (Atom) est un élément de données.
o Un Tuple est un ensemble ordonné de champs.
o Un sac (Bag) est une collection de tuples.
o Un Map est un ensemble de pairs (clé, Valeur)

18
Modèle de données sous Apache Pig

19
Modèle de données sous Apache Pig

20

Vous aimerez peut-être aussi