SlideShare a Scribd company logo
1 of 228
Technologies pour le Big Data
par
Minyar Sassi Hidri
Département Technologies de l’Information et de la Communication
Ecole Nationale d’Ingénieurs de Tunis
Novembre 2016
Minyar Sassi Hidri Technologies pour le Big Data 1 / 227
Plan
1 Chapitre 1 : Introduction au Big Data
2 Chapitre 2 : Hadoop, MapReduce et le Big Data
3 Chapitre 3 : Programmation MapReduce sous Hadoop
4 Chapitre 4 : Traitement de données et requêtage sous
Hadoop
Minyar Sassi Hidri Technologies pour le Big Data 2 / 227
Chapitre 1 - Introduction au Big Data
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 3 / 227
Big Data : Faits, Intérêts, Sources et Challenges
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 4 / 227
Big Data : Faits, Intérêts, Sources et Challenges Big Data : Faits
Big Data : Faits
Source : IBM
Minyar Sassi Hidri Technologies pour le Big Data 5 / 227
Big Data : Faits, Intérêts, Sources et Challenges Big Data : Faits
Big Data : Faits
I Chaque jour, nous générons 2.5 trillions d’octets de données.
I 90% des données dans le monde ont été créées au cours des deux dernières années.
I Sources :
- Capteurs utilisés pour collecter les informations climatiques.
- Messages sur les médias sociaux.
- Images numériques et vidéos publiées en ligne.
- Enregistrements transactionnels d’achat en ligne.
- Signaux GPS de téléphones mobiles.
- ...
Minyar Sassi Hidri Technologies pour le Big Data 6 / 227
Big Data : Faits, Intérêts, Sources et Challenges Big Data : Faits
Big Data : Faits
I Chaque jour, nous générons 2.5 trillions d’octets de données.
I 90% des données dans le monde ont été créées au cours des deux dernières années.
I Sources :
- Capteurs utilisés pour collecter les informations climatiques.
- Messages sur les médias sociaux.
- Images numériques et vidéos publiées en ligne.
- Enregistrements transactionnels d’achat en ligne.
- Signaux GPS de téléphones mobiles.
- ...
I Chiffres clés
- Plus de 2 milliards de vidéos regardées sur Youtube chaque jour et 220 milliards de
recherche sur Google chaque mois.
- 30 milliards de contenus statut, photo, vidéo, événement, etc. sont ajoutés sur Face-
book par mois par plus de 600 millions d’utilisateurs actifs.
- Le nombre d’appareils connectés à Internet a dépassé le nombre d’humains en 2008.
- La compagnie de Social Games traite 1 Petabyte (1 million de GB) de données chaque
jour.
- Le marché du Big Data et des Big Analytics (ou broyage de données) pourraient
représenter près de 250 milliards de dollars sur 4 ans.
Minyar Sassi Hidri Technologies pour le Big Data 6 / 227
Big Data : Faits, Intérêts, Sources et Challenges Big Data : Intérêts
Big Data : Intérêts
I 1/3
- Chefs d’entreprise prennent fréquemment des décisions basées sur
des informations en lesquelles ils n’ont pas confiance, ou qu’ils
n’ont pas.
I 1/2
- Chefs d’entreprise disent qu’ils n’ont pas accès aux informations
dont ils ont besoin pour faire leur travail.
I 83%
- Des DSI (Directeurs des SI) citent : l’informatique décisionnelle et
analytique comme faisant partie de leurs plans pour améliorer leur
compétitivité.
I 60%
- Des PDG ont besoin d’améliorer la capture et la compréhension
des informations pour prendre des décisions plus rapidement.
Minyar Sassi Hidri Technologies pour le Big Data 7 / 227
Big Data : Faits, Intérêts, Sources et Challenges Big Data : Intérêts
Big Data : Sources (1)
I Sources multiples : sites, Bases de Données, téléphones, serveurs :
- Détecter les sentiments et les réactions des clients.
Détecter les conditions critiques ou potentiellement mortelles dans les
hôpitaux, et à temps pour intervenir.
- Prédire des modèles météorologiques pour planifier l’usage optimal des
éoliennes.
- Prendre des décisions risquées basées sur des données transactionnelles
en temps réel.
- Identifier les criminels et les menaces à partir de vidéos, sons et flux de
données.
- ´Etudier les réactions des étudiants pendant un cours, prédire ceux qui
vont réussir, d’après les statistiques et modèles réunis au long des années
(domaine Big Data in Education).
Minyar Sassi Hidri Technologies pour le Big Data 8 / 227
Big Data : Faits, Intérêts, Sources et Challenges Big Data : Sources
Big Data : Sources (2)
I Les données massives sont le résultat de la rencontre de trois éléments
essentiels qui sont :
- Internet.
- Les réseaux sociaux.
- Les appareils intelligents : les ordinateurs, les tablettes, les smartphones, les objets
connectés...
- L’Internet permet la transmission de l’information quelle que soit sa
forme sur les appareils intelligents :
Appareil intelligent : création de données.
Utilisateur des réseaux sociaux : consommateur.
Internet : vecteur de transmission.
Minyar Sassi Hidri Technologies pour le Big Data 9 / 227
Big Data : Faits, Intérêts, Sources et Challenges Big Data : Challenges
Big Data : Challenges
? Réunir un grand volume de données variées pour trouver de nouvelles idées.
? Difficulté pour sauvegarder toutes ces données.
? Difficulté pour traiter ces données et les utiliser.
? Les données sont créées rapidement.
Minyar Sassi Hidri Technologies pour le Big Data 10 / 227
Qu’est-ce que le Big Data ?
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 11 / 227
Qu’est-ce que le Big Data ? Historique & contexte
Historique & contexte
I L’évolution du SI amène
les entreprises à traiter de
plus en plus de données
issues de sources toujours
plus variées.
I Les prévisions de taux
de croissance des vo-
lumes de données trai-
tées dépassent les limites
des technologies tradition-
nelles.
I On parle de Petaoctet
(billiard d’octets) (ou Pe-
tabyte) voir de Zettaoc-
tet (Trilliard d’octets) (ou
Zettabyte).
⇒ Quelle solution pour
exploiter ces données ?
Minyar Sassi Hidri Technologies pour le Big Data 12 / 227
Qu’est-ce que le Big Data ? Définition
Définition
I Big Data : Exploration de très vastes ensembles de données pour obtenir
des renseignements utilisables.
I Le terme Big Data se réfère aux technologies qui permettent aux entreprises
d’analyser rapidement un volume de données très important et d’obtenir une
vue synoptique.
I En mixant intégration de stockage, analyse prédictive et applications, le Big
Data permet de gagner en temps, en efficacité et en qualité dans l’interpré-
tation de données.
I Les objectifs de ces solutions d’intégration et de traitements des données
sont de traiter un volume très important de données aussi bien structurées
que non structurées, se trouvant sur des terminaux variés (PC, smartphones,
tablettes, objets communicants...), produites ou non en temps réel depuis
n’importe quelle zone géographique dans le monde.
⇒ Le Big Data sera un outil majeur à la fois pour la prise de décisions et
l’optimisation de la compétitivité au sein des entreprises ?
Minyar Sassi Hidri Technologies pour le Big Data 13 / 227
Qu’est-ce que le Big Data ? Définition
Définition : Autres notions
Autour du Big Data, on trouve également les termes :
I Open Data : Une donnée ouverte est une donnée qui peut être librement
utilisée, réutilisée et redistribuée par quiconque. Ce qu’ouvert signifie ⇒ L’in-
teropérabilité.
- Capacité de divers systèmes et organisations à travailler ensemble (inter-opérer). Dans
ce cas, c’est la capacité d’interopérer - ou entremêler - des ensembles de données
différents.
I Little Data : Parfois utilisée pour permettre aux entreprises qui n’auraient
pas les 3V pour utiliser les technologies Big Data.
I Smart Data : La Smart Data permet de se focaliser uniquement sur les
données utiles. Nouvelle expression synonyme de Business Intelligence (Infor-
matique décisionnelle).
- En 2013, le Big Data s’est retrouvé au cœur de toutes les conversations. Cependant,
le Big Data c’est un gros volume de données parfois inexploitable et peu pertinent.
- Toutes les données ne sont pas bonnes à prendre et demandent beaucoup de temps
à exploiter.
Attention à ne pas être confronté au final au Bad Data !
Minyar Sassi Hidri Technologies pour le Big Data 14 / 227
Qu’est-ce que le Big Data ? Est-ce une innovation ?
Big Data : Est-ce une innovation ?
I L’explosion des volumes
des données nécessite une
innovation en terme de :
- Acceleration matérielle :
Abandon des disques durs
au profit des mémoires dy-
namiques DRAM (Dynamic
Random Access Memory :
mémoire vive dynamique)
ou flash.
⇒ Meilleur benefice des
processeurs multicœurs.
I Bases de données d’analyse massivement parallèle (MPP) : Ces bases de données conformes
SQL sont conc¸ues pour répartir le traitement des données sur plusieurs machines.
I Modèle Map-Reduce, Hadoop et autres approches NoSQL : Ces approches permettent
d’accéder aux données via des langages de programmation sans utiliser les interfaces basées
sur SQL et permettent de répartir les données sur plusieurs machines distinctes.
Minyar Sassi Hidri Technologies pour le Big Data 15 / 227
Qu’est-ce que le Big Data ? Vocabulaire
Vocabulaire
I Not Only SQL / Bases sans schéma : Catégorie de systèmes de gestion de
base de données (SGBD) qui n’est plus fondée sur l’architecture classique des
bases relationnelles. L’unite logique n’y est plus la table, et les données ne
sont en general pas manipulees avec SQL.
I MapReduce : modèle de programmation permettant de manipuler de grandes
quantités de données non obligatoirement structurées.
I Hadoop / Cassandra / MongoDB : framework de développement d’applica-
tion utilisant le modèle Map Reduce.
I Data Flow / Pig / Hive ... : logiciel et langage d’analyse de données per-
mettant d’utiliser Hadoop.
Minyar Sassi Hidri Technologies pour le Big Data 16 / 227
Problématique et termes clés
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 17 / 227
Problématique et termes clés
Problématique et termes clés (1)
I Le Big Data se caractérise par la problématique des 3V (5V) :
- Volume (Volume)
- L’entreprise est submergée de volumes de données croissants de tous
types.
Variété (Variety)
- Gérer la complexité de plusieurs types de données et de schémas struc-
turés ou non structurés (texte, données de capteurs, son, vidéo, logs,
etc.).
Vitesse (Velocity)
- Parfois, les données doivent être saisies et traitées au fil de l’eau, au fur et
à mesure de leur collection par l’entreprise, pour la détection des fraudes
(on qualifie de fraude toute action destinée à tromper. La falsification et
l’adultération sont des exemples de fraude) par exemple.
Minyar Sassi Hidri Technologies pour le Big Data 18 / 227
Problématique et termes clés
Problématique et termes clés (2)
I Vous êtes confrontés à une problématique de gestion de données cor-
respondant à ces trois critères.
I Vous ne savez plus gérer ces données avec les architectures tradition-
nelles.
⇒ Vous avez une problématique de type Big Data.
I Il faut en effet penser à collecter, stocker puis analyser les données d’une
fac¸on qui ne peut plus être traitée par une approche traditionnelle pour
permettre de satisfaire au 4ème V.
⇒ la Valorisation des données.
I Objectif : Relever ce qui est important et ce qui l’est moins.
Minyar Sassi Hidri Technologies pour le Big Data 19 / 227
Problématique et termes clés
Big Data : Volume (1)
I Le prix de stockage des données a beaucoup diminué ces 30 dernières
années :
- De $100.000 / Go (1980)
- `A $0.10 / Go (2013)
- Ordre de grandeur :
- Kilobytes : KB bytes
- Megabytes : MB
- Gigabytes : GB
- Terabytes : TB (1012
) bytes
- Petabytes : PB (1015
) bytes
- Exabytes : EB (1018
) bytes
- Zettabytes : ZB (1021
) bytes
- Yottabytes : YB (1024
) bytes.
- 1 Yottabyte nécessite 250 trillion DVD.
- Grand marché de données est estimé à croître de
45% par annnée pour atteindre 25 milliards de dol-
lars cette année (2015).
- ∼ 1.8 ZB créées en 2011 ; ∼ 8 ZB en 2015 ; ∼ 35
ZB en 2020
Minyar Sassi Hidri Technologies pour le Big Data 20 / 227
Problématique et termes clés
Big Data : Volume (2)
I Les lieux de stockage fiables (comme des SAN : Storage Area Network) ou
réseaux de stockage peuvent être très coûteux :
Choisir de ne stocker que certaines données, jugées sensibles.
Perte de données, pouvant être très utiles, comme les Logs.
I Comment déterminer les données qui méritent d’être stockées ?
Transactions ? Logs ? Métier ? Utilisateur ? Capteurs ? Médicales ? Sociales ?.
⇒ Aucune donnée n’est inutile. Certaines n’ont juste pas encore servi.
I Problèmes :
- Comment stocker les données dans un endroit fiable, qui soit moins cher ?
- Comment parcourir ces données et en extraire des informations facilement et
rapidement ?
Minyar Sassi Hidri Technologies pour le Big Data 21 / 227
Problématique et termes clés
Big Data : Variété (1)
I Pour un stockage dans des bases de données ou dans des entrepôts de
données, les données doivent respecter un format prédéfini.
I La plupart des données existantes sont non-structurées ou semi-structurées
I Données sous plusieurs formats et types.
I On veut tout stocker :
Exemple : pour une discussion dans un centre d’appel, on peut la stocker sous forme
textuelle pour son contenu, comme on peut stocker l’enregistrement en entier, pour
interpréter le ton de voix du client.
I Certaines données peuvent paraître obsolètes, mais sont utiles pour
certaines décisions :
Exemple : Pour le transport de marchandise, on a tendance à choisir le camion le plus
proche. Mais parfois, ce n’est pas la meilleure solution. D’autres problèmes peuvent
intervenir.
Besoin de : Données GPS, plan de livraison du camion, circulation, chargement du
camion, Niveau d’essence...
Minyar Sassi Hidri Technologies pour le Big Data 22 / 227
Problématique et termes clés
Big Data : Variété (2)
Données structurées versus Données non structurées
I Données structurées : Données que l’on peut clairement codifier et identifier.
I Les données d’un tableur sont typiquement des données structurées.
I On peut comprendre leurs significations en croisant les titres de la ligne et colonne dans
laquelle se trouent les données.
⇒ Les systèmes d’analyse algorithmique ont depuis toujours été développés pour traiter ce
type de données.
I Données non structurées :
Données qui ne répondent
pas à un codage qui per-
met d’en tirer de l’infor-
mation.
I C’est en analysant les
contenus des messages
que l’on déduit l’informa-
tion : fichiers texte, au-
dio, vidéo, etc. que l’on
peut clairement codifier et
identifier.
Minyar Sassi Hidri Technologies pour le Big Data 23 / 227
Problématique et termes clés
Big Data : Vélocité
I Rapidité d’arrivée des données.
I Vitesse de traitement.
I Les données doivent être stockées a l’arrivée, parfois même des Tera-
octets par jour
Sinon, risque de perte d’informations.
I Exemple :
Il ne suffit pas de savoir quel article un client a acheté ou réservé.
Si on sait que vous avez passé plus de 5mn à consulter un article dans une boutique
d’achat en ligne, il est possible de vous envoyer un email dès que cet article est soldé.
Minyar Sassi Hidri Technologies pour le Big Data 24 / 227
Problématique et termes clés
Big Data : Le 4ème V - La Véracité
I On peut classifier les données traitées sous le chapeau du Big Data en
deux principaux types :
+ Données des entreprises : elles comportent les emails, les documents, les bases de
données, toutes les historiques des processus métiers (Logs)
+ Données en dehors des entreprises : elles englobent les bases de données externes
(publiques ou fournisseurs de données) contenues et échangées via les réseaux sociaux
, en ligne, les historiques de navigation et de recherche, les données transmises par
les objets connectés, etc.
⇒ Véracité : ou qualité de données s’introduit.
Données doivent être nettoyées, essuyées et mises en cohérence avant de pou-
voir être analysées et croisées avec les données internes.
La qualité des données dépend de deux facteurs :
- Données peuvent être inexactes, incomplètes ou structurées d’une ma-
nière qui les rendent difficile à analyser.
⇒ Il devient indispensable de vérifier la crédibilité de la source et la
qualité du contenu préalablement.
- Il n’est pas toujours facile d’anticiper quelles sont les données qui seront
utiles à l’entreprise.
⇒ Bien étudier et définir le besoin réel pour ne pas dépenser ses res-
sources à l’analyse de données qui peuvent être inutiles.
Minyar Sassi Hidri Technologies pour le Big Data 25 / 227
Problématique et termes clés
Big Data : Le 4ème V - La Véracité
Source : IBM
Minyar Sassi Hidri Technologies pour le Big Data 26 / 227
Problématique et termes clés
Big Data : Le 5ème V - La Visualisation (Valeur) (1)
I Le Big Data, ce n’est pas simplement des volumes de données considérables échangés,
mais aussi une variété de contenus, de formats et de sources infinies, ainsi qu’une véritable
problématique de maîtrise de la vitesse de création et de mise à jour des données.
I Enfin, et pas des moindres, la Big Data met en opposition deux nécessités a priori contra-
dictoires :
- Celle de rationaliser et rendre accessibles des données qui se comptent pourtant
en millions, milliards...C’est là qu’intervient le besoin d’une visualisation de
données optimale et adaptée à une exploitation très opérationnelle de cette
Big Data, avec trois objectifs finaux : Créer de la valeur, découvrir des insights
différenciants, innover...le tout à un coût modéré !
Minyar Sassi Hidri Technologies pour le Big Data 27 / 227
Forces majeurs
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 28 / 227
Forces majeurs
Forces majeurs
D’une manière générale, on identifie cinq forces majeures à l’origine de
l’accélération et l’augmentation du mouvement Big Data à savoir :
La révolution du stockage grâce au Cloud.
L’avènement d’une nouvelle science des données : les Analytics avancés.
Les nouvelles possibilités de monétisation.
L’automatisation des échanges de données et les objets connectés.
Les progrès de la visualisation de données.
Minyar Sassi Hidri Technologies pour le Big Data 29 / 227
Forces majeurs Révolution de stockage
Forces majeurs
Révolution de stockage
I Massification des échanges de données + Augmentation des types de contenus
⇒ Dépassement des possibilités de stockage des entrepôts de données des
entreprises (SQL et MySQL pour les BDR).
I Année 2000 : ruptures importantes se sont produites sur le volet stockage de
l’information grâce à l’Internet :
Proposer aux entreprises et aux particuliers des espaces de stockage flexibles dans les
nuages ou Cloud à des prix très compétitifs (Google, Amazon, etc.) ;
Espaces accessibles à travers des interfaces en ligne (Google App Engine, etc.).
Développement d’une nouvelle philosophie de stockage intelligent de données, sous
le vocable NoSQL, permettant des requêtes plus rapides et plus flexibles.
⇒ Grâce aux progrès technologique du Cloud et du NoSQL, le stockage et l’exploration du
Big Data devient une opportunité plutôt qu’un obstacle pour les entreprises.
Minyar Sassi Hidri Technologies pour le Big Data 30 / 227
Forces majeurs Avènement d’une nouvelle science des données
Forces majeurs
Avènement d’une nouvelle science des données
I La révolution du Big Data va de pair avec l’emergence d’une nouvelle science
des données.
I D’après Eric Moulines :
La valorisation des immenses volumes de données hétérogènes passe la mise
en œuvre d’analyses sophistiquées, un véritable passage à l’échelle dans la
conception des modèles d’analyse et la mise en œuvre des algorithmes.
I Analytics avancés :
Statistiques non-paramétriques : Le modèle n’est pas décrit par un nombre fini de
paramètres (http ://cmatias.perso.math.cnrs.fr/Docs/cours stat np ensiie.pdf).
Règles d’association.
Réduction de dimension : ACP, ACM, AFC, etc..
Classification non supervisée (ou clustering) : k-moyennes, CMF, etc..
Algorithmes génétiques.
Minyar Sassi Hidri Technologies pour le Big Data 31 / 227
Forces majeurs Automatisation des échanges de données et les objets connectés
Forces majeurs
Automatisation des échanges de données et les objets connectés
I D’après Jean Franc¸ois Marcotorchino, Vice-Président et Directeur scientifique
de Thales France :
Le transfert extrêmement massif d’informations multimodales (vidéos, images,
sons, localisation en plus du texte et des données structurées) via les smart-
phones, les appareils connectés, les réseaux sociaux, mais aussi les opérateurs
de e-commerce sont des facteurs fondamentaux à l’origines des problématiques
Big Data..
I Exemple :
- Chaque fois qu’on visite un site, qu’on clique sur un lien, depuis un ordinateur ou
un smartphone, le comportement de l’utilisateur sur le site est automatiquement
enregistré et analysé pour déterminer son profil, ses intentions d’achat et ses goûts.
- Chaque étape du parcours de l’utilisateur peut être analysée pour comprendre les
facteurs qui ont influencé sa décision d’achat et les critères qui lui sont indifférents.
- De la même fac¸on, son décodeur TV analyse et transmet en temps réel des informa-
tions sur ses comportements devant la télévision, connaˆıtre ce qu’il regarde, s’il zappe
dès le début des publicités, s’il regarde plus souvent la télévision seul ou à plusieurs,
etc.
Minyar Sassi Hidri Technologies pour le Big Data 32 / 227
Forces majeurs Progrès de la visualisation de données
Forces majeurs
Progrès de la visualisation de données
I Les utilisateurs / décideurs doivent pouvoir visualiser et comprendre les résultats.
I Le Reporting version Big Data doit être conc¸u pour pouvoir trouver une aiguille dans une
botte de foin.
⇒ On parle de data vizualisation.
I Exemple : Tableur, Qlikview, Gephi, etc.
Minyar Sassi Hidri Technologies pour le Big Data 33 / 227
Importance et défis du Big Data
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 34 / 227
Importance et défis du Big Data Importance du Big Data
Importance du Big Data
I Dans la technologie de l’information : améliorer la sécurité, diagnostiquer les anomalies et
le dépannage en analysant les structures dans les logs existants.
I Au service chargé de la clientèle : en utilisant des informations des centres d’appels afin
d’obtenir les modèles de clientèle et donc d’améliorer la satisfaction du client par la per-
sonnalisation des services.
I Dans l’amélioration des services et des produits : à travers l’utilisation du contenu des médias
sociaux. En connaissant les préférences des clients potentiels, l’entreprise peut modifier son
produit afin de répondre à une plus large gamme de personnes.
I Dans la détection de la fraude : dans les transactions en ligne pour toute type d’industrie.
I Dans l’évaluation des risques en analysant les informations provenant des transactions sur
le marché financier.
Minyar Sassi Hidri Technologies pour le Big Data 35 / 227
Importance et défis du Big Data Défis du Big Data
Défis du Big Data
I Afin de déterminer la meilleure stratégie pour une entreprise, il est essentiel que les données
qu’on compte sur soient correctement analysées.
I Le laps de temps de cette analyse est important parce que certaines d’entre elles doivent
être effectuées fréquemment afin de déterminer rapidement tout changement dans l’envi-
ronnement des affaires.
I Nouvelles technologies ⇒ problème organisationnel.
I La nécessité des spécialistes de l’informatique : pour qu’une entreprise prend l’initiative
du Big Data, elle doit soit engager des experts ou former les employés existants dans ce
nouveau domaine.
I La confidentialité et la sécurité : Comme le Big Data englobe une grande quantité de
données complexes, il est très difficile pour une entreprise de trier ces données selon des
niveaux privés et d’appliquer la sécurité adéquate. En outre, la plupart des entreprises
aujourd’hui font des affaires à travers des pays et continents et les différences entre les
lois privées sont considérables et doivent être pris en considération lors du démarrage de
l’initiative Big Data.
Minyar Sassi Hidri Technologies pour le Big Data 36 / 227
Big Data et décisionnel
Plan
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 37 / 227
Big Data et décisionnel
Big Data et décisionnel
I Le modèle OLAP, ou traitement analytique en ligne, est considéré l’ancêtre du Big Data.
I Il s’agit de volumes importants de données historiques qui représentent toutes les données
de l’entreprise, et qui sont requˆetées afin d’obtenir des informations agrégées et statistiques
de l’activité de l’entreprise (décisionnel, ou Business Intelligence), ou pour extraire des
informations nouvelles de ces données existantes à l’aide d’algorithmes de traitement des
données (Data Mining).
I Mais...
- Modélisation des données prélimi-
naires : Fait et Dimensions.
- Structuration de données / à des be-
soins spécifiques.
- Application à une analyse multi-
dimensionnelle des données, mais
pas pour fouille de données ou ap-
prentissage automatique.
Minyar Sassi Hidri Technologies pour le Big Data 38 / 227
Approche traditionnelle versus approche Big Data
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 39 / 227
Approche traditionnelle versus approche Big Data Approche traditionnelle
Approche Traditionnelle
Analyse structurée et répétée
I Les besoins métiers guident la conception de la solution.
I Appropriée pour les données structurées.
I Les opérations et les processus répétitifs, les sources relativement stables et les besoins sont
bien compris et cadrés.
Minyar Sassi Hidri Technologies pour le Big Data 40 / 227
Approche traditionnelle versus approche Big Data Approche Big Data
Approche Big Data (1)
Analyse itérative et exploratoire
I Les sources d’information guident la découverte créative.
Minyar Sassi Hidri Technologies pour le Big Data 41 / 227
Approche traditionnelle versus approche Big Data Fusion de deux approches
Fusionner l’approche Big Data avec l’approche
Traditionnelle
I La question n’est pas :
- Dois-je choisir entre l’approche classique et l’approche Big Data ?
I Mais plutôt :
- Comment les faire fonctionner ensemble ?
Approche Traditionnelle Approche Big Data
Analyse structurée et répétée Analyse itérative et exploratoire
Minyar Sassi Hidri Technologies pour le Big Data 42 / 227
Mise en place du Big Data : des chantiers de grande ampleur
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 43 / 227
Mise en place du Big Data : des chantiers de grande ampleur
Mise en place d’un projet Big Data
I Choisir d’investir dans le Big Data est un premier pas, encore faut-il que les besoins métier
soient identifiés en amont.
I Deux étapes : Instruction & Conception
- Instruction : Essentielle à chaque projet et prend tout son poids dans ce type de chantiers.
Minyar Sassi Hidri Technologies pour le Big Data 44 / 227
Mise en place du Big Data : des chantiers de grande ampleur
Méthodologie
Une approche progressive et itérative
I Dans ce type de projets, le modèle clas-
sique du cycle en V est déconseillé.
I Il faut au contraire construire la solution
progressivement, en prévoyant quelques
itérations comprenant des interactions
avec les futurs utilisateurs.
I Données sont au cœur des attentes ⇒ Un
dialogue permanent avec les utilisateurs
des données doit être établi.
I Les méthodes incrémentales sont donc adaptées à ce type de projet :
- Il s’agit de diviser le projet en incréments, c’est-à-dire en parties fonctionnelles cohé-
rentes.
- Chaque incrément pouvant être testé séparément et faisant l’objet de plusieurs itéra-
tions.
- L’objectif est d’impliquer les utilisateurs dans le développement, la fourniture des
exigences et l’évaluation des itérations.
Minyar Sassi Hidri Technologies pour le Big Data 45 / 227
Enjeux stratégiques
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 46 / 227
Enjeux stratégiques Big Data : pour qui, pour quoi ?
Big Data : pour qui, pour quoi ?
Des arômes et ingrédients qui se déclinent dans tous les secteurs d’activité
Minyar Sassi Hidri Technologies pour le Big Data 47 / 227
Enjeux stratégiques Impacts du Big Data dans l’entreprise
Impacts du Big Data dans l’entreprise (1)
I La Big Data impacte l’ensemble de l’entreprise et permet de remettre
le client au cœur de la stratégie :
Tous les départements sont concernés par l’exploitation du Big Data : Marketing,
Communication, Digital, RH, ´Etudes, Commercial, Finances, Innovation, Direction
Générale...
Finie la démarche Top Down où la Marque pousse sa stratégie vers le consommateur,
en espérant que celle ci cadre avec les attentes de ses cibles. La Big Data permet,
via l’analyse data, de se défaire de cette angoisse puisqu’elle remet le consommateur
au cœur de la stratégie de l’entreprise.
Ainsi, le comportement du consommateur, ses centres d’intérêt et ses prises de parole
libres générés à grande échelle sont agrégés et analysés afin de créer ce fameux cadre
stratégique, qui devient par définition totalement ajusté aux besoins et attentes des
clients, et permet à la Marque d’alimenter toutes les directions de l’entreprise de
fac¸on innovante et performante.
Minyar Sassi Hidri Technologies pour le Big Data 48 / 227
Enjeux stratégiques Impacts du Big Data dans l’entreprise
Impacts du Big Data dans l’entreprise (2)
Minyar Sassi Hidri Technologies pour le Big Data 49 / 227
Enjeux stratégiques Impacts du Big Data dans l’entreprise
Impacts du Big Data dans l’entreprise (3)
I L’emergence de nouveaux metiers capables de gérer vos données d’In-
ternet et d’en extraire les bonnes informations :
Architecte Big Data :
- Connaissance infrastructures et logiciels Big Data.
Connaissances en modélisations.
Data Analyst
- Connaissance des logiciels & langages Big Data.
Connaissance en modélisations.
Data Scientist :
- Connaissance des logiciels & langages Big Data.
Connaissance en modélisations.
Connaissances metiers.
Chief-Data-Officer (Directeur des données) :
- Responsable des données et de leur gouvernance (collecte, traitement,
sauvegarde, accès).
Responsable de l’analyse des données et aide à la decision.
⇒ Mettre en œuvre des équipes agiles & transverses.
Minyar Sassi Hidri Technologies pour le Big Data 50 / 227
Enjeux technologiques
1 Big Data : Faits, Intérêts, Sources et Challenges
2 Qu’est-ce que le Big Data ?
Historique & contexte
Définition
Est-ce une innovation ?
Vocabulaire
3 Problématique et termes clés
4 Forces majeurs
5 Importance et défis du Big Data
6 Big Data et décisionnel
7 Approche traditionnelle versus approche Big Data
Approche traditionnelle
Approche Big Data
Fusion de deux approches
8 Mise en place du Big Data : des chantiers de grande ampleur
9 Enjeux stratégiques
Big Data : pour qui, pour quoi ?
Impacts du Big Data dans l’entreprise
10 Enjeux technologiques
Minyar Sassi Hidri Technologies pour le Big Data 51 / 227
Enjeux technologiques
Enjeux technologiques
Types d’outils utilisés dans le Big Data
I Où le traitement est hébergé ?
Serveurs distribués / Cloud (exemple Amazon EC2)
I Où les données sont stockées ?
Stockage distribué (exemple Amazon S3)
I Quel modèle de programmation ?
Traitement réparti (exemple MapReduce)
I Comment les données sont stockées et indexées ?
Bases de données à haute performance sans schéma (exemples MongoDB,
Cassandra)
I Quelles opérations sont effectuées sur des données ?
Analytique
Minyar Sassi Hidri Technologies pour le Big Data 52 / 227
Chapitre 2 - Hadoop, MapReduce et le Big
Data
1 Hadoop : Un standard de gestion des données et applications distribuées
2 HDFS : Hadoop Distributed File System
3 MapReduce
Minyar Sassi Hidri Technologies pour le Big Data 53 / 227
Objectifs
I Découvrir diverses solutions complémentaires liées à Hadoop.
I Apprendre à installer et à utiliser Hadoop.
I Découvrir le paradigme de programmation parallèle MapReduce.
Minyar Sassi Hidri Technologies pour le Big Data 54 / 227
Hadoop
1 Hadoop : Un standard de gestion des données et applications distribuées
Problématiques du calcul distribué
La solution : Apache Hadoop
L’écosystème Hodoop
2 HDFS : Hadoop Distributed File System
Présentation
Architecture
´Ecriture / Lecture d’un fichier
3 MapReduce
Présentation
Modèle de programmation
Exemples
Minyar Sassi Hidri Technologies pour le Big Data 55 / 227
Hadoop Problématiques du calcul distribué
Problématiques du calcul distribué (1)
I Calcul distribué : exécution d’un traitement informatique sur une mul-
titude de machines différentes (un cluster de machines) de manière
transparente.
I Problématiques :
Accès et partage des ressources pour toutes les machines.
Extensibilité : on doit pouvoir ajouter de nouvelles machines pour le
calcul si nécessaire.
Hétérogénéité : les machines doivent pouvoir avoir différentes archi-
tectures.
Tolérance aux pannes : une machine en panne faisant partie du cluster
ne doit pas produire d’erreur pour le calcul dans son ensemble.
Transparence : le cluster dans son ensemble doit être utilisable comme
une seule et même machine traditionnelle.
Minyar Sassi Hidri Technologies pour le Big Data 56 / 227
Hadoop Problématiques du calcul distribué
Problématiques du calcul distribué (2)
I Ces problématiques sont complexes et ont donné lieu à des années de
recherche et d’expérimentation.
I On distingue historiquement deux approches/cas d’usage :
[1] Effectuer des calculs intensifs localement (recherche scientifique) - on
souhaite avoir un cluster de machines local pour accélérer le traitement.
⇒ Solution qui était jusqu’ici coûteuse et complexe à mettre en œuvre.
[2] Exploiter la démocratisation de l’informatique moderne et la bonne
volonté des utilisateurs du réseau pour créer un cluster distribué via
Internet à moindre coût.
⇒ Solution qui suppose qu’on trouve des volontaires susceptibles de
partager leur puissance de calcul.
Minyar Sassi Hidri Technologies pour le Big Data 57 / 227
Hadoop Problématiques du calcul distribué
Problématiques du calcul distribué (3)
I De nombreuses universités et entreprises ont des besoins d’exécution
locale de tâches parallélisables sur des données massives.
I Les solutions qui étaient disponibles jusqu’ici :
[1] Des super calculateurs classiques comme Blue Gene : très oné-
reux, souvent trop puissants par rapport aux besoins requis, réservés
aux grands groupes industriels.
[2] Des solutions développées en interne : investissement initial très
conséquent, nécessite des compétences et une rigueur coûteuses.
[3] Architecture Beowulf : un début de réponse, mais complexe à mettre
en œuvre pour beaucoup d’entreprises ou petites universités, et nécessi-
tant aussi un investissement initial assez conséquent.
Minyar Sassi Hidri Technologies pour le Big Data 58 / 227
Hadoop Problématiques du calcul distribué
Problématiques du calcul distribué (4)
I Le problème qui se posait jusqu’ici pour ce cas d’usage :
Avoir un framework déjà disponible, facile à déployer, et qui permette
l’exécution de tâches parallélisables - et le support et le suivi de ces
tâches - de manière rapide et simple à mettre en œuvre.
L’idée étant d’avoir un outil off the shelf qui puisse être installé et
configuré rapidement au sein d’une entreprise/d’une université et qui
permet à des développeurs d’exécuter des tâches distribuées avec un
minimum de formation requise.
L’outil en question devant être facile à déployer, simple à supporter, et
pouvant permettre la création de clusters de tailles variables extensibles
à tout moment.
Minyar Sassi Hidri Technologies pour le Big Data 59 / 227
Hadoop La solution : Apache Hadoop
La solution Apache Hadoop
Avantages
Projet de la fondation Apache - Open Source, composants complètement
ouverts, tout le monde peut participer.
Modèle simple pour les développeurs : il suffit de développer des tâches Ma-
pReduce depuis des interfaces simples accessibles via des librairies dans des
langages multiples (Java, Python, C/C++, Rubby, R, etc.).
Déployable très facilement (paquets Linux pré-configurés), configuration très
simple elle aussi.
S’occupe de toutes les problématiques liées au calcul distribué, comme l’accès
et le partage des données, la tolérance aux pannes, ou encore la répartition
des tâches aux machines membres du cluster.
⇒ Le programmeur a simplement à s’occuper du développement logiciel pour
l’exécution de la tâche.
Minyar Sassi Hidri Technologies pour le Big Data 60 / 227
Hadoop La solution : Apache Hadoop
Historique
2002 : Doug Cutting (directeur archive.org) et Mike Cafarella (étudiant) développent
Nutch, un moteur de recherche Open Source exploitant le calcul distribué.
L’implémentation peut tourner seulement sur quelques machines et a de multiples pro-
blèmes, notamment en ce qui concerne l’accès et le partage de fichiers.
2003/2004 : Le département de recherche de Google publie deux whitepapers, le premier
sur GFS (un système de fichier distribué) et le second sur le paradigme MapReduce pour le
calcul distribué.
2004 : Doug Cutting et Mike Cafarella développent un framework (encore assez primitif)
inspiré des papers de Google et portent leur projet Nutch sur ce framework.
2006 : Doug Cutting, chez Yahoo, est en charge d’améliorer l’indexation du moteur de
recherche de Yahoo. Il exploite le framework réalisé précédemment et créé une nouvelle
version améliorée du framework en tant que projet Open Source de la fondation Apache,
qu’il nomme Hadoop (le nom d’un éléphant en peluche de son fils).
- `A l’époque, Hadoop est encore largement en développement - un cluster pouvait alors comporter au maximum 5
à 20 machines, etc.
.
2008 : Le développement est maintenant très abouti, et Hadoop est exploité par le moteur
de recherche de Yahoo ainsi que par de nombreuses autres divisions de l’entreprise.
2011 : Hadoop est désormais utilisé par de nombreuses autres entreprises et des universités,
et le cluster Yahoo comporte 42000 machines et des centaines de Petaoctets d’espace de
stockage.
2015 : Hadoop se généralise notamment avec le buzz BigData et Cloud...
Minyar Sassi Hidri Technologies pour le Big Data 61 / 227
Hadoop La solution : Apache Hadoop
Qui utilise Hadoop ?
...et des centaines d’entreprises et universités à travers le monde.
Minyar Sassi Hidri Technologies pour le Big Data 62 / 227
Hadoop La solution : Apache Hadoop
Apache Hadoop : Une technologie en plein essort
I De plus en plus de données produites par des SI deviennent très nombreuses. Ces données
doivent toutes être analysées, corrélées, etc.
I Hadoop offre une solution idéale et facile à implémenter au problème.
Le projet Hadoop consiste en deux grandes parties :
- Stockage des données : HDFS (Hadoop Distributed File System).
- Traitement des données : MapReduce.
Principe :
- Diviser les données.
- Les sauvegarder sur une collection de machines, appelées cluster.
- Traiter les données directement là où elles sont stockées, plutôt que de les copier à partir d’un serveur
distribué.
Note : Il est possible d’ajouter des machines à votre cluster, au fur et à mesure que les données
augmentent.
I Le domaine de recherche/industriel autour de la gestion et de l’analyse de ces données - et
de Hadoop et les technologies associées - est communément désigné sous l’expression Big
Data.
I Estimations IDC : croissance de 60% par an de l’industrie Big Data, pour un marché de
813 millions de dollars en 2016 uniquement pour la vente de logiciels autour de Hadoop.
IDC : International Data Corporation - une entreprise américaine spécialisée dans la réalisation d’études de marché dans
les domaines des technologies de l’information et de la communication et de l’électronique grand public.
Minyar Sassi Hidri Technologies pour le Big Data 63 / 227
Hadoop L’écosystème Hodoop
Hadoop : Système d’exploitation de la donnée
Vue d’ensemble
I HDFS : Système de fichiers distri-
bué.
I MapReduce : Framework de trai-
tement parallélisé.
I HBase
Système de gestion de base de données non-relationnelles distribué de type orientée colonnes.
I Pig : Requêtage des données Hadoop à partir d’un langage de script.
I Hive : Requêtage de type SQL.
Et la gestion des transactions ? ? ? ? ?
Déjà dans toutes les têtes surtout celle de Doug Cutting (le père de Hadoop) ! !
Minyar Sassi Hidri Technologies pour le Big Data 64 / 227
Hadoop L’écosystème Hodoop
Collecte et integration de données
I Sqoop
Outils permettant de transférer des données en masse entre Hadoop et un entrepôt
de données structuré tel qu’une BD.
I Flume
Flume est un service distribué, fiable et hautement disponible servant à la collecte,
l’agrégation et le déplacement d’une grosse quantité de données de logs.
I Kafka (messaging)
Système orienté message de type publish/subscribe implémenté comme système de
traces transactionnel distribué, adapté pour la consommation de messages en-ligne
et hors ligne.
Minyar Sassi Hidri Technologies pour le Big Data 65 / 227
Hadoop L’écosystème Hodoop
Batch Processing
I Hive
Permet l’exécution de requêtes SQL sur un cluster Hadoop en vue d’analyser et
d’agréger les données.
Langage de visualisation uniquement.
Offre les connecteurs ODBC/JDBC.
I Pig
Permet le requêtage des données Hadoop à partir d’un langage de script.
Basé sur un langage de haut niveau permettant de créer des programmes de type
MapReduce.
I Cascading
API de traitement de données et planificateur de requêtes pour la définition, le partage
et le traitement de données.
I Spark
Moteur d’analyse multi-fonctions adapté au traitement rapide de gros volumes de
données.
Concurrent de MapReduce.
Minyar Sassi Hidri Technologies pour le Big Data 66 / 227
Hadoop L’écosystème Hodoop
Analytic SQL
I Drill
Système distribué permettant d’effectuer des requêtes sur de larges données permet-
tant l’analyse interactive des données en SQL.
Permet de requêter des sources de données hétérogènes : MongoDB, JSON, HDFS,
Hive, Classpath, HBase.
Offre le connecteur ODBC.
I Impala
Système distribué permettant d’effectuer des requêtes sur de larges données permet-
tant l’analyse interactive des données en SQL.
Permet de requêter des sources de données hétérogènes : HDFS, HBase.
Compatible avec Hive.
I Spark SQL
Module de Spark offrant une API de plus haut niveau avec une syntaxe SQL.
´Equivalent à Hive mais s’exécutant sur Spark.
Offre le connecteur JDBC.
Minyar Sassi Hidri Technologies pour le Big Data 67 / 227
Hadoop L’écosystème Hodoop
Stream processing
I Storm
Système de calcul distribué temps réel.
I Spark Streaming
Module de Spark permettant de traiter des flux de données qui arrivent en continu,
et donc de traiter ces données au fur et à mesure de leur arrivée.
I Spring XD
Basé sur Spring Integration, Spring Batch et Spring Data.
I Samza
Framework permettant de traiter de manière distribué des flux.
Utilise Kafka, Yarn.
Minyar Sassi Hidri Technologies pour le Big Data 68 / 227
Hadoop L’écosystème Hodoop
Machine Learning (apprentissage automatique)
I Mahout
Vise à créer des implémentations d’algorithmes d’apprentissage automa-
tiques et de Data Mining.
Même si les principaux algorithmes d’apprentissage se basent sur Ma-
pReduce, il n’y a pas d’obligation à utiliser Hadoop.
I Spark ML
Librairie Spark de machine learning fournissant les algorithmes de clas-
sique :
- Classification.
- Regression.
- Clustering.
- Filtrage collaborative.
- Réduction de la dimension.
- ...
Minyar Sassi Hidri Technologies pour le Big Data 69 / 227
Hadoop L’écosystème Hodoop
Search Engine
I SolR
VSolR offre une indexation distribuée et répliquée basée sur Apache Lu-
cene.
Permet la recherche full text, le highlighting, le facetting et la recherche
géospatiale.
Permet l’indexation de documents riches.
I Elastic
Elastic offre une indexation distribuée et répliquée basée sur Apache
Lucene.
Permet la recherche full text, le highlighting, le facetting et la recherche
géospatiale.
Permet l’indexation de documents riches.
Minyar Sassi Hidri Technologies pour le Big Data 70 / 227
Hadoop L’écosystème Hodoop
Les distributions
Pourquoi des distributions ?
I Pour regrouper de fac¸on homogène les différentes extensions.
I Pour faciliter l’installation, la diffusion et le support.
I Pour permettre d’incuber des Business Model pour les éditeurs qui
contribuent largement à Hadoop.
I 3 acteurs majeurs dans l’écosystème :
HortonWorks.
Cloudera.
MapR.
I Comment choisir une solution Hadoop ?
Modèle économique (Open Source, Commercial..).
Les composants.
Maturité de la solution, le support, la documentation, le retour d’experiences.
Le rapport avec Hadoop, la rapidité des evolutions.
Partenariats (hébergeurs...), compatibilité avec les produits satellites.
Minyar Sassi Hidri Technologies pour le Big Data 71 / 227
HDFS : Hadoop Distributed File System
1 Hadoop : Un standard de gestion des données et applications distribuées
Problématiques du calcul distribué
La solution : Apache Hadoop
L’écosystème Hodoop
2 HDFS : Hadoop Distributed File System
Présentation
Architecture
´Ecriture / Lecture d’un fichier
3 MapReduce
Présentation
Modèle de programmation
Exemples
Minyar Sassi Hidri Technologies pour le Big Data 72 / 227
HDFS : Hadoop Distributed File System Présentation
HDFS : Présentation
I Pour stocker les données en entrée de nos tâches Hadoop, ainsi que les résul-
tats de nos traitements, on va utiliser HDFS : Hadoop Distributed FileSystem.
I HDFS est inspiré de GFS, un système de fichiers distribué conc¸u par Google.
I L’implémentation de HDFS a son origine dans un whitepaper issu du dépar-
tement de recherche de Google (The Google File System, 2003)
I Il s’agit du système de fichier standard de Hadoop - au même sens que les
systèmes de fichiers FAT32, NTFS ou encore Ext3FS, mais :
Systèmes de fichiers : les données sont écrites dans des blocs gérés par le FileSystem.
HDFS : les données sont écrites dans des blocs gérés par le HDFS, qu’il est évidem-
ment distribué.
I Permet :
La réplication (les blocs sont répliqués).
La scalabilité (les blocs ne sont pas tous sur la même machine).
Le stockage des données structurées ou non sur un ensemble de serveurs distribués.
Minyar Sassi Hidri Technologies pour le Big Data 73 / 227
HDFS : Hadoop Distributed File System Architecture
HDFS : Architecture (1)
I Node (Master/Slave) : dans
une architecture Hadoop,
chaque membre pouvant traiter
des données est appelé Node
(Nœud).
I Un seul d’entre eux peut être
Master même s’il peut changer
au cours de la vie du cluster, il
s’agit du NameNode (NN). Il est
responsable de la localisation des
données dans le cluster.
I Les autres nœuds, stockant les données, sont des slaves appelés DataNode
(DN).
I Le NN est donc un point unique de défaillance (Single Point Of Failure
(SPOF)) dans un cluster Hadoop (Hadoop 2.0 introduit un basculement (fai-
lover) automatisé).
Minyar Sassi Hidri Technologies pour le Big Data 74 / 227
HDFS : Hadoop Distributed File System Architecture
HDFS : Architecture (2)
I NN : stocke les informations relatives aux noms de fichiers. C’est ce serveur qui, par exemple,
va savoir qu’un fichier dans le répertoire Data Input, créé par le programmeur, comporte
58 blocs de données, et qui sait où ils se trouvent. Il y a un seul NN dans tout le cluster
Hadoop.
I DN : stocke les blocs de données eux-mêmes. Il y a un DN pour chaque machine au sein
du cluster, et ils sont en communication constante avec le NN pour recevoir de nouveaux
blocs, indiquer quels blocs sont contenus sur le DN, signaler des erreurs, etc...
I BlockSize : Taille unitaire de stockage (généralement 64 Mo ou 128 Mo). C’est à dire
qu’un fichier de 1 Go et une taille de block de 128 Mo sera divisé en 8 blocks.
I Replication Factor
C’est le nombre de copies d’une donnée devant être reparties sur les différents nœuds du cluster (souvent 3, c’est
à dire une primaire et deux secondaires).
I Processus de lecture HDFS :
Interrogation du NN pour localiser les adresses des nœuds hébergeant les blocs sous-
jacents les plus proches.
I Processus d’écriture
Écriture sur le DN.
DN communique ses blocs au NN.
Replication.
Minyar Sassi Hidri Technologies pour le Big Data 75 / 227
HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier
´Ecriture / Lecture d’un fichier
´Ecriture Lecture
Minyar Sassi Hidri Technologies pour le Big Data 76 / 227
HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier
Écriture d’un fichier
I Si on souhaite écrire un fichier au sein de
HDFS, on va utiliser la commande princi-
pale de gestion de Hadoop : $hadoop fs.
I Le programme va diviser le fichier en blocs
de 64MB (ou 128 Mo, selon la configura-
tion).
I Il va ensuite annoncer au NN.
I Le NN va alors indiquer au programme
qu’il doit stocker le bloc 1 sur le DN nu-
méro 3, et le bloc 2 sur le DN numéro 1.
I Le client Hadoop va alors contacter direc-
tement les DNs concernés et leur deman-
der de stocker les deux blocs en question.
I Par ailleurs, les DNs s’occuperont - en in-
formant le NN - de répliquer les données
entre eux pour éviter toute perte de don-
nées.
Minyar Sassi Hidri Technologies pour le Big Data 77 / 227
HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier
Lecture d’un fichier
I Si on souhaite lire un fichier au sein de
HDFS, on utilise aussi le client Hadoop :
$hadoop fs.
I Le client va contacter le NN en spécifiant
le nom de fichier.
I Le NN lui répondra par exemple : Il est
composé de deux blocs. Le premier est dis-
ponible sur le DN 3 et 2, le second sur le
DN 1 et 3.
I Là aussi, le programme contactera les DNs
directement et leur demandera de lui trans-
mettre les blocs concernés. En cas d’er-
reur/non réponse d’un des DNs, il passe
au suivant dans la liste fournie par le NN.
Minyar Sassi Hidri Technologies pour le Big Data 78 / 227
HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier
Dysfonctionnement ! ! !
I La gestion du stockage est assurée par les daemons Hadoop. On a pas à se
soucier d’où sont stockées les données.
I Hadoop réplique lui-même les données : les fichiers sont disponibles à tout
moment sur plusieurs DNs, et si une machine tombe en panne, on a toujours
accès aux données grâce à la replication.
I Si l’un des nœuds a un problème, les données seront perdues :
Hadoop réplique chaque bloc 3 fois.
Il choisit 3 nœuds au hasard, et place une copie du bloc dans chacun d’eux.
Si le nœud est en panne, le NN le détecte, et s’occupe de répliquer encore les blocs
qui y etaient hébergés pour avoir toujours 3 copies stockées.
I Si le NN a un problème ?
Minyar Sassi Hidri Technologies pour le Big Data 79 / 227
HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier
Dysfonctionnement ! ! !
I Si c’est un problème d’accès (ré-
seau), les données sont temporaire-
ment inaccessibles.
I Si le disque du NN est défaillant,
les données seront perdues à ja-
mais ! ! ! !
I Pour éviter cela, le NN sera dupli-
qué, non seulement sur son propre
disque, mais également quelque part
sur le système de fichiers du réseau.
I Définition d’un autre NN (standby
NN) pour reprendre le travail si le
NN actif est défaillant.
Minyar Sassi Hidri Technologies pour le Big Data 80 / 227
HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier
Commandes Hadoop
I Comme indiqué plus haut, la commande permettant de stocker ou extraire des fichiers de
HDFS est l’utilitaire console $hadoop avec l’option fs.
I Il réplique globalement les commandes systèmes standards Linux, et est très simple à utiliser :
$hadoop fs -mkdir /Data Input
Pour créer le répertoire /Data Input
$hadoop fs -put /home/cloudera/mydata.txt /Data Input/mydata.txt
Pour stocker le fichier mydata.txt sur HDFS dans le repertoire /Data Input.
$hadoop fs -get /Data Input/mydata.txt mydata.txt
Pour obtenir le fichier /Data Input/mydata.txt de HDFS et le stocker dans le fichier
local mydata.txt.
$hadoop fs -cat Data Input/mydata.txt
Pour afficher le contenu du fichier mydata.txt.
$hadoop fs -rm /Data Input/mydata.txt
Pour supprimer le fichier /Data Input/mydata.txt
D’autres commandes usuelles : -ls, -cp, -rmr, du, etc...
Minyar Sassi Hidri Technologies pour le Big Data 81 / 227
MapReduce
1 Hadoop : Un standard de gestion des données et applications distribuées
Problématiques du calcul distribué
La solution : Apache Hadoop
L’écosystème Hodoop
2 HDFS : Hadoop Distributed File System
Présentation
Architecture
´Ecriture / Lecture d’un fichier
3 MapReduce
Présentation
Modèle de programmation
Exemples
Minyar Sassi Hidri Technologies pour le Big Data 82 / 227
MapReduce Présentation
Présentation (1)
I Pour exécuter un problème large de manière distribuée, il faut pouvoir décou-
per le problème en plusieurs sous-problèmes de taille réduite à exécuter sur
chaque machine du cluster.
⇒ Stratégie algorithmique dite du divide and conquer / diviser pour régner.
I De multiples approches de division d’un problème en plusieurs sous-tâches
existent : Open MP, MPI, etc... ;
I MapReduce est un paradigme visant à généraliser les approches existantes
pour produire une approche unique applicable à tous les problèmes.
I MapReduce, écrit en C++ (publication issue du département de recherche
de Google publié en 2004 (MapReduce : Simplified Data Processing on Large
Clusters)).
I Un framework pour l’analyse du Big Data :
- Pour données non structurées, sans schéma, etc..
- Pour de très grands clusters.
- Des milliers de nœuds.
- Partitionnement et parallélisation automatiques.
Minyar Sassi Hidri Technologies pour le Big Data 83 / 227
MapReduce Présentation
Présentation (2)
MapReduce définit deux opérations distinctes à effectuer sur les données
d’entrée :
[1.] Map :
- Transforme les données d’entrée en une série de couples (key, value).
- Regroupe les données en les associant à des clés, choisies de telle sorte que les couples
(key, value) aient un sens par rapport au problème à résoudre.
Note : Cette opération doit être parallèlisable. On doit pouvoir découper les données
d’entrée en plusieurs fragments, et faire exécuter l’opération Map à chaque machine
du cluster sur un fragment distinct.
[2.] Reduce :
- Applique un traitement à toutes les valeurs de chacune des clés distinctes produite
par l’opération Map.
- Au terme de l’opération Reduce, on aura un résultat pour chacune des clés distinctes.
Ici, on attribuera à chacune des machines du cluster une des clés uniques produites
par Map, en lui donnant la liste des valeurs associées à la clé. Chacune des machines
effectuera alors l’opération Reduce pour cette clé.
Minyar Sassi Hidri Technologies pour le Big Data 84 / 227
MapReduce Modèle de programmation
Modèle de programmation
I Données sous forme de paires (key, value).
Ex. (doc-id, content), (word, count), etc..
I Le programmeur fournit le code de deux fonctions :
Map (key, value) → list(ikey, ivalue) : permet de faire le même traitement en
parallèle sur des données partitionnées.
Reduce(ikey, list(ivalue)) → list(ikey, fvalue) : permet d’agréger les données traitées
par Map.
I Traitement parallèle des étapes Map et Reduce :
Partitionnement des données.
Tolérance aux fautes.
Ordonnancement des accès disques : méthodes qu’un SE utilise pour décider de l’ordre
dans lequel les opérations d’E/S seront transmises aux disques.
Minyar Sassi Hidri Technologies pour le Big Data 85 / 227
MapReduce Modèle de programmation
Fonctionnement MapReduce
On distingue donc 4 étapes dans un traitement MapReduce :
1. Découper (split) les données d’en-
trée en plusieurs fragments.
2. Mapper chacun de ces fragments
pour obtenir des couples (key, va-
lue).
3. Grouper (shuffle) ces couples (key,
value) par clé (key).
4. Réduire (reduce) les groupes in-
dexés par clé en une forme finale,
avec une valeur pour chacune des
clés distinctes.
Minyar Sassi Hidri Technologies pour le Big Data 86 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
La phase Map (1)
I Il s’agit de concevoir un programme MapReduce comptant le nombre
d’occurrences des différents mots composant un fichier.
am stram gram
pic et pic et colégram
bour et bour et ratatam
am stram gram
I Un enregistrement correspond à une ligne terminée par n.
I Voici le mapper (pseudo-code) du programme WordCount :
Map (key, value) :
//key : nom de fichier ; value : contenu (d’une partie) du fichier
POUR CHAQUE word w IN value
´Emettre(w, 1)
Minyar Sassi Hidri Technologies pour le Big Data 87 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
La phase Map (2)
I Le contenu du fichier en sortie de Mapper est comme suit :
am,1
stram,1
gram,1
pic,1
et,1
pic,1
et,1
colégram,1
bour,1
et,1
bour,1
et,1
ratatam,1
am,1
stram,1
gram,1
I On notera qu’en sortie de mapper :
Les résultats, dits intermédiaires, sont aussi
stockés sous forme de (key, value).
La valeur en entrée (un mot) est devenue
une clé en sortie ;
La clé en entrée de mapper ne joue aucun
rôle dans le programme.
Minyar Sassi Hidri Technologies pour le Big Data 88 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
Entre la phase Map et la phase Reduce
I Avant d’être envoyé au reducer, le fi-
chier est automatiquement trié par clé :
c’est ce que l’on appelle la phase de
shuffle & sort.
I Le fichier en entrée du reducer est le
suivant :
am,[1,1]
bour,[1,1]
colégram,[1]
et,[1,1,1,1]
gram,[1,1]
pic,[1,1]
ratatam,[1]
stram,[1,1]
Minyar Sassi Hidri Technologies pour le Big Data 89 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
La phase Reduce
I Voici le reducer du
programme MapReduce
permettant de consolider
les résultats issus du
mapper :
1. Reduce (key, values)
//key : un mot ; values : une
liste de 1
2. r´esultat = 0
3. POUR CHAQUE value v IN
values
r´esultat+ = v ;
4. ´Emettre(key, r´esultat)
Ligne 1 : le reducer prend en entrée un enregistrement
sous la forme d’un couple (key, values) avec :
- key du type Text (c’est un mot).
- values étant une liste de valeurs du type intWri-
table.
Ligne 2 : le reducer remet à zéro le compteur r´esultat
lorsque l’on change de mot (rappelons que le change-
ment de mot correspond à un changement de clé, et
donc d’enregistrement, et qu’il est géré par Hadoop).
Ligne 3 : pour chaque valeur v dans la liste values on
ajoute v r´esultat (dans notre exemple v vaut toujours
1).
Ligne 4 : quand on change de mot, on écrit dans un
fichier en sortie le couple (key, r´esultat), r´esultat étant
le nombre d’occurrences du mot contenu dans la variable
key.
I Le fichier en sortie de reducer
sera donc le suivant :
am,2
bour,2
colégram,1
et,4
gram,2
pic,2
ratatam,1
stram,2
Minyar Sassi Hidri Technologies pour le Big Data 90 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
Quatre Mappers et deux Reduces
I Nous venons d’écrire notre premier programme MapReduce permettant de compter le
nombre d’occurrences des différents mots composant un livre.
I Il faut néanmoins reconnaître qu’avec un seul Mapper et un seul Reducer les performances
de notre programme ne seront pas meilleures que celle d’un programme classique s’exécutant
sur une seule machine.
I Pour tirer parti des spécificités de Hadoop, nous allons faire évoluer notre cluster en le
configurant pour qu’il dispose de :
Quatre Mappers.
Deux Reducers.
Minyar Sassi Hidri Technologies pour le Big Data 91 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
Quatre Mappers et deux Reduces : La phase Map
I Chacun des quatre mappers va travailler sur une partie du fichier en
entrée, par exemple :
Le mapper n◦ 1 va traiter la ligne 1.
Le mapper n◦ 2 va traiter la ligne 2.
Le mapper n◦ 3 va traiter la ligne 3.
Le mapper n◦ 4 va traiter la ligne 4.
I Chaque mapper va produire un fichier de résultats intermédiaires :
Minyar Sassi Hidri Technologies pour le Big Data 92 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
Quatre Mappers et deux Reduces : Entre la phase Map et la phase Reduce
I Avant le transfert des résultats intermédiaires des mappers vers les
reducers :
Les enregistrements sont triés par clé.
Tous les enregistrements correspondant à une même clé sont envoyés vers un seul et
même reducer.
I Hadoop garantit :
Que si un reducer rec¸oit le couple am,1 du mapper1, alors il recevra aussi le couple
am,1 du mapper4.
Que tous les enregistrements correspondant à la clé am seront regroupés et envoyés
au même reducer.
I On est ainsi sûr que le comptage sera exact.
I Les fichiers en entrée des reducers seront par exemple :
Minyar Sassi Hidri Technologies pour le Big Data 93 / 227
MapReduce Exemples
Exemple 1 : Comptage du nombre de mots
Quatre Mappers et deux Reduces : La phase Reduce
Les fichier en sortie des reducers seront alors les suivants :
Il ne reste plus qu’à fusionner les fichiers issus des deux reducers pour obtenir le résultat
cherché.
Par rapport au premier cluster (un mapper et un reducer), ce nouveau cluster (quatre
mappers et deux reducers) permet :
- De diviser par un facteur de l’ordre de quatre le temps d’exécution de la phase Map.
- De diviser par un facteur de l’ordre de deux le temps d’exécution de la phase Reduce.
Le gain peut paraître dérisoire dans notre exemple dont l’intérêt est avant tout pédagogique
mais, dans la réalité, Hadoop a permis à des entreprises de diviser par un facteur 10 les
temps d’exécution de certains travaux informatiques. Une telle amélioration peut être vitale
lorsque les travaux concernés doivent tourner tous les jours, et que leur temps d’exécution
dans un environnement informatique classique avoisine les 24 heures.
Minyar Sassi Hidri Technologies pour le Big Data 94 / 227
MapReduce Exemples
Exemple 2 : Graphe social (1)
On administre un réseau social comportant des millions d’utilisateurs.
Pour chaque utilisateur, on a dans notre BD la liste des utilisateurs qui
sont ses amis sur le réseau (via une requête SQL).
On souhaite afficher quand un utilisateur va sur la page d’un autre
utilisateur une indication Vous avez N amis en commun ;
On ne peut pas se permettre d’effectuer une série de requêtes SQL à
chaque fois que la page est accédée (trop lourd en traitement).
⇒ On va donc développer des programmes Map et Reduce pour cette
opération et exécuter le traitement toutes les nuits sur notre BD, en
stockant le résultat dans une nouvelle table.
Minyar Sassi Hidri Technologies pour le Big Data 95 / 227
MapReduce Exemples
Exemple 2 : Graphe social (2)
Ici, nos données d’entrée sont sous la forme Utilisateur ⇒ Amis :
A ⇒ B, C, D
B ⇒ A, C, D, E
C ⇒ A, B, D, E
D ⇒ A, B, C, E
E ⇒ B, C, D
Puisqu’on est intéressé par l’information amis en commun entre deux
utilisateurs et qu’on aura à terme une valeur par clé, on va choisir pour
clé la concaténation entre deux utilisateurs.
Par exemple, la clé A−B désignera les amis en communs des utilisateurs
A et B.
On peut segmenter les données d’entrée là aussi par ligne.
Minyar Sassi Hidri Technologies pour le Big Data 96 / 227
MapReduce Exemples
Exemple 2 : Graphe social (3)
La phase Map
Notre opération Map va se contenter de prendre la liste des amis fournie
en entrée, et va générer toutes les clés distinctes possibles à partir de
cette liste.
La valeur sera simplement la liste d’amis, telle quelle.
On fait également en sorte que la clé soit toujours triée par ordre
alphabétique (clé B − A sera exprimée sous la forme A − B).
Ce traitement peut paraître contre-intuitif, mais il va à terme nous per-
mettre d’obtenir, pour chaque clé distincte, deux couples (key, value) :
les deux listes d’amis de chacun des utilisateurs qui composent la clé.
Minyar Sassi Hidri Technologies pour le Big Data 97 / 227
MapReduce Exemples
Exemple 2 : Graphe social (4)
La phase Map
Le pseudo code de notre opération Map est le suivant :
Par exemple, pour la première ligne :
On obtiendra les couples (key, value) :
Minyar Sassi Hidri Technologies pour le Big Data 98 / 227
MapReduce Exemples
Exemple 2 : Graphe social (5)
La phase Map
Pour la seconde ligne :
On obtiendra ainsi :
Pour la troisième ligne :
On aura :
...et ainsi de suite pour nos 5 lignes d’entrée
Minyar Sassi Hidri Technologies pour le Big Data 99 / 227
MapReduce Exemples
Exemple 2 : Graphe social (6)
Entre la phase Map et la phase Reduce
Une fois l’opération Map effectuée, Hadoop va récupérer les couples (key,
valeur) de tous les fragments et les grouper par clé distincte. Le résultat
sur la base de nos données d’entrée :
...on obtient bien, pour chaque clé USER1 − USER2, deux listes d’amis :
les amis de USER1 et ceux de USER2.
Minyar Sassi Hidri Technologies pour le Big Data 100 / 227
MapReduce Exemples
Exemple 2 : Graphe social (7)
La phase Reduce
Il nous faut enfin écrire notre programme Reduce. Il va recevoir en entrée
toutes les valeurs associées à une clé. Son rôle va être très simple :
déterminer quels sont les amis qui apparaissent dans les listes (les valeurs)
qui nous sont fournies.
Minyar Sassi Hidri Technologies pour le Big Data 101 / 227
MapReduce Exemples
Exemple 2 : Graphe social (8)
La phase Reduce
Après exécution de l’opération Reduce pour les valeurs de chaque clé
unique, on obtiendra donc, pour une clé A − B, les utilisateurs qui
apparaissent dans la liste des amis de A et dans la liste des amis de B.
Autrement dit, on obtiendra la liste des amis en commun des utilisateurs A
et B. Le résultat est :
On sait ainsi que A et B ont
pour amis communs les
utilisateurs C et D, ou encore
que B et C ont pour amis
communs les utilisateurs A, D
et E.
Minyar Sassi Hidri Technologies pour le Big Data 102 / 227
MapReduce Exemples
Exemple 2 : Graphe social (9)
Synthèse
I En utilisant le modèle MapReduce, on a ainsi pu créer deux programmes très
simples (nos programmes Map et Reduce) de quelques lignes de code seule-
ment, qui permettent d’effectuer un traitement somme toute assez complexe.
I Mieux encore, notre traitement est parallélisable : même avec des dizaines
de millions d’utilisateurs, du moment qu’on a assez de machines au sein du
cluster Hadoop, le traitement sera effectué rapidement. Pour aller plus vite,
il nous suffit de rajouter plus de machines.
I Pour notre réseau social, il suffira d’effectuer ce traitement toutes les nuits à
heure fixe, et de stocker les résultats dans une table.
Ainsi, lorsqu’un utilisateur visitera la page d’un autre utilisateur, un seul SE-
LECT dans la BD suffira pour obtenir la liste des amis en commun - avec un
poids en traitement très faible pour le serveur.
Minyar Sassi Hidri Technologies pour le Big Data 103 / 227
Chapitre 3 - Programmation MapReduce sous
Hadoop
1 Architecture fonctionnelle
2 MapReduce du point de vue du développeur Java : Les entrées / Sorties
3 Création d’un projet Java Wordcount sous Eclipse
4 Hadoop Streaming
Minyar Sassi Hidri Technologies pour le Big Data 104 / 227
Architecture fonctionnelle
1 Architecture fonctionnelle
2 MapReduce du point de vue du développeur Java : Les entrées / Sorties
3 Création d’un projet Java Wordcount sous Eclipse
4 Hadoop Streaming
Minyar Sassi Hidri Technologies pour le Big Data 105 / 227
Architecture fonctionnelle
Principe de programmation
Pour résoudre un problème via la méthodologie MapReduce avec Hadoop,
on doit :
Choisir une manière de découper les données d’entrée de telle sorte que
l’opération Map soit parallèlisable.
Définir quelle clé utiliser pour notre problème.
Écrire le programme pour l’opération Map.
Écrire le programme pour l’opération Reduce.
...et Hadoop se chargera du reste (problématiques calcul distribué,
groupement par clé distincte entre Map et Reduce, etc.).
Minyar Sassi Hidri Technologies pour le Big Data 106 / 227
Architecture fonctionnelle
Architecture fonctionnelle (1)
Comme pour HDFS, la gestion
des tâches de Hadoop se base
sur deux serveurs (des
daemons) :
Le JobTracker, qui va directement recevoir la
tâche à exécuter (un .jar Java), ainsi que les
données d’entrées (nom des fichiers stockés
sur HDFS) et le répertoire où stocker les don-
nées de sortie (toujours sur HDFS). Il y a un
seul JobTracker sur une seule machine du clus-
ter Hadoop. Le JobTracker est en communi-
cation avec le NN de HDFS et sait donc où
sont les données.
Le TaskTracker, qui est en communication
constante avec le JobTracker et va recevoir
les opérations simples à effectuer
(Map/Reduce) ainsi que les blocs de données
correspondants (stockés sur HDFS). Il y a un
TaskTracker sur chaque machine du cluster.
Minyar Sassi Hidri Technologies pour le Big Data 107 / 227
Architecture fonctionnelle
Architecture fonctionnelle (2)
I Comme le JobTracker est conscient de la position des données (grâce au NN),
il peut facilement déterminer les meilleures machines auxquelles attribuer les
sous-tâches (celles où les blocs de données correspondants sont stockés).
I Pour effectuer un traitement Hadoop, on va donc :
Stocker nos données d’entrée sur HDFS.
Créer un répertoire où Hadoop stockera les résultats sur HDFS.
Compiler nos programmes Map et Reduce au sein d’un .jar Java.
I On soumettra alors le nom des fichiers d’entrée, le nom du répertoire des résul-
tats, et le .jar lui-même au JobTracker : il s’occupera du reste (et notamment
de transmettre les programmes Map et Reduce aux serveurs TaskTracker des
machines du cluster).
Minyar Sassi Hidri Technologies pour le Big Data 108 / 227
Architecture fonctionnelle
Architecture fonctionnelle (3)
Le JobTracker
I Le déroulement de l’exécution d’une tâche Hadoop suit les étapes sui-
vantes du point de vue du JobTracker :
1. Le client (un outil Hadoop console : $hadoop) va soumettre le travail à effectuer au
JobTracker : une archive Java .jar implémentant les opérations Map et Reduce. Il va
également soumettre le nom des fichiers d’entrée, et l’endroit où stocker les résultats.
2. Le JobTracker communique avec le NN HDFS pour savoir où se trouvent les blocs
correspondant aux noms de fichiers donnés par le client.
3. Le JobTracker, à partir de ces informations, détermine quels sont les nœuds TaskTra-
cker les plus appropriés, c’est à dire ceux qui contiennent les données sur lesquelles
travailler sur la même machine, ou le plus proche possible (même rack/rack proche).
4. Pour chaque morceau des données d’entrée, le JobTracker envoie au TaskTracker
sélectionné le travail à effectuer (Map/Reduce, code Java) et les blocs de données
correspondant.
Minyar Sassi Hidri Technologies pour le Big Data 109 / 227
Architecture fonctionnelle
Architecture fonctionnelle (4)
Le JobTracker
5. Le JobTracker communique avec les nœuds TaskTracker en train d’exécuter les tâches. Ils
envoient régulièrement un heartbeat, un message signalant qu’ils travaillent toujours sur la
sous-tâche rec¸ue. Si aucun heartbeat n’est rec¸u dans une période donnée, le JobTracker
considère la tâche comme ayant échouée et donne le même travail à effectuer à un autre
TaskTracker.
6. Si par hasard une tâche échoue (erreur java, données incorrectes, etc.), le TaskTracker va
signaler au JobTracker que la tâche n’a pas pu être exécutée. Le JobTracker va alors décider
de la conduite à adopter : redonner la sous-tâche à un autre TaskTracker, demander au
même TaskTracker de ré-essayer, marquer les données concernées comme invalides, etc. Il
pourra même blacklister le TaskTracker concerné comme non-fiable dans certains cas.
7. Une fois que toutes les opérations envoyées aux TaskTracker (Map + Reduce) ont été effec-
tuées et confirmées comme effectuées par tous les noeuds, le JobTracker marque la tâche
comme effectuée. Des informations détaillées sont disponibles (statistiques, TaskTracker
ayant posé problème, etc.).
Minyar Sassi Hidri Technologies pour le Big Data 110 / 227
Architecture fonctionnelle
Architecture fonctionnelle (5)
Le JobTracker
I On peut également obtenir à tout moment de la part du JobTracker des informations sur les
tâches en train d’être effectuées : étape actuelle (Map, Shuffle, Reduce), % de complétion,
etc..
I La soumission du .jar, l’obtention de ces informations, et d’une manière générale toutes les
opérations liées à Hadoop s’effectuent avec le même unique client console vu précédem-
ment : $hadoop.
I De manière similaire au NN de HDFS, il n’y a qu’un seul JobTracker et s’il tombe en panne,
le cluster tout entier ne peut plus effectuer de tâches. La aussi, des résolutions aux problème
sont prévues dans la roadmap Hadoop.
I Généralement, on place le JobTracker et le NN HDFS sur la même machine (une machine
plus puissante que les autres), sans y placer de TaskTracker/DN HDFS pour limiter la
charge. Cette machine particulière au sein du cluster (qui contient les deux gestionnaires,
de tâches et de fichiers) est communément appelée le nœud maître (Master Node). Les
autres nœuds (contenant TaskTracker + DN) sont communément appelés nœuds esclaves
(Slave Node).
I Même si le JobTracker est situé sur une seule machine, le client qui envoie la tâche au
JobTracker initialement peut être exécuté sur n’importe quelle machine du cluster - comme
les TaskTracker sont presents sur la machine, ils indiquent au client comment joindre le
JobTracker.
Minyar Sassi Hidri Technologies pour le Big Data 111 / 227
Architecture fonctionnelle
Architecture fonctionnelle (6)
Le TaskTracker
I Lorsque le TaskTracker rec¸oit une nouvelle tâche à effectuer (Map, Reduce,
Shuffle) depuis le JobTracker, le TaskTracker va démarrer une nouvelle ins-
tance de Java avec le fichier .jar fourni par le JobTracker, en appelant l’opé-
ration correspondante.
I Une fois la tâche démarrée, il enverra régulièrement au JobTracker ses mes-
sages heartbeats.
I Lorsqu’une sous-tâche est terminée, le TaskTracker envoie un message au
JobTracker pour l’en informer, que la tâche se soit bien déroulée ou non (il
indique évidemment le résultat au JobTracker).
Minyar Sassi Hidri Technologies pour le Big Data 112 / 227
MapReduce du point de vue du développeur Java
1 Architecture fonctionnelle
2 MapReduce du point de vue du développeur Java : Les entrées / Sorties
3 Création d’un projet Java Wordcount sous Eclipse
4 Hadoop Streaming
Minyar Sassi Hidri Technologies pour le Big Data 113 / 227
MapReduce du point de vue du développeur Java
Les entrées-sorties (1)
I Dans MapReduce, les données sont toujours lues ou écrites selon le
format (key, value). Cette fac¸on de procéder peut paraître réductrice,
mais en fait :
On s’aperc¸oit à l’usage qu’il est possible, avec un peu d’expérience
et d’astuce, de traiter beaucoup de problèmes de cette manière, y
compris, par exemple, la recherche du plus court chemin dans un
graphe orienté acyclique.
Le fait d’imposer une structure unique et simple aux enregistre-
ments, tant en lecture qu’en écriture, contribue à l’efficacité d’Ha-
doop au niveau des entrées-sorties.
Minyar Sassi Hidri Technologies pour le Big Data 114 / 227
MapReduce du point de vue du développeur Java
Les entrées-sorties (2)
I Les données lues par le mapper sont définies au niveau du driver. La
définition des données comprend :
Leur localisation (fichier ou répertoire).
Le type des enregistrements, qui est défini par la classe InputFormat.
La détermination de la taille des InputSplits : un InputSplit définit le
volume des données qui seront lues à chaque opération de lecture :
- L’InputSplit a le plus souvent la taille d’un bloc HDFS, mais ce n’est pas une
obligation.
- Il est du ressort de Hadoop de faire le lien entre enregistrements et InputSplits
d’une part, et entre InputSplits et blocs HDFS d’autre part.
- Il n’y a en effet aucune garantie que la fin d’un bloc corresponde à la fin d’un
enregistrement.
Minyar Sassi Hidri Technologies pour le Big Data 115 / 227
MapReduce du point de vue du développeur Java
Les entrées-sorties (3)
I Hadoop prend en compte par défaut les types d’enregistrement sui-
vants :
TextInputFormat :
- Type par défaut.
- value est une ligne entière terminée par n.
- key est l’offset de la ligne depuis le début de fichier (elle est souvent sans intérêt
pour le problème à traiter et, dans ce cas, il suffit de l’ignorer).
KeyValueTextInputFormat :
- Chaque ligne est supposée être au format <key><separator><value> n.
- Le separator par défaut est tab.
SequenceFileInputFormat :
- Permet de lire un fichier binaire de paires <key, value>, comprenant éventuel-
lement des métadonnées.
SequenceFileAsTextInputFormat :
- Format identique au précédent mais, en plus, convertit les clés et les valeurs
en strings (<key.toString(), value.toString()>).
Minyar Sassi Hidri Technologies pour le Big Data 116 / 227
MapReduce du point de vue du développeur Java
Les entrées-sorties (4)
I Dans Hadoop :
Les clés sont des objets qui implémentent l’interface ComparableWritable.
Les valeurs sont des objets qui implémentent l’interface Writable.
I L’utilisation de l’interface Writable permet d’optimiser le processus de
sérialisation lors des accès disque. Tout type de données dans Hadoop
doit implémenter Writable.
I Par défaut, Hadoop propose les types de données suivants :
IntWritable (int en Java).
LongWritable (long en Java).
FloatWritable (float en Java).
DoubleWritable (double en Java).
Text (string en Java).
etc..
Minyar Sassi Hidri Technologies pour le Big Data 117 / 227
MapReduce du point de vue du développeur Java
Programmation MapReduce sous Hadoop
I Comme indiqué précédemment, Hadoop est développé en Java. Les tâches
Map/Reduce sont donc implémentables par le biais d’interfaces Java (il existe
cependant des wrappers très simples permettant d’implémenter ses tâches
dans n’importe quel langage).
I Un programme Hadoop se compile au sein d’un .jar.
I Pour développer un programme Hadoop, on va créer trois classes distinctes :
Une classe dite Driver qui contient la fonction main du programme. Cette classe se
chargera d’informer Hadoop des types de données (key, value) utilisées, des classes
se chargeant des opérations Map et Reduce, et des fichiers HDFS à utiliser pour les
entrées/sorties.
Une classe Map (qui effectuera l’operation Map).
Une classe Reduce (qui effectuera l’operation Reduce).
Minyar Sassi Hidri Technologies pour le Big Data 118 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop
La classe Driver
I La classe Driver contient le main de notre programme.
I Au sein du main() en question, on va effectuer les opérations suivantes :
Créer un objet Configuration de Hadoop, qui est nécessaire pour :
- Permettre à Hadoop d’obtenir la configuration générale du cluster. L’objet en
question pourrait aussi nous permettre de récupérer nous-même des options de
configuration qui nous intéressent.
- Permettre à Hadoop de récupérer d’éventuels arguments génériques disponibles
sur la ligne de commande (par exemple le nom du package de la tâche à exé-
cuter si le .jar en contient plusieurs). On va également récupérer les arguments
supplémentaires pour s’en servir ; on souhaite que l’utilisateur puisse préciser
le nom du fichier d’entrée et le nom du répertoire de sortie HDFS pour nos
tâches Hadoop grâce à la ligne de commande.
Créer un nouvel objet Hadoop Job qui désigne une tâche Hadoop.
Utiliser cet objet Job pour informer Hadoop du nom de nos classes Driver, Map et
Reduce.
Utiliser le même objet pour informer Hadoop des types de données utilisés dans notre
programme pour les couples (key,value) Map et Reduce.
Informer Hadoop des fichiers d’entrée/sortie pour notre tâche sur HDFS.
Enfin, utiliser l’objet Job crée précédemment pour déclencher le lancement de la tâche
via le cluster Hadoop.
Minyar Sassi Hidri Technologies pour le Big Data 119 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Driver
Exemple : Occurrences de mots (1)
I Le prototype de notre fonction main() :
public static void main(String[] args) throws Exception
On se sert de args pour récupérer les arguments de la ligne de commande. Plusieurs
fonctions Hadoop appelées au sein du main sont susceptibles de déclencher des exceptions
- on l’indique donc lors de la déclaration.
I Avant toute chose, on créé dans notre main un nouvel objet Configuration Hadoop :
// Créé un objet de configuration Hadoop.
Configuration conf=new Configuration() ;
Le package à importer est : org.apache.hadoop.conf.Configuration
I Avant toute chose, on créé dans notre main un nouvel objet Configuration Hadoop :
I On créé ensuite un nouvel objet Hadoop Job :
Job job=Job.getInstance(conf, ”Compteur de mots v1.0”) ;
Le package à importer est le suivant : org.apache.hadoop.mapreduce.Job
Minyar Sassi Hidri Technologies pour le Big Data 120 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Driver
Exemple : Occurrences de mots (2)
I Ensuite, il faut indiquer à Hadoop - par le biais de l’objet Job nouvellement créé - quelles
sont les classes Driver, Map et Reduce de notre programme Hadoop.
Dans notre cas, il s’agira respectivement des classes WCount, WCountMap et WCountRe-
duce du package org.mbds.hadoop.wordcount
On utilise pour ce faire les fonctions suivantes :
job.setJarByClass(WCount.class) ;
job.setMapperClass(WCountMap.class) ;
job.setReducerClass(WCountReduce.class) ;
I Il faut ensuite indiquer à Hadoop quels sont les types de données que l’ont souhaite utiliser
pour les couples (key,valeur) de nos opérations map et reduce. Dans le cas de notre compteur
d’occurrences de mots, on souhaite utiliser des chaînes de caractères pour les clefs (nos
mots) et des entiers pour nos occurrences.
Remarque : On ne doit pas utiliser les types classiques Int et String Java pour désigner nos
types, mais des classes qui leur correspondent et qui sont propres à Hadoop. Dans notre
cas, les classes IntWritable et Text.
job.setOutputKeyClass(Text.class) ;
job.setOutputValueClass(IntWritable.class) ;
Les packages des types en question : org.apache.hadoop.io.IntWritable et org.apache.hadoop.io.Text
Il en existe beaucoup d’autres dans org.apache.hadoop.io.∗.
Minyar Sassi Hidri Technologies pour le Big Data 121 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Driver
Exemple : Occurrences de mots (3)
I Ensuite, on doit indiquer où se situent nos données d’entrée et de sortie dans HDFS. On
utilise pour ce faire les classes Hadoop FileInputFormat et FileOutputFormat.
I Ces classes sont implémentées suivant un design pattern Singleton - il n’est pas nécessaire
de les instancier dans le cas qui nous intéresse (dans des cas plus complexe, on étendra
parfois la classe en question dans une nouvelle classe qui nous est propre).
On procède de la manière suivante :
FileInputFormat.addInputPath(job, new Path(ourArgs[0])) ;
FileOutputFormat.setOutputPath(job, new Path(ourArgs[1])) ;
Les packages à utiliser :
- org.apache.hadoop.mapreduce.lib.input.FileInputFormat
- org.apache.hadoop.mapreduce.lib.input.FileOutputFormat
- org.apache.hadoop.fs.Path
Minyar Sassi Hidri Technologies pour le Big Data 122 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Driver
Exemple : Occurrences de mots (4)
I Enfin, il reste à lancer l’exécution de la tâche par le biais du cluster Hadoop. On procède
ainsi :
if(job.waitForCompletion(true))
System.exit(0) ;
System.exit(-1) ;
I La fonction waitForCompletion de l’objet job va exécuter la tâche et attendre la fin de son
exécution.
I Elle prend comme argument un booléen indiquant à Hadoop si oui ou non il doit donner des
indications sur la progression de l’exécution à l’utilisateur sur la sortie standard (stdout).
I Elle renvoie true en cas de succés ; ici, on terminera l’exécution du programme en renvoyant
0 si tout s’est bien passé, et -1 en cas de problème (codes de retour unix standards).
Minyar Sassi Hidri Technologies pour le Big Data 123 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Driver
Exemple : Occurrences de mots (5)
// Notre classe Driver (contient le main du programme Hadoop).
public class WCount
{
// Le main du programme.
public static void main(String[] args) throws Exception
{
// Créé un object de configuration Hadoop.
Configuration conf=new Configuration() ;
// Permet à Hadoop de lire ses arguments génériques, récupère les arguments restants dans ourArgs.
String[] ourArgs=new GenericOptionsParser(conf,args).getRemainingArgs() ;
// Obtient un nouvel objet Job : une tâche Hadoop. On
// fourni la configuration Hadoop ainsi qu’une description textuelle de la tâche.
Job job=Job.getInstance(conf, ”Compteur de mots v1.0”) ;
// Défini les classes driver, map et reduce.
job.setJarByClass(WCount.class) ; job.setMapperClass(WCountMap.class) ;
job.setReducerClass(WCountReduce.class) ;
// Défini types clefs/valeurs de notre programme Hadoop.
job.setOutputKeyClass(Text.class) ;
job.setOutputValueClass(IntWritable.class) ;
// Définit les fichiers d’entrée du programme et le répertoire des résultats.
// On se sert du premier et du deuxième argument restants pour permettre à
// l’utilisateur de les spécifier lors de l’exécution.
FileInputFormat.addInputPath(job, new Path(ourArgs[0])) ;
FileOutputFormat.setOutputPath(job, new Path(ourArgs[1])) ;
// On lance la tâche Hadoop. Si elle s’est effectuée correctement, on renvoie 0. Sinon, on renvoie -1.
if(job.waitForCompletion(true))
System.exit(0) ; System.exit(-1) ;
} }
Minyar Sassi Hidri Technologies pour le Big Data 124 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop
La classe Map
I La classe Map va être en charge de l’opération Map de notre programme.
I Elle doit étendre la classe Hadoop org.apache.hadoop.mapreduce.Mapper.
I Il s’agit d’une classe générique qui se paramétrise avec quatre types :
Un type keyin : le type de clé d’entrée.
Un type valuein : le type de valeur d’entrée.
Un type keyout : le type de clé de sortie.
Un type valueout : le type de valeur de sortie.
I Le type keyin est notamment utile lorsqu’on utilise des fonctionnalités plus
avancées, comme la possibilité d’effectuer plusieurs opérations Map les unes
à la suite des autres, auquel cas notre opération Map recevra en entrée des
couples (key,value).
I Dans notre cas, nous n’utiliserons pas cette possibilité ; on utilisera donc le
type Java Object comme type keyin.
Minyar Sassi Hidri Technologies pour le Big Data 125 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Map
Exemple : Occurrences de mots (1)
Dans notre exemple, notre classe Map sera déclarée ainsi :
public class WCountMap extends Mapper<Object, Text, Text, IntWritable>
On utilise ici comme types :
Text pour le type valuein, puisque notre valeur d’entrée à la fonction Map est une chaîne
de caractères (une ligne de texte).
Text pour le type keyout, puisque notre valeur de clé pour les couples (key,vakue) de la
fonction Map est également une chaîne de caractères (le mot dont on compte les occur-
rences).
IntWritable pour le type valueout, puisque notre valeur pour les couples (key,value) de la
fonction Map est un entier (le nombre d’occurrences).
Ici aussi, on utilise les types Hadoop et non les types natifs Java (Int et
String).
Minyar Sassi Hidri Technologies pour le Big Data 126 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Map
Exemple : Occurrences de mots (2)
Au sein de la classe Mapper, c’est la fonction map qui va s’occuper d’effectuer la tâche
Map. C’est la seule qu’on doit absolument implémenter.
Elle prend trois arguments :
- La clé d’entrée keyin.
La valeur d’entrée valuein (la ligne de texte dont on souhaite compter les mots).
- Un Context Java qui représente un handle Hadoop et nous permettra de retourner les couples (key,value) résultant
de notre opération Map.
Le prototype de notre fonction map :
protected void map(Object key, Text value, Context context)
throws IOException, InterruptedException
Comme pour la fonction main, la fonction map appellera des fonctions susceptibles de
déclencher des exceptions (notamment concernant l’interruption de l’exécution Hadoop ou
des problèmes d’accès HDFS) - on le précise donc dans sa déclaration.
Minyar Sassi Hidri Technologies pour le Big Data 127 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Map
Exemple : Occurrences de mots (3)
Au sein de la méthode map, on va donc effectuer la tâche Map de notre programme
Map/Reduce.
Dans le cadre de notre exemple, la fonction devra parcourir la ligne de texte fournie en
entrée, et renvoyer un couple (key,value) pour chacun des mots. Ce couple devra avoir pour
clé le mot en question, et pour valeur l’entier 1.
Dans la fonction map, afin d’indiquer à Hadoop qu’on souhaite renvoyer un couple (key,value),
on utilise la fonction write de notre objet Context. Elle peut être appelée autant de fois
que nécessaire ; une fois pour chacun des couples (key,value) qu’on souhaite renvoyer. Par
exemple context.write(”am”, 1).
Il faut évidemment que la clé et la valeur renvoyées ainsi correspondent aux types keyout
et valueout de notre classe Mapper.
Minyar Sassi Hidri Technologies pour le Big Data 128 / 227
MapReduce du point de vue du développeur Java
Programmation Hadoop - Classe Map
Exemple : Occurrences de mots (4)
package org.mbds.hadoop.wordcount ;
import org.apache.hadoop.mapreduce.Job ;
import org.apache.hadoop.io.Text ;
import org.apache.hadoop.io.IntWritable ;
import java.util.StringTokenizer ;
import org.apache.hadoop.mapreduce.Mapper ;
import java.io.IOException ;
// Notre classe Map.
public class WCountMap extends Mapper<Object, Text, Text, IntWritable>
{
// IntWritable contant de valeur 1.
private static final IntWritable ONE=new IntWritable(1) ;
// La fonction map elle-même.
protected void map(Object offset, Text value, Context context)
throws IOException, InterruptedException
{
// Un StringTokenizer va nous permettre de parcourir chacun des mots de la ligne passée à Map.
StringTokenizer tok=new StringTokenizer(value.toString(), ” ”) ;
while(tok.hasMoreTokens())
{ Text word=new Text(tok.nextToken()) ;
// On renvoie notre couple (clef ;valeur) : le mot courant suivi de la valeur 1.
context.write(word, ONE) ;
}
}
}
Minyar Sassi Hidri Technologies pour le Big Data 129 / 227
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data
Technologies pour le Big Data

More Related Content

What's hot

BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQLLilia Sfaxi
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2Amal Abid
 
Introduction à la big data v3
Introduction à la big data v3 Introduction à la big data v3
Introduction à la big data v3 Mehdi TAZI
 
Introduction à la big data V2
Introduction à la big data V2Introduction à la big data V2
Introduction à la big data V2Mehdi TAZI
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - IntroductionBlandine Larbret
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3Amal Abid
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5Amal Abid
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessVincent de Stoecklin
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Lilia Sfaxi
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleLilia Sfaxi
 
Chp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de DonnéesChp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de DonnéesLilia Sfaxi
 
Big Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendancesBig Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendancesJean-Michel Franco
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business IntelligenceLilia Sfaxi
 

What's hot (20)

Introduction au BIG DATA
Introduction au BIG DATAIntroduction au BIG DATA
Introduction au BIG DATA
 
Partie2BI-DW2019
Partie2BI-DW2019Partie2BI-DW2019
Partie2BI-DW2019
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
Introduction à la big data v3
Introduction à la big data v3 Introduction à la big data v3
Introduction à la big data v3
 
Introduction à la big data V2
Introduction à la big data V2Introduction à la big data V2
Introduction à la big data V2
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation Multidimensionnelle
 
Chp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de DonnéesChp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de Données
 
Big Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendancesBig Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendances
 
Etude sur le Big Data
Etude sur le Big DataEtude sur le Big Data
Etude sur le Big Data
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
 

Similar to Technologies pour le Big Data

Matinée Découverte Big Data & Data Science - 24012017
Matinée Découverte Big Data & Data Science - 24012017Matinée Découverte Big Data & Data Science - 24012017
Matinée Découverte Big Data & Data Science - 24012017Micropole Group
 
Big data-2-170220212621
Big data-2-170220212621Big data-2-170220212621
Big data-2-170220212621Haifa Akermi
 
Livre blanc "Big Data" de l'EBG
Livre blanc "Big Data" de l'EBGLivre blanc "Big Data" de l'EBG
Livre blanc "Big Data" de l'EBGMargarita Zlatkova
 
3 minutes pour comprendre ... le Big Data
3 minutes pour comprendre ... le Big Data3 minutes pour comprendre ... le Big Data
3 minutes pour comprendre ... le Big DataAlain KHEMILI
 
Big Data Des méandres des outils au potentiel business
Big Data   Des méandres des outils au potentiel businessBig Data   Des méandres des outils au potentiel business
Big Data Des méandres des outils au potentiel businessMouhsine LAKHDISSI
 
Enjeux de la donnee 21 novembre18
Enjeux de la donnee 21 novembre18Enjeux de la donnee 21 novembre18
Enjeux de la donnee 21 novembre18Laetitia Lycke
 
La protection de la vie privée à l'heure du BIG DATA
La protection de la vie privée à l'heure du BIG DATALa protection de la vie privée à l'heure du BIG DATA
La protection de la vie privée à l'heure du BIG DATAISACA Chapitre de Québec
 
Big data et marketing digital
Big data et marketing digital Big data et marketing digital
Big data et marketing digital Hamza Sossey
 
La data n’a pas besoin d’être « big » pour générer de la valeur
La data n’a pas besoin d’être « big » pour générer de la valeurLa data n’a pas besoin d’être « big » pour générer de la valeur
La data n’a pas besoin d’être « big » pour générer de la valeurMicrosoft Ideas
 
#NSD14 - La sécurité autour du Big Data
#NSD14 - La sécurité autour du Big Data#NSD14 - La sécurité autour du Big Data
#NSD14 - La sécurité autour du Big DataNetSecure Day
 
Introduction au BigData.pdf
Introduction au BigData.pdfIntroduction au BigData.pdf
Introduction au BigData.pdfZkSadrati
 
Introduction au BigData.pdf
Introduction au BigData.pdfIntroduction au BigData.pdf
Introduction au BigData.pdfZkSadrati
 
Bluemix Paris Meetup : Big data et Analytics - 15 avril 2015
Bluemix Paris Meetup :  Big data et Analytics - 15 avril 2015Bluemix Paris Meetup :  Big data et Analytics - 15 avril 2015
Bluemix Paris Meetup : Big data et Analytics - 15 avril 2015IBM France Lab
 

Similar to Technologies pour le Big Data (20)

Matinée Découverte Big Data & Data Science - 24012017
Matinée Découverte Big Data & Data Science - 24012017Matinée Découverte Big Data & Data Science - 24012017
Matinée Découverte Big Data & Data Science - 24012017
 
Big data-2-170220212621
Big data-2-170220212621Big data-2-170220212621
Big data-2-170220212621
 
Parcours Big Data @ Cetic (6 mai 2014)
Parcours Big Data @ Cetic (6 mai 2014)Parcours Big Data @ Cetic (6 mai 2014)
Parcours Big Data @ Cetic (6 mai 2014)
 
Introduction au Big data
Introduction au Big data Introduction au Big data
Introduction au Big data
 
Livre blanc "Big Data" de l'EBG
Livre blanc "Big Data" de l'EBGLivre blanc "Big Data" de l'EBG
Livre blanc "Big Data" de l'EBG
 
3 minutes pour comprendre ... le Big Data
3 minutes pour comprendre ... le Big Data3 minutes pour comprendre ... le Big Data
3 minutes pour comprendre ... le Big Data
 
Big Data Des méandres des outils au potentiel business
Big Data   Des méandres des outils au potentiel businessBig Data   Des méandres des outils au potentiel business
Big Data Des méandres des outils au potentiel business
 
Enjeux de la donnee 21 novembre18
Enjeux de la donnee 21 novembre18Enjeux de la donnee 21 novembre18
Enjeux de la donnee 21 novembre18
 
Introduction
IntroductionIntroduction
Introduction
 
La protection de la vie privée à l'heure du BIG DATA
La protection de la vie privée à l'heure du BIG DATALa protection de la vie privée à l'heure du BIG DATA
La protection de la vie privée à l'heure du BIG DATA
 
Big data et marketing digital
Big data et marketing digital Big data et marketing digital
Big data et marketing digital
 
La data n’a pas besoin d’être « big » pour générer de la valeur
La data n’a pas besoin d’être « big » pour générer de la valeurLa data n’a pas besoin d’être « big » pour générer de la valeur
La data n’a pas besoin d’être « big » pour générer de la valeur
 
Analyse spatiale en Big data
Analyse spatiale en Big dataAnalyse spatiale en Big data
Analyse spatiale en Big data
 
#NSD14 - La sécurité autour du Big Data
#NSD14 - La sécurité autour du Big Data#NSD14 - La sécurité autour du Big Data
#NSD14 - La sécurité autour du Big Data
 
BIG DATA
BIG DATABIG DATA
BIG DATA
 
Introduction au BigData.pdf
Introduction au BigData.pdfIntroduction au BigData.pdf
Introduction au BigData.pdf
 
Introduction au BigData.pdf
Introduction au BigData.pdfIntroduction au BigData.pdf
Introduction au BigData.pdf
 
Bluemix Paris Meetup : Big data et Analytics - 15 avril 2015
Bluemix Paris Meetup :  Big data et Analytics - 15 avril 2015Bluemix Paris Meetup :  Big data et Analytics - 15 avril 2015
Bluemix Paris Meetup : Big data et Analytics - 15 avril 2015
 
#Défi7 - Inspiration
#Défi7 - Inspiration#Défi7 - Inspiration
#Défi7 - Inspiration
 
Le Big Data
Le Big DataLe Big Data
Le Big Data
 

Technologies pour le Big Data

  • 1. Technologies pour le Big Data par Minyar Sassi Hidri Département Technologies de l’Information et de la Communication Ecole Nationale d’Ingénieurs de Tunis Novembre 2016 Minyar Sassi Hidri Technologies pour le Big Data 1 / 227
  • 2. Plan 1 Chapitre 1 : Introduction au Big Data 2 Chapitre 2 : Hadoop, MapReduce et le Big Data 3 Chapitre 3 : Programmation MapReduce sous Hadoop 4 Chapitre 4 : Traitement de données et requêtage sous Hadoop Minyar Sassi Hidri Technologies pour le Big Data 2 / 227
  • 3. Chapitre 1 - Introduction au Big Data 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 3 / 227
  • 4. Big Data : Faits, Intérêts, Sources et Challenges 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 4 / 227
  • 5. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Faits Big Data : Faits Source : IBM Minyar Sassi Hidri Technologies pour le Big Data 5 / 227
  • 6. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Faits Big Data : Faits I Chaque jour, nous générons 2.5 trillions d’octets de données. I 90% des données dans le monde ont été créées au cours des deux dernières années. I Sources : - Capteurs utilisés pour collecter les informations climatiques. - Messages sur les médias sociaux. - Images numériques et vidéos publiées en ligne. - Enregistrements transactionnels d’achat en ligne. - Signaux GPS de téléphones mobiles. - ... Minyar Sassi Hidri Technologies pour le Big Data 6 / 227
  • 7. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Faits Big Data : Faits I Chaque jour, nous générons 2.5 trillions d’octets de données. I 90% des données dans le monde ont été créées au cours des deux dernières années. I Sources : - Capteurs utilisés pour collecter les informations climatiques. - Messages sur les médias sociaux. - Images numériques et vidéos publiées en ligne. - Enregistrements transactionnels d’achat en ligne. - Signaux GPS de téléphones mobiles. - ... I Chiffres clés - Plus de 2 milliards de vidéos regardées sur Youtube chaque jour et 220 milliards de recherche sur Google chaque mois. - 30 milliards de contenus statut, photo, vidéo, événement, etc. sont ajoutés sur Face- book par mois par plus de 600 millions d’utilisateurs actifs. - Le nombre d’appareils connectés à Internet a dépassé le nombre d’humains en 2008. - La compagnie de Social Games traite 1 Petabyte (1 million de GB) de données chaque jour. - Le marché du Big Data et des Big Analytics (ou broyage de données) pourraient représenter près de 250 milliards de dollars sur 4 ans. Minyar Sassi Hidri Technologies pour le Big Data 6 / 227
  • 8. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Intérêts Big Data : Intérêts I 1/3 - Chefs d’entreprise prennent fréquemment des décisions basées sur des informations en lesquelles ils n’ont pas confiance, ou qu’ils n’ont pas. I 1/2 - Chefs d’entreprise disent qu’ils n’ont pas accès aux informations dont ils ont besoin pour faire leur travail. I 83% - Des DSI (Directeurs des SI) citent : l’informatique décisionnelle et analytique comme faisant partie de leurs plans pour améliorer leur compétitivité. I 60% - Des PDG ont besoin d’améliorer la capture et la compréhension des informations pour prendre des décisions plus rapidement. Minyar Sassi Hidri Technologies pour le Big Data 7 / 227
  • 9. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Intérêts Big Data : Sources (1) I Sources multiples : sites, Bases de Données, téléphones, serveurs : - Détecter les sentiments et les réactions des clients. Détecter les conditions critiques ou potentiellement mortelles dans les hôpitaux, et à temps pour intervenir. - Prédire des modèles météorologiques pour planifier l’usage optimal des éoliennes. - Prendre des décisions risquées basées sur des données transactionnelles en temps réel. - Identifier les criminels et les menaces à partir de vidéos, sons et flux de données. - ´Etudier les réactions des étudiants pendant un cours, prédire ceux qui vont réussir, d’après les statistiques et modèles réunis au long des années (domaine Big Data in Education). Minyar Sassi Hidri Technologies pour le Big Data 8 / 227
  • 10. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Sources Big Data : Sources (2) I Les données massives sont le résultat de la rencontre de trois éléments essentiels qui sont : - Internet. - Les réseaux sociaux. - Les appareils intelligents : les ordinateurs, les tablettes, les smartphones, les objets connectés... - L’Internet permet la transmission de l’information quelle que soit sa forme sur les appareils intelligents : Appareil intelligent : création de données. Utilisateur des réseaux sociaux : consommateur. Internet : vecteur de transmission. Minyar Sassi Hidri Technologies pour le Big Data 9 / 227
  • 11. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Challenges Big Data : Challenges ? Réunir un grand volume de données variées pour trouver de nouvelles idées. ? Difficulté pour sauvegarder toutes ces données. ? Difficulté pour traiter ces données et les utiliser. ? Les données sont créées rapidement. Minyar Sassi Hidri Technologies pour le Big Data 10 / 227
  • 12. Qu’est-ce que le Big Data ? 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 11 / 227
  • 13. Qu’est-ce que le Big Data ? Historique & contexte Historique & contexte I L’évolution du SI amène les entreprises à traiter de plus en plus de données issues de sources toujours plus variées. I Les prévisions de taux de croissance des vo- lumes de données trai- tées dépassent les limites des technologies tradition- nelles. I On parle de Petaoctet (billiard d’octets) (ou Pe- tabyte) voir de Zettaoc- tet (Trilliard d’octets) (ou Zettabyte). ⇒ Quelle solution pour exploiter ces données ? Minyar Sassi Hidri Technologies pour le Big Data 12 / 227
  • 14. Qu’est-ce que le Big Data ? Définition Définition I Big Data : Exploration de très vastes ensembles de données pour obtenir des renseignements utilisables. I Le terme Big Data se réfère aux technologies qui permettent aux entreprises d’analyser rapidement un volume de données très important et d’obtenir une vue synoptique. I En mixant intégration de stockage, analyse prédictive et applications, le Big Data permet de gagner en temps, en efficacité et en qualité dans l’interpré- tation de données. I Les objectifs de ces solutions d’intégration et de traitements des données sont de traiter un volume très important de données aussi bien structurées que non structurées, se trouvant sur des terminaux variés (PC, smartphones, tablettes, objets communicants...), produites ou non en temps réel depuis n’importe quelle zone géographique dans le monde. ⇒ Le Big Data sera un outil majeur à la fois pour la prise de décisions et l’optimisation de la compétitivité au sein des entreprises ? Minyar Sassi Hidri Technologies pour le Big Data 13 / 227
  • 15. Qu’est-ce que le Big Data ? Définition Définition : Autres notions Autour du Big Data, on trouve également les termes : I Open Data : Une donnée ouverte est une donnée qui peut être librement utilisée, réutilisée et redistribuée par quiconque. Ce qu’ouvert signifie ⇒ L’in- teropérabilité. - Capacité de divers systèmes et organisations à travailler ensemble (inter-opérer). Dans ce cas, c’est la capacité d’interopérer - ou entremêler - des ensembles de données différents. I Little Data : Parfois utilisée pour permettre aux entreprises qui n’auraient pas les 3V pour utiliser les technologies Big Data. I Smart Data : La Smart Data permet de se focaliser uniquement sur les données utiles. Nouvelle expression synonyme de Business Intelligence (Infor- matique décisionnelle). - En 2013, le Big Data s’est retrouvé au cœur de toutes les conversations. Cependant, le Big Data c’est un gros volume de données parfois inexploitable et peu pertinent. - Toutes les données ne sont pas bonnes à prendre et demandent beaucoup de temps à exploiter. Attention à ne pas être confronté au final au Bad Data ! Minyar Sassi Hidri Technologies pour le Big Data 14 / 227
  • 16. Qu’est-ce que le Big Data ? Est-ce une innovation ? Big Data : Est-ce une innovation ? I L’explosion des volumes des données nécessite une innovation en terme de : - Acceleration matérielle : Abandon des disques durs au profit des mémoires dy- namiques DRAM (Dynamic Random Access Memory : mémoire vive dynamique) ou flash. ⇒ Meilleur benefice des processeurs multicœurs. I Bases de données d’analyse massivement parallèle (MPP) : Ces bases de données conformes SQL sont conc¸ues pour répartir le traitement des données sur plusieurs machines. I Modèle Map-Reduce, Hadoop et autres approches NoSQL : Ces approches permettent d’accéder aux données via des langages de programmation sans utiliser les interfaces basées sur SQL et permettent de répartir les données sur plusieurs machines distinctes. Minyar Sassi Hidri Technologies pour le Big Data 15 / 227
  • 17. Qu’est-ce que le Big Data ? Vocabulaire Vocabulaire I Not Only SQL / Bases sans schéma : Catégorie de systèmes de gestion de base de données (SGBD) qui n’est plus fondée sur l’architecture classique des bases relationnelles. L’unite logique n’y est plus la table, et les données ne sont en general pas manipulees avec SQL. I MapReduce : modèle de programmation permettant de manipuler de grandes quantités de données non obligatoirement structurées. I Hadoop / Cassandra / MongoDB : framework de développement d’applica- tion utilisant le modèle Map Reduce. I Data Flow / Pig / Hive ... : logiciel et langage d’analyse de données per- mettant d’utiliser Hadoop. Minyar Sassi Hidri Technologies pour le Big Data 16 / 227
  • 18. Problématique et termes clés 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 17 / 227
  • 19. Problématique et termes clés Problématique et termes clés (1) I Le Big Data se caractérise par la problématique des 3V (5V) : - Volume (Volume) - L’entreprise est submergée de volumes de données croissants de tous types. Variété (Variety) - Gérer la complexité de plusieurs types de données et de schémas struc- turés ou non structurés (texte, données de capteurs, son, vidéo, logs, etc.). Vitesse (Velocity) - Parfois, les données doivent être saisies et traitées au fil de l’eau, au fur et à mesure de leur collection par l’entreprise, pour la détection des fraudes (on qualifie de fraude toute action destinée à tromper. La falsification et l’adultération sont des exemples de fraude) par exemple. Minyar Sassi Hidri Technologies pour le Big Data 18 / 227
  • 20. Problématique et termes clés Problématique et termes clés (2) I Vous êtes confrontés à une problématique de gestion de données cor- respondant à ces trois critères. I Vous ne savez plus gérer ces données avec les architectures tradition- nelles. ⇒ Vous avez une problématique de type Big Data. I Il faut en effet penser à collecter, stocker puis analyser les données d’une fac¸on qui ne peut plus être traitée par une approche traditionnelle pour permettre de satisfaire au 4ème V. ⇒ la Valorisation des données. I Objectif : Relever ce qui est important et ce qui l’est moins. Minyar Sassi Hidri Technologies pour le Big Data 19 / 227
  • 21. Problématique et termes clés Big Data : Volume (1) I Le prix de stockage des données a beaucoup diminué ces 30 dernières années : - De $100.000 / Go (1980) - `A $0.10 / Go (2013) - Ordre de grandeur : - Kilobytes : KB bytes - Megabytes : MB - Gigabytes : GB - Terabytes : TB (1012 ) bytes - Petabytes : PB (1015 ) bytes - Exabytes : EB (1018 ) bytes - Zettabytes : ZB (1021 ) bytes - Yottabytes : YB (1024 ) bytes. - 1 Yottabyte nécessite 250 trillion DVD. - Grand marché de données est estimé à croître de 45% par annnée pour atteindre 25 milliards de dol- lars cette année (2015). - ∼ 1.8 ZB créées en 2011 ; ∼ 8 ZB en 2015 ; ∼ 35 ZB en 2020 Minyar Sassi Hidri Technologies pour le Big Data 20 / 227
  • 22. Problématique et termes clés Big Data : Volume (2) I Les lieux de stockage fiables (comme des SAN : Storage Area Network) ou réseaux de stockage peuvent être très coûteux : Choisir de ne stocker que certaines données, jugées sensibles. Perte de données, pouvant être très utiles, comme les Logs. I Comment déterminer les données qui méritent d’être stockées ? Transactions ? Logs ? Métier ? Utilisateur ? Capteurs ? Médicales ? Sociales ?. ⇒ Aucune donnée n’est inutile. Certaines n’ont juste pas encore servi. I Problèmes : - Comment stocker les données dans un endroit fiable, qui soit moins cher ? - Comment parcourir ces données et en extraire des informations facilement et rapidement ? Minyar Sassi Hidri Technologies pour le Big Data 21 / 227
  • 23. Problématique et termes clés Big Data : Variété (1) I Pour un stockage dans des bases de données ou dans des entrepôts de données, les données doivent respecter un format prédéfini. I La plupart des données existantes sont non-structurées ou semi-structurées I Données sous plusieurs formats et types. I On veut tout stocker : Exemple : pour une discussion dans un centre d’appel, on peut la stocker sous forme textuelle pour son contenu, comme on peut stocker l’enregistrement en entier, pour interpréter le ton de voix du client. I Certaines données peuvent paraître obsolètes, mais sont utiles pour certaines décisions : Exemple : Pour le transport de marchandise, on a tendance à choisir le camion le plus proche. Mais parfois, ce n’est pas la meilleure solution. D’autres problèmes peuvent intervenir. Besoin de : Données GPS, plan de livraison du camion, circulation, chargement du camion, Niveau d’essence... Minyar Sassi Hidri Technologies pour le Big Data 22 / 227
  • 24. Problématique et termes clés Big Data : Variété (2) Données structurées versus Données non structurées I Données structurées : Données que l’on peut clairement codifier et identifier. I Les données d’un tableur sont typiquement des données structurées. I On peut comprendre leurs significations en croisant les titres de la ligne et colonne dans laquelle se trouent les données. ⇒ Les systèmes d’analyse algorithmique ont depuis toujours été développés pour traiter ce type de données. I Données non structurées : Données qui ne répondent pas à un codage qui per- met d’en tirer de l’infor- mation. I C’est en analysant les contenus des messages que l’on déduit l’informa- tion : fichiers texte, au- dio, vidéo, etc. que l’on peut clairement codifier et identifier. Minyar Sassi Hidri Technologies pour le Big Data 23 / 227
  • 25. Problématique et termes clés Big Data : Vélocité I Rapidité d’arrivée des données. I Vitesse de traitement. I Les données doivent être stockées a l’arrivée, parfois même des Tera- octets par jour Sinon, risque de perte d’informations. I Exemple : Il ne suffit pas de savoir quel article un client a acheté ou réservé. Si on sait que vous avez passé plus de 5mn à consulter un article dans une boutique d’achat en ligne, il est possible de vous envoyer un email dès que cet article est soldé. Minyar Sassi Hidri Technologies pour le Big Data 24 / 227
  • 26. Problématique et termes clés Big Data : Le 4ème V - La Véracité I On peut classifier les données traitées sous le chapeau du Big Data en deux principaux types : + Données des entreprises : elles comportent les emails, les documents, les bases de données, toutes les historiques des processus métiers (Logs) + Données en dehors des entreprises : elles englobent les bases de données externes (publiques ou fournisseurs de données) contenues et échangées via les réseaux sociaux , en ligne, les historiques de navigation et de recherche, les données transmises par les objets connectés, etc. ⇒ Véracité : ou qualité de données s’introduit. Données doivent être nettoyées, essuyées et mises en cohérence avant de pou- voir être analysées et croisées avec les données internes. La qualité des données dépend de deux facteurs : - Données peuvent être inexactes, incomplètes ou structurées d’une ma- nière qui les rendent difficile à analyser. ⇒ Il devient indispensable de vérifier la crédibilité de la source et la qualité du contenu préalablement. - Il n’est pas toujours facile d’anticiper quelles sont les données qui seront utiles à l’entreprise. ⇒ Bien étudier et définir le besoin réel pour ne pas dépenser ses res- sources à l’analyse de données qui peuvent être inutiles. Minyar Sassi Hidri Technologies pour le Big Data 25 / 227
  • 27. Problématique et termes clés Big Data : Le 4ème V - La Véracité Source : IBM Minyar Sassi Hidri Technologies pour le Big Data 26 / 227
  • 28. Problématique et termes clés Big Data : Le 5ème V - La Visualisation (Valeur) (1) I Le Big Data, ce n’est pas simplement des volumes de données considérables échangés, mais aussi une variété de contenus, de formats et de sources infinies, ainsi qu’une véritable problématique de maîtrise de la vitesse de création et de mise à jour des données. I Enfin, et pas des moindres, la Big Data met en opposition deux nécessités a priori contra- dictoires : - Celle de rationaliser et rendre accessibles des données qui se comptent pourtant en millions, milliards...C’est là qu’intervient le besoin d’une visualisation de données optimale et adaptée à une exploitation très opérationnelle de cette Big Data, avec trois objectifs finaux : Créer de la valeur, découvrir des insights différenciants, innover...le tout à un coût modéré ! Minyar Sassi Hidri Technologies pour le Big Data 27 / 227
  • 29. Forces majeurs 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 28 / 227
  • 30. Forces majeurs Forces majeurs D’une manière générale, on identifie cinq forces majeures à l’origine de l’accélération et l’augmentation du mouvement Big Data à savoir : La révolution du stockage grâce au Cloud. L’avènement d’une nouvelle science des données : les Analytics avancés. Les nouvelles possibilités de monétisation. L’automatisation des échanges de données et les objets connectés. Les progrès de la visualisation de données. Minyar Sassi Hidri Technologies pour le Big Data 29 / 227
  • 31. Forces majeurs Révolution de stockage Forces majeurs Révolution de stockage I Massification des échanges de données + Augmentation des types de contenus ⇒ Dépassement des possibilités de stockage des entrepôts de données des entreprises (SQL et MySQL pour les BDR). I Année 2000 : ruptures importantes se sont produites sur le volet stockage de l’information grâce à l’Internet : Proposer aux entreprises et aux particuliers des espaces de stockage flexibles dans les nuages ou Cloud à des prix très compétitifs (Google, Amazon, etc.) ; Espaces accessibles à travers des interfaces en ligne (Google App Engine, etc.). Développement d’une nouvelle philosophie de stockage intelligent de données, sous le vocable NoSQL, permettant des requêtes plus rapides et plus flexibles. ⇒ Grâce aux progrès technologique du Cloud et du NoSQL, le stockage et l’exploration du Big Data devient une opportunité plutôt qu’un obstacle pour les entreprises. Minyar Sassi Hidri Technologies pour le Big Data 30 / 227
  • 32. Forces majeurs Avènement d’une nouvelle science des données Forces majeurs Avènement d’une nouvelle science des données I La révolution du Big Data va de pair avec l’emergence d’une nouvelle science des données. I D’après Eric Moulines : La valorisation des immenses volumes de données hétérogènes passe la mise en œuvre d’analyses sophistiquées, un véritable passage à l’échelle dans la conception des modèles d’analyse et la mise en œuvre des algorithmes. I Analytics avancés : Statistiques non-paramétriques : Le modèle n’est pas décrit par un nombre fini de paramètres (http ://cmatias.perso.math.cnrs.fr/Docs/cours stat np ensiie.pdf). Règles d’association. Réduction de dimension : ACP, ACM, AFC, etc.. Classification non supervisée (ou clustering) : k-moyennes, CMF, etc.. Algorithmes génétiques. Minyar Sassi Hidri Technologies pour le Big Data 31 / 227
  • 33. Forces majeurs Automatisation des échanges de données et les objets connectés Forces majeurs Automatisation des échanges de données et les objets connectés I D’après Jean Franc¸ois Marcotorchino, Vice-Président et Directeur scientifique de Thales France : Le transfert extrêmement massif d’informations multimodales (vidéos, images, sons, localisation en plus du texte et des données structurées) via les smart- phones, les appareils connectés, les réseaux sociaux, mais aussi les opérateurs de e-commerce sont des facteurs fondamentaux à l’origines des problématiques Big Data.. I Exemple : - Chaque fois qu’on visite un site, qu’on clique sur un lien, depuis un ordinateur ou un smartphone, le comportement de l’utilisateur sur le site est automatiquement enregistré et analysé pour déterminer son profil, ses intentions d’achat et ses goûts. - Chaque étape du parcours de l’utilisateur peut être analysée pour comprendre les facteurs qui ont influencé sa décision d’achat et les critères qui lui sont indifférents. - De la même fac¸on, son décodeur TV analyse et transmet en temps réel des informa- tions sur ses comportements devant la télévision, connaˆıtre ce qu’il regarde, s’il zappe dès le début des publicités, s’il regarde plus souvent la télévision seul ou à plusieurs, etc. Minyar Sassi Hidri Technologies pour le Big Data 32 / 227
  • 34. Forces majeurs Progrès de la visualisation de données Forces majeurs Progrès de la visualisation de données I Les utilisateurs / décideurs doivent pouvoir visualiser et comprendre les résultats. I Le Reporting version Big Data doit être conc¸u pour pouvoir trouver une aiguille dans une botte de foin. ⇒ On parle de data vizualisation. I Exemple : Tableur, Qlikview, Gephi, etc. Minyar Sassi Hidri Technologies pour le Big Data 33 / 227
  • 35. Importance et défis du Big Data 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 34 / 227
  • 36. Importance et défis du Big Data Importance du Big Data Importance du Big Data I Dans la technologie de l’information : améliorer la sécurité, diagnostiquer les anomalies et le dépannage en analysant les structures dans les logs existants. I Au service chargé de la clientèle : en utilisant des informations des centres d’appels afin d’obtenir les modèles de clientèle et donc d’améliorer la satisfaction du client par la per- sonnalisation des services. I Dans l’amélioration des services et des produits : à travers l’utilisation du contenu des médias sociaux. En connaissant les préférences des clients potentiels, l’entreprise peut modifier son produit afin de répondre à une plus large gamme de personnes. I Dans la détection de la fraude : dans les transactions en ligne pour toute type d’industrie. I Dans l’évaluation des risques en analysant les informations provenant des transactions sur le marché financier. Minyar Sassi Hidri Technologies pour le Big Data 35 / 227
  • 37. Importance et défis du Big Data Défis du Big Data Défis du Big Data I Afin de déterminer la meilleure stratégie pour une entreprise, il est essentiel que les données qu’on compte sur soient correctement analysées. I Le laps de temps de cette analyse est important parce que certaines d’entre elles doivent être effectuées fréquemment afin de déterminer rapidement tout changement dans l’envi- ronnement des affaires. I Nouvelles technologies ⇒ problème organisationnel. I La nécessité des spécialistes de l’informatique : pour qu’une entreprise prend l’initiative du Big Data, elle doit soit engager des experts ou former les employés existants dans ce nouveau domaine. I La confidentialité et la sécurité : Comme le Big Data englobe une grande quantité de données complexes, il est très difficile pour une entreprise de trier ces données selon des niveaux privés et d’appliquer la sécurité adéquate. En outre, la plupart des entreprises aujourd’hui font des affaires à travers des pays et continents et les différences entre les lois privées sont considérables et doivent être pris en considération lors du démarrage de l’initiative Big Data. Minyar Sassi Hidri Technologies pour le Big Data 36 / 227
  • 38. Big Data et décisionnel Plan 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 37 / 227
  • 39. Big Data et décisionnel Big Data et décisionnel I Le modèle OLAP, ou traitement analytique en ligne, est considéré l’ancêtre du Big Data. I Il s’agit de volumes importants de données historiques qui représentent toutes les données de l’entreprise, et qui sont requˆetées afin d’obtenir des informations agrégées et statistiques de l’activité de l’entreprise (décisionnel, ou Business Intelligence), ou pour extraire des informations nouvelles de ces données existantes à l’aide d’algorithmes de traitement des données (Data Mining). I Mais... - Modélisation des données prélimi- naires : Fait et Dimensions. - Structuration de données / à des be- soins spécifiques. - Application à une analyse multi- dimensionnelle des données, mais pas pour fouille de données ou ap- prentissage automatique. Minyar Sassi Hidri Technologies pour le Big Data 38 / 227
  • 40. Approche traditionnelle versus approche Big Data 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 39 / 227
  • 41. Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Traditionnelle Analyse structurée et répétée I Les besoins métiers guident la conception de la solution. I Appropriée pour les données structurées. I Les opérations et les processus répétitifs, les sources relativement stables et les besoins sont bien compris et cadrés. Minyar Sassi Hidri Technologies pour le Big Data 40 / 227
  • 42. Approche traditionnelle versus approche Big Data Approche Big Data Approche Big Data (1) Analyse itérative et exploratoire I Les sources d’information guident la découverte créative. Minyar Sassi Hidri Technologies pour le Big Data 41 / 227
  • 43. Approche traditionnelle versus approche Big Data Fusion de deux approches Fusionner l’approche Big Data avec l’approche Traditionnelle I La question n’est pas : - Dois-je choisir entre l’approche classique et l’approche Big Data ? I Mais plutôt : - Comment les faire fonctionner ensemble ? Approche Traditionnelle Approche Big Data Analyse structurée et répétée Analyse itérative et exploratoire Minyar Sassi Hidri Technologies pour le Big Data 42 / 227
  • 44. Mise en place du Big Data : des chantiers de grande ampleur 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 43 / 227
  • 45. Mise en place du Big Data : des chantiers de grande ampleur Mise en place d’un projet Big Data I Choisir d’investir dans le Big Data est un premier pas, encore faut-il que les besoins métier soient identifiés en amont. I Deux étapes : Instruction & Conception - Instruction : Essentielle à chaque projet et prend tout son poids dans ce type de chantiers. Minyar Sassi Hidri Technologies pour le Big Data 44 / 227
  • 46. Mise en place du Big Data : des chantiers de grande ampleur Méthodologie Une approche progressive et itérative I Dans ce type de projets, le modèle clas- sique du cycle en V est déconseillé. I Il faut au contraire construire la solution progressivement, en prévoyant quelques itérations comprenant des interactions avec les futurs utilisateurs. I Données sont au cœur des attentes ⇒ Un dialogue permanent avec les utilisateurs des données doit être établi. I Les méthodes incrémentales sont donc adaptées à ce type de projet : - Il s’agit de diviser le projet en incréments, c’est-à-dire en parties fonctionnelles cohé- rentes. - Chaque incrément pouvant être testé séparément et faisant l’objet de plusieurs itéra- tions. - L’objectif est d’impliquer les utilisateurs dans le développement, la fourniture des exigences et l’évaluation des itérations. Minyar Sassi Hidri Technologies pour le Big Data 45 / 227
  • 47. Enjeux stratégiques 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 46 / 227
  • 48. Enjeux stratégiques Big Data : pour qui, pour quoi ? Big Data : pour qui, pour quoi ? Des arômes et ingrédients qui se déclinent dans tous les secteurs d’activité Minyar Sassi Hidri Technologies pour le Big Data 47 / 227
  • 49. Enjeux stratégiques Impacts du Big Data dans l’entreprise Impacts du Big Data dans l’entreprise (1) I La Big Data impacte l’ensemble de l’entreprise et permet de remettre le client au cœur de la stratégie : Tous les départements sont concernés par l’exploitation du Big Data : Marketing, Communication, Digital, RH, ´Etudes, Commercial, Finances, Innovation, Direction Générale... Finie la démarche Top Down où la Marque pousse sa stratégie vers le consommateur, en espérant que celle ci cadre avec les attentes de ses cibles. La Big Data permet, via l’analyse data, de se défaire de cette angoisse puisqu’elle remet le consommateur au cœur de la stratégie de l’entreprise. Ainsi, le comportement du consommateur, ses centres d’intérêt et ses prises de parole libres générés à grande échelle sont agrégés et analysés afin de créer ce fameux cadre stratégique, qui devient par définition totalement ajusté aux besoins et attentes des clients, et permet à la Marque d’alimenter toutes les directions de l’entreprise de fac¸on innovante et performante. Minyar Sassi Hidri Technologies pour le Big Data 48 / 227
  • 50. Enjeux stratégiques Impacts du Big Data dans l’entreprise Impacts du Big Data dans l’entreprise (2) Minyar Sassi Hidri Technologies pour le Big Data 49 / 227
  • 51. Enjeux stratégiques Impacts du Big Data dans l’entreprise Impacts du Big Data dans l’entreprise (3) I L’emergence de nouveaux metiers capables de gérer vos données d’In- ternet et d’en extraire les bonnes informations : Architecte Big Data : - Connaissance infrastructures et logiciels Big Data. Connaissances en modélisations. Data Analyst - Connaissance des logiciels & langages Big Data. Connaissance en modélisations. Data Scientist : - Connaissance des logiciels & langages Big Data. Connaissance en modélisations. Connaissances metiers. Chief-Data-Officer (Directeur des données) : - Responsable des données et de leur gouvernance (collecte, traitement, sauvegarde, accès). Responsable de l’analyse des données et aide à la decision. ⇒ Mettre en œuvre des équipes agiles & transverses. Minyar Sassi Hidri Technologies pour le Big Data 50 / 227
  • 52. Enjeux technologiques 1 Big Data : Faits, Intérêts, Sources et Challenges 2 Qu’est-ce que le Big Data ? Historique & contexte Définition Est-ce une innovation ? Vocabulaire 3 Problématique et termes clés 4 Forces majeurs 5 Importance et défis du Big Data 6 Big Data et décisionnel 7 Approche traditionnelle versus approche Big Data Approche traditionnelle Approche Big Data Fusion de deux approches 8 Mise en place du Big Data : des chantiers de grande ampleur 9 Enjeux stratégiques Big Data : pour qui, pour quoi ? Impacts du Big Data dans l’entreprise 10 Enjeux technologiques Minyar Sassi Hidri Technologies pour le Big Data 51 / 227
  • 53. Enjeux technologiques Enjeux technologiques Types d’outils utilisés dans le Big Data I Où le traitement est hébergé ? Serveurs distribués / Cloud (exemple Amazon EC2) I Où les données sont stockées ? Stockage distribué (exemple Amazon S3) I Quel modèle de programmation ? Traitement réparti (exemple MapReduce) I Comment les données sont stockées et indexées ? Bases de données à haute performance sans schéma (exemples MongoDB, Cassandra) I Quelles opérations sont effectuées sur des données ? Analytique Minyar Sassi Hidri Technologies pour le Big Data 52 / 227
  • 54. Chapitre 2 - Hadoop, MapReduce et le Big Data 1 Hadoop : Un standard de gestion des données et applications distribuées 2 HDFS : Hadoop Distributed File System 3 MapReduce Minyar Sassi Hidri Technologies pour le Big Data 53 / 227
  • 55. Objectifs I Découvrir diverses solutions complémentaires liées à Hadoop. I Apprendre à installer et à utiliser Hadoop. I Découvrir le paradigme de programmation parallèle MapReduce. Minyar Sassi Hidri Technologies pour le Big Data 54 / 227
  • 56. Hadoop 1 Hadoop : Un standard de gestion des données et applications distribuées Problématiques du calcul distribué La solution : Apache Hadoop L’écosystème Hodoop 2 HDFS : Hadoop Distributed File System Présentation Architecture ´Ecriture / Lecture d’un fichier 3 MapReduce Présentation Modèle de programmation Exemples Minyar Sassi Hidri Technologies pour le Big Data 55 / 227
  • 57. Hadoop Problématiques du calcul distribué Problématiques du calcul distribué (1) I Calcul distribué : exécution d’un traitement informatique sur une mul- titude de machines différentes (un cluster de machines) de manière transparente. I Problématiques : Accès et partage des ressources pour toutes les machines. Extensibilité : on doit pouvoir ajouter de nouvelles machines pour le calcul si nécessaire. Hétérogénéité : les machines doivent pouvoir avoir différentes archi- tectures. Tolérance aux pannes : une machine en panne faisant partie du cluster ne doit pas produire d’erreur pour le calcul dans son ensemble. Transparence : le cluster dans son ensemble doit être utilisable comme une seule et même machine traditionnelle. Minyar Sassi Hidri Technologies pour le Big Data 56 / 227
  • 58. Hadoop Problématiques du calcul distribué Problématiques du calcul distribué (2) I Ces problématiques sont complexes et ont donné lieu à des années de recherche et d’expérimentation. I On distingue historiquement deux approches/cas d’usage : [1] Effectuer des calculs intensifs localement (recherche scientifique) - on souhaite avoir un cluster de machines local pour accélérer le traitement. ⇒ Solution qui était jusqu’ici coûteuse et complexe à mettre en œuvre. [2] Exploiter la démocratisation de l’informatique moderne et la bonne volonté des utilisateurs du réseau pour créer un cluster distribué via Internet à moindre coût. ⇒ Solution qui suppose qu’on trouve des volontaires susceptibles de partager leur puissance de calcul. Minyar Sassi Hidri Technologies pour le Big Data 57 / 227
  • 59. Hadoop Problématiques du calcul distribué Problématiques du calcul distribué (3) I De nombreuses universités et entreprises ont des besoins d’exécution locale de tâches parallélisables sur des données massives. I Les solutions qui étaient disponibles jusqu’ici : [1] Des super calculateurs classiques comme Blue Gene : très oné- reux, souvent trop puissants par rapport aux besoins requis, réservés aux grands groupes industriels. [2] Des solutions développées en interne : investissement initial très conséquent, nécessite des compétences et une rigueur coûteuses. [3] Architecture Beowulf : un début de réponse, mais complexe à mettre en œuvre pour beaucoup d’entreprises ou petites universités, et nécessi- tant aussi un investissement initial assez conséquent. Minyar Sassi Hidri Technologies pour le Big Data 58 / 227
  • 60. Hadoop Problématiques du calcul distribué Problématiques du calcul distribué (4) I Le problème qui se posait jusqu’ici pour ce cas d’usage : Avoir un framework déjà disponible, facile à déployer, et qui permette l’exécution de tâches parallélisables - et le support et le suivi de ces tâches - de manière rapide et simple à mettre en œuvre. L’idée étant d’avoir un outil off the shelf qui puisse être installé et configuré rapidement au sein d’une entreprise/d’une université et qui permet à des développeurs d’exécuter des tâches distribuées avec un minimum de formation requise. L’outil en question devant être facile à déployer, simple à supporter, et pouvant permettre la création de clusters de tailles variables extensibles à tout moment. Minyar Sassi Hidri Technologies pour le Big Data 59 / 227
  • 61. Hadoop La solution : Apache Hadoop La solution Apache Hadoop Avantages Projet de la fondation Apache - Open Source, composants complètement ouverts, tout le monde peut participer. Modèle simple pour les développeurs : il suffit de développer des tâches Ma- pReduce depuis des interfaces simples accessibles via des librairies dans des langages multiples (Java, Python, C/C++, Rubby, R, etc.). Déployable très facilement (paquets Linux pré-configurés), configuration très simple elle aussi. S’occupe de toutes les problématiques liées au calcul distribué, comme l’accès et le partage des données, la tolérance aux pannes, ou encore la répartition des tâches aux machines membres du cluster. ⇒ Le programmeur a simplement à s’occuper du développement logiciel pour l’exécution de la tâche. Minyar Sassi Hidri Technologies pour le Big Data 60 / 227
  • 62. Hadoop La solution : Apache Hadoop Historique 2002 : Doug Cutting (directeur archive.org) et Mike Cafarella (étudiant) développent Nutch, un moteur de recherche Open Source exploitant le calcul distribué. L’implémentation peut tourner seulement sur quelques machines et a de multiples pro- blèmes, notamment en ce qui concerne l’accès et le partage de fichiers. 2003/2004 : Le département de recherche de Google publie deux whitepapers, le premier sur GFS (un système de fichier distribué) et le second sur le paradigme MapReduce pour le calcul distribué. 2004 : Doug Cutting et Mike Cafarella développent un framework (encore assez primitif) inspiré des papers de Google et portent leur projet Nutch sur ce framework. 2006 : Doug Cutting, chez Yahoo, est en charge d’améliorer l’indexation du moteur de recherche de Yahoo. Il exploite le framework réalisé précédemment et créé une nouvelle version améliorée du framework en tant que projet Open Source de la fondation Apache, qu’il nomme Hadoop (le nom d’un éléphant en peluche de son fils). - `A l’époque, Hadoop est encore largement en développement - un cluster pouvait alors comporter au maximum 5 à 20 machines, etc. . 2008 : Le développement est maintenant très abouti, et Hadoop est exploité par le moteur de recherche de Yahoo ainsi que par de nombreuses autres divisions de l’entreprise. 2011 : Hadoop est désormais utilisé par de nombreuses autres entreprises et des universités, et le cluster Yahoo comporte 42000 machines et des centaines de Petaoctets d’espace de stockage. 2015 : Hadoop se généralise notamment avec le buzz BigData et Cloud... Minyar Sassi Hidri Technologies pour le Big Data 61 / 227
  • 63. Hadoop La solution : Apache Hadoop Qui utilise Hadoop ? ...et des centaines d’entreprises et universités à travers le monde. Minyar Sassi Hidri Technologies pour le Big Data 62 / 227
  • 64. Hadoop La solution : Apache Hadoop Apache Hadoop : Une technologie en plein essort I De plus en plus de données produites par des SI deviennent très nombreuses. Ces données doivent toutes être analysées, corrélées, etc. I Hadoop offre une solution idéale et facile à implémenter au problème. Le projet Hadoop consiste en deux grandes parties : - Stockage des données : HDFS (Hadoop Distributed File System). - Traitement des données : MapReduce. Principe : - Diviser les données. - Les sauvegarder sur une collection de machines, appelées cluster. - Traiter les données directement là où elles sont stockées, plutôt que de les copier à partir d’un serveur distribué. Note : Il est possible d’ajouter des machines à votre cluster, au fur et à mesure que les données augmentent. I Le domaine de recherche/industriel autour de la gestion et de l’analyse de ces données - et de Hadoop et les technologies associées - est communément désigné sous l’expression Big Data. I Estimations IDC : croissance de 60% par an de l’industrie Big Data, pour un marché de 813 millions de dollars en 2016 uniquement pour la vente de logiciels autour de Hadoop. IDC : International Data Corporation - une entreprise américaine spécialisée dans la réalisation d’études de marché dans les domaines des technologies de l’information et de la communication et de l’électronique grand public. Minyar Sassi Hidri Technologies pour le Big Data 63 / 227
  • 65. Hadoop L’écosystème Hodoop Hadoop : Système d’exploitation de la donnée Vue d’ensemble I HDFS : Système de fichiers distri- bué. I MapReduce : Framework de trai- tement parallélisé. I HBase Système de gestion de base de données non-relationnelles distribué de type orientée colonnes. I Pig : Requêtage des données Hadoop à partir d’un langage de script. I Hive : Requêtage de type SQL. Et la gestion des transactions ? ? ? ? ? Déjà dans toutes les têtes surtout celle de Doug Cutting (le père de Hadoop) ! ! Minyar Sassi Hidri Technologies pour le Big Data 64 / 227
  • 66. Hadoop L’écosystème Hodoop Collecte et integration de données I Sqoop Outils permettant de transférer des données en masse entre Hadoop et un entrepôt de données structuré tel qu’une BD. I Flume Flume est un service distribué, fiable et hautement disponible servant à la collecte, l’agrégation et le déplacement d’une grosse quantité de données de logs. I Kafka (messaging) Système orienté message de type publish/subscribe implémenté comme système de traces transactionnel distribué, adapté pour la consommation de messages en-ligne et hors ligne. Minyar Sassi Hidri Technologies pour le Big Data 65 / 227
  • 67. Hadoop L’écosystème Hodoop Batch Processing I Hive Permet l’exécution de requêtes SQL sur un cluster Hadoop en vue d’analyser et d’agréger les données. Langage de visualisation uniquement. Offre les connecteurs ODBC/JDBC. I Pig Permet le requêtage des données Hadoop à partir d’un langage de script. Basé sur un langage de haut niveau permettant de créer des programmes de type MapReduce. I Cascading API de traitement de données et planificateur de requêtes pour la définition, le partage et le traitement de données. I Spark Moteur d’analyse multi-fonctions adapté au traitement rapide de gros volumes de données. Concurrent de MapReduce. Minyar Sassi Hidri Technologies pour le Big Data 66 / 227
  • 68. Hadoop L’écosystème Hodoop Analytic SQL I Drill Système distribué permettant d’effectuer des requêtes sur de larges données permet- tant l’analyse interactive des données en SQL. Permet de requêter des sources de données hétérogènes : MongoDB, JSON, HDFS, Hive, Classpath, HBase. Offre le connecteur ODBC. I Impala Système distribué permettant d’effectuer des requêtes sur de larges données permet- tant l’analyse interactive des données en SQL. Permet de requêter des sources de données hétérogènes : HDFS, HBase. Compatible avec Hive. I Spark SQL Module de Spark offrant une API de plus haut niveau avec une syntaxe SQL. ´Equivalent à Hive mais s’exécutant sur Spark. Offre le connecteur JDBC. Minyar Sassi Hidri Technologies pour le Big Data 67 / 227
  • 69. Hadoop L’écosystème Hodoop Stream processing I Storm Système de calcul distribué temps réel. I Spark Streaming Module de Spark permettant de traiter des flux de données qui arrivent en continu, et donc de traiter ces données au fur et à mesure de leur arrivée. I Spring XD Basé sur Spring Integration, Spring Batch et Spring Data. I Samza Framework permettant de traiter de manière distribué des flux. Utilise Kafka, Yarn. Minyar Sassi Hidri Technologies pour le Big Data 68 / 227
  • 70. Hadoop L’écosystème Hodoop Machine Learning (apprentissage automatique) I Mahout Vise à créer des implémentations d’algorithmes d’apprentissage automa- tiques et de Data Mining. Même si les principaux algorithmes d’apprentissage se basent sur Ma- pReduce, il n’y a pas d’obligation à utiliser Hadoop. I Spark ML Librairie Spark de machine learning fournissant les algorithmes de clas- sique : - Classification. - Regression. - Clustering. - Filtrage collaborative. - Réduction de la dimension. - ... Minyar Sassi Hidri Technologies pour le Big Data 69 / 227
  • 71. Hadoop L’écosystème Hodoop Search Engine I SolR VSolR offre une indexation distribuée et répliquée basée sur Apache Lu- cene. Permet la recherche full text, le highlighting, le facetting et la recherche géospatiale. Permet l’indexation de documents riches. I Elastic Elastic offre une indexation distribuée et répliquée basée sur Apache Lucene. Permet la recherche full text, le highlighting, le facetting et la recherche géospatiale. Permet l’indexation de documents riches. Minyar Sassi Hidri Technologies pour le Big Data 70 / 227
  • 72. Hadoop L’écosystème Hodoop Les distributions Pourquoi des distributions ? I Pour regrouper de fac¸on homogène les différentes extensions. I Pour faciliter l’installation, la diffusion et le support. I Pour permettre d’incuber des Business Model pour les éditeurs qui contribuent largement à Hadoop. I 3 acteurs majeurs dans l’écosystème : HortonWorks. Cloudera. MapR. I Comment choisir une solution Hadoop ? Modèle économique (Open Source, Commercial..). Les composants. Maturité de la solution, le support, la documentation, le retour d’experiences. Le rapport avec Hadoop, la rapidité des evolutions. Partenariats (hébergeurs...), compatibilité avec les produits satellites. Minyar Sassi Hidri Technologies pour le Big Data 71 / 227
  • 73. HDFS : Hadoop Distributed File System 1 Hadoop : Un standard de gestion des données et applications distribuées Problématiques du calcul distribué La solution : Apache Hadoop L’écosystème Hodoop 2 HDFS : Hadoop Distributed File System Présentation Architecture ´Ecriture / Lecture d’un fichier 3 MapReduce Présentation Modèle de programmation Exemples Minyar Sassi Hidri Technologies pour le Big Data 72 / 227
  • 74. HDFS : Hadoop Distributed File System Présentation HDFS : Présentation I Pour stocker les données en entrée de nos tâches Hadoop, ainsi que les résul- tats de nos traitements, on va utiliser HDFS : Hadoop Distributed FileSystem. I HDFS est inspiré de GFS, un système de fichiers distribué conc¸u par Google. I L’implémentation de HDFS a son origine dans un whitepaper issu du dépar- tement de recherche de Google (The Google File System, 2003) I Il s’agit du système de fichier standard de Hadoop - au même sens que les systèmes de fichiers FAT32, NTFS ou encore Ext3FS, mais : Systèmes de fichiers : les données sont écrites dans des blocs gérés par le FileSystem. HDFS : les données sont écrites dans des blocs gérés par le HDFS, qu’il est évidem- ment distribué. I Permet : La réplication (les blocs sont répliqués). La scalabilité (les blocs ne sont pas tous sur la même machine). Le stockage des données structurées ou non sur un ensemble de serveurs distribués. Minyar Sassi Hidri Technologies pour le Big Data 73 / 227
  • 75. HDFS : Hadoop Distributed File System Architecture HDFS : Architecture (1) I Node (Master/Slave) : dans une architecture Hadoop, chaque membre pouvant traiter des données est appelé Node (Nœud). I Un seul d’entre eux peut être Master même s’il peut changer au cours de la vie du cluster, il s’agit du NameNode (NN). Il est responsable de la localisation des données dans le cluster. I Les autres nœuds, stockant les données, sont des slaves appelés DataNode (DN). I Le NN est donc un point unique de défaillance (Single Point Of Failure (SPOF)) dans un cluster Hadoop (Hadoop 2.0 introduit un basculement (fai- lover) automatisé). Minyar Sassi Hidri Technologies pour le Big Data 74 / 227
  • 76. HDFS : Hadoop Distributed File System Architecture HDFS : Architecture (2) I NN : stocke les informations relatives aux noms de fichiers. C’est ce serveur qui, par exemple, va savoir qu’un fichier dans le répertoire Data Input, créé par le programmeur, comporte 58 blocs de données, et qui sait où ils se trouvent. Il y a un seul NN dans tout le cluster Hadoop. I DN : stocke les blocs de données eux-mêmes. Il y a un DN pour chaque machine au sein du cluster, et ils sont en communication constante avec le NN pour recevoir de nouveaux blocs, indiquer quels blocs sont contenus sur le DN, signaler des erreurs, etc... I BlockSize : Taille unitaire de stockage (généralement 64 Mo ou 128 Mo). C’est à dire qu’un fichier de 1 Go et une taille de block de 128 Mo sera divisé en 8 blocks. I Replication Factor C’est le nombre de copies d’une donnée devant être reparties sur les différents nœuds du cluster (souvent 3, c’est à dire une primaire et deux secondaires). I Processus de lecture HDFS : Interrogation du NN pour localiser les adresses des nœuds hébergeant les blocs sous- jacents les plus proches. I Processus d’écriture Écriture sur le DN. DN communique ses blocs au NN. Replication. Minyar Sassi Hidri Technologies pour le Big Data 75 / 227
  • 77. HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier ´Ecriture / Lecture d’un fichier ´Ecriture Lecture Minyar Sassi Hidri Technologies pour le Big Data 76 / 227
  • 78. HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier Écriture d’un fichier I Si on souhaite écrire un fichier au sein de HDFS, on va utiliser la commande princi- pale de gestion de Hadoop : $hadoop fs. I Le programme va diviser le fichier en blocs de 64MB (ou 128 Mo, selon la configura- tion). I Il va ensuite annoncer au NN. I Le NN va alors indiquer au programme qu’il doit stocker le bloc 1 sur le DN nu- méro 3, et le bloc 2 sur le DN numéro 1. I Le client Hadoop va alors contacter direc- tement les DNs concernés et leur deman- der de stocker les deux blocs en question. I Par ailleurs, les DNs s’occuperont - en in- formant le NN - de répliquer les données entre eux pour éviter toute perte de don- nées. Minyar Sassi Hidri Technologies pour le Big Data 77 / 227
  • 79. HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier Lecture d’un fichier I Si on souhaite lire un fichier au sein de HDFS, on utilise aussi le client Hadoop : $hadoop fs. I Le client va contacter le NN en spécifiant le nom de fichier. I Le NN lui répondra par exemple : Il est composé de deux blocs. Le premier est dis- ponible sur le DN 3 et 2, le second sur le DN 1 et 3. I Là aussi, le programme contactera les DNs directement et leur demandera de lui trans- mettre les blocs concernés. En cas d’er- reur/non réponse d’un des DNs, il passe au suivant dans la liste fournie par le NN. Minyar Sassi Hidri Technologies pour le Big Data 78 / 227
  • 80. HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier Dysfonctionnement ! ! ! I La gestion du stockage est assurée par les daemons Hadoop. On a pas à se soucier d’où sont stockées les données. I Hadoop réplique lui-même les données : les fichiers sont disponibles à tout moment sur plusieurs DNs, et si une machine tombe en panne, on a toujours accès aux données grâce à la replication. I Si l’un des nœuds a un problème, les données seront perdues : Hadoop réplique chaque bloc 3 fois. Il choisit 3 nœuds au hasard, et place une copie du bloc dans chacun d’eux. Si le nœud est en panne, le NN le détecte, et s’occupe de répliquer encore les blocs qui y etaient hébergés pour avoir toujours 3 copies stockées. I Si le NN a un problème ? Minyar Sassi Hidri Technologies pour le Big Data 79 / 227
  • 81. HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier Dysfonctionnement ! ! ! I Si c’est un problème d’accès (ré- seau), les données sont temporaire- ment inaccessibles. I Si le disque du NN est défaillant, les données seront perdues à ja- mais ! ! ! ! I Pour éviter cela, le NN sera dupli- qué, non seulement sur son propre disque, mais également quelque part sur le système de fichiers du réseau. I Définition d’un autre NN (standby NN) pour reprendre le travail si le NN actif est défaillant. Minyar Sassi Hidri Technologies pour le Big Data 80 / 227
  • 82. HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier Commandes Hadoop I Comme indiqué plus haut, la commande permettant de stocker ou extraire des fichiers de HDFS est l’utilitaire console $hadoop avec l’option fs. I Il réplique globalement les commandes systèmes standards Linux, et est très simple à utiliser : $hadoop fs -mkdir /Data Input Pour créer le répertoire /Data Input $hadoop fs -put /home/cloudera/mydata.txt /Data Input/mydata.txt Pour stocker le fichier mydata.txt sur HDFS dans le repertoire /Data Input. $hadoop fs -get /Data Input/mydata.txt mydata.txt Pour obtenir le fichier /Data Input/mydata.txt de HDFS et le stocker dans le fichier local mydata.txt. $hadoop fs -cat Data Input/mydata.txt Pour afficher le contenu du fichier mydata.txt. $hadoop fs -rm /Data Input/mydata.txt Pour supprimer le fichier /Data Input/mydata.txt D’autres commandes usuelles : -ls, -cp, -rmr, du, etc... Minyar Sassi Hidri Technologies pour le Big Data 81 / 227
  • 83. MapReduce 1 Hadoop : Un standard de gestion des données et applications distribuées Problématiques du calcul distribué La solution : Apache Hadoop L’écosystème Hodoop 2 HDFS : Hadoop Distributed File System Présentation Architecture ´Ecriture / Lecture d’un fichier 3 MapReduce Présentation Modèle de programmation Exemples Minyar Sassi Hidri Technologies pour le Big Data 82 / 227
  • 84. MapReduce Présentation Présentation (1) I Pour exécuter un problème large de manière distribuée, il faut pouvoir décou- per le problème en plusieurs sous-problèmes de taille réduite à exécuter sur chaque machine du cluster. ⇒ Stratégie algorithmique dite du divide and conquer / diviser pour régner. I De multiples approches de division d’un problème en plusieurs sous-tâches existent : Open MP, MPI, etc... ; I MapReduce est un paradigme visant à généraliser les approches existantes pour produire une approche unique applicable à tous les problèmes. I MapReduce, écrit en C++ (publication issue du département de recherche de Google publié en 2004 (MapReduce : Simplified Data Processing on Large Clusters)). I Un framework pour l’analyse du Big Data : - Pour données non structurées, sans schéma, etc.. - Pour de très grands clusters. - Des milliers de nœuds. - Partitionnement et parallélisation automatiques. Minyar Sassi Hidri Technologies pour le Big Data 83 / 227
  • 85. MapReduce Présentation Présentation (2) MapReduce définit deux opérations distinctes à effectuer sur les données d’entrée : [1.] Map : - Transforme les données d’entrée en une série de couples (key, value). - Regroupe les données en les associant à des clés, choisies de telle sorte que les couples (key, value) aient un sens par rapport au problème à résoudre. Note : Cette opération doit être parallèlisable. On doit pouvoir découper les données d’entrée en plusieurs fragments, et faire exécuter l’opération Map à chaque machine du cluster sur un fragment distinct. [2.] Reduce : - Applique un traitement à toutes les valeurs de chacune des clés distinctes produite par l’opération Map. - Au terme de l’opération Reduce, on aura un résultat pour chacune des clés distinctes. Ici, on attribuera à chacune des machines du cluster une des clés uniques produites par Map, en lui donnant la liste des valeurs associées à la clé. Chacune des machines effectuera alors l’opération Reduce pour cette clé. Minyar Sassi Hidri Technologies pour le Big Data 84 / 227
  • 86. MapReduce Modèle de programmation Modèle de programmation I Données sous forme de paires (key, value). Ex. (doc-id, content), (word, count), etc.. I Le programmeur fournit le code de deux fonctions : Map (key, value) → list(ikey, ivalue) : permet de faire le même traitement en parallèle sur des données partitionnées. Reduce(ikey, list(ivalue)) → list(ikey, fvalue) : permet d’agréger les données traitées par Map. I Traitement parallèle des étapes Map et Reduce : Partitionnement des données. Tolérance aux fautes. Ordonnancement des accès disques : méthodes qu’un SE utilise pour décider de l’ordre dans lequel les opérations d’E/S seront transmises aux disques. Minyar Sassi Hidri Technologies pour le Big Data 85 / 227
  • 87. MapReduce Modèle de programmation Fonctionnement MapReduce On distingue donc 4 étapes dans un traitement MapReduce : 1. Découper (split) les données d’en- trée en plusieurs fragments. 2. Mapper chacun de ces fragments pour obtenir des couples (key, va- lue). 3. Grouper (shuffle) ces couples (key, value) par clé (key). 4. Réduire (reduce) les groupes in- dexés par clé en une forme finale, avec une valeur pour chacune des clés distinctes. Minyar Sassi Hidri Technologies pour le Big Data 86 / 227
  • 88. MapReduce Exemples Exemple 1 : Comptage du nombre de mots La phase Map (1) I Il s’agit de concevoir un programme MapReduce comptant le nombre d’occurrences des différents mots composant un fichier. am stram gram pic et pic et colégram bour et bour et ratatam am stram gram I Un enregistrement correspond à une ligne terminée par n. I Voici le mapper (pseudo-code) du programme WordCount : Map (key, value) : //key : nom de fichier ; value : contenu (d’une partie) du fichier POUR CHAQUE word w IN value ´Emettre(w, 1) Minyar Sassi Hidri Technologies pour le Big Data 87 / 227
  • 89. MapReduce Exemples Exemple 1 : Comptage du nombre de mots La phase Map (2) I Le contenu du fichier en sortie de Mapper est comme suit : am,1 stram,1 gram,1 pic,1 et,1 pic,1 et,1 colégram,1 bour,1 et,1 bour,1 et,1 ratatam,1 am,1 stram,1 gram,1 I On notera qu’en sortie de mapper : Les résultats, dits intermédiaires, sont aussi stockés sous forme de (key, value). La valeur en entrée (un mot) est devenue une clé en sortie ; La clé en entrée de mapper ne joue aucun rôle dans le programme. Minyar Sassi Hidri Technologies pour le Big Data 88 / 227
  • 90. MapReduce Exemples Exemple 1 : Comptage du nombre de mots Entre la phase Map et la phase Reduce I Avant d’être envoyé au reducer, le fi- chier est automatiquement trié par clé : c’est ce que l’on appelle la phase de shuffle & sort. I Le fichier en entrée du reducer est le suivant : am,[1,1] bour,[1,1] colégram,[1] et,[1,1,1,1] gram,[1,1] pic,[1,1] ratatam,[1] stram,[1,1] Minyar Sassi Hidri Technologies pour le Big Data 89 / 227
  • 91. MapReduce Exemples Exemple 1 : Comptage du nombre de mots La phase Reduce I Voici le reducer du programme MapReduce permettant de consolider les résultats issus du mapper : 1. Reduce (key, values) //key : un mot ; values : une liste de 1 2. r´esultat = 0 3. POUR CHAQUE value v IN values r´esultat+ = v ; 4. ´Emettre(key, r´esultat) Ligne 1 : le reducer prend en entrée un enregistrement sous la forme d’un couple (key, values) avec : - key du type Text (c’est un mot). - values étant une liste de valeurs du type intWri- table. Ligne 2 : le reducer remet à zéro le compteur r´esultat lorsque l’on change de mot (rappelons que le change- ment de mot correspond à un changement de clé, et donc d’enregistrement, et qu’il est géré par Hadoop). Ligne 3 : pour chaque valeur v dans la liste values on ajoute v r´esultat (dans notre exemple v vaut toujours 1). Ligne 4 : quand on change de mot, on écrit dans un fichier en sortie le couple (key, r´esultat), r´esultat étant le nombre d’occurrences du mot contenu dans la variable key. I Le fichier en sortie de reducer sera donc le suivant : am,2 bour,2 colégram,1 et,4 gram,2 pic,2 ratatam,1 stram,2 Minyar Sassi Hidri Technologies pour le Big Data 90 / 227
  • 92. MapReduce Exemples Exemple 1 : Comptage du nombre de mots Quatre Mappers et deux Reduces I Nous venons d’écrire notre premier programme MapReduce permettant de compter le nombre d’occurrences des différents mots composant un livre. I Il faut néanmoins reconnaître qu’avec un seul Mapper et un seul Reducer les performances de notre programme ne seront pas meilleures que celle d’un programme classique s’exécutant sur une seule machine. I Pour tirer parti des spécificités de Hadoop, nous allons faire évoluer notre cluster en le configurant pour qu’il dispose de : Quatre Mappers. Deux Reducers. Minyar Sassi Hidri Technologies pour le Big Data 91 / 227
  • 93. MapReduce Exemples Exemple 1 : Comptage du nombre de mots Quatre Mappers et deux Reduces : La phase Map I Chacun des quatre mappers va travailler sur une partie du fichier en entrée, par exemple : Le mapper n◦ 1 va traiter la ligne 1. Le mapper n◦ 2 va traiter la ligne 2. Le mapper n◦ 3 va traiter la ligne 3. Le mapper n◦ 4 va traiter la ligne 4. I Chaque mapper va produire un fichier de résultats intermédiaires : Minyar Sassi Hidri Technologies pour le Big Data 92 / 227
  • 94. MapReduce Exemples Exemple 1 : Comptage du nombre de mots Quatre Mappers et deux Reduces : Entre la phase Map et la phase Reduce I Avant le transfert des résultats intermédiaires des mappers vers les reducers : Les enregistrements sont triés par clé. Tous les enregistrements correspondant à une même clé sont envoyés vers un seul et même reducer. I Hadoop garantit : Que si un reducer rec¸oit le couple am,1 du mapper1, alors il recevra aussi le couple am,1 du mapper4. Que tous les enregistrements correspondant à la clé am seront regroupés et envoyés au même reducer. I On est ainsi sûr que le comptage sera exact. I Les fichiers en entrée des reducers seront par exemple : Minyar Sassi Hidri Technologies pour le Big Data 93 / 227
  • 95. MapReduce Exemples Exemple 1 : Comptage du nombre de mots Quatre Mappers et deux Reduces : La phase Reduce Les fichier en sortie des reducers seront alors les suivants : Il ne reste plus qu’à fusionner les fichiers issus des deux reducers pour obtenir le résultat cherché. Par rapport au premier cluster (un mapper et un reducer), ce nouveau cluster (quatre mappers et deux reducers) permet : - De diviser par un facteur de l’ordre de quatre le temps d’exécution de la phase Map. - De diviser par un facteur de l’ordre de deux le temps d’exécution de la phase Reduce. Le gain peut paraître dérisoire dans notre exemple dont l’intérêt est avant tout pédagogique mais, dans la réalité, Hadoop a permis à des entreprises de diviser par un facteur 10 les temps d’exécution de certains travaux informatiques. Une telle amélioration peut être vitale lorsque les travaux concernés doivent tourner tous les jours, et que leur temps d’exécution dans un environnement informatique classique avoisine les 24 heures. Minyar Sassi Hidri Technologies pour le Big Data 94 / 227
  • 96. MapReduce Exemples Exemple 2 : Graphe social (1) On administre un réseau social comportant des millions d’utilisateurs. Pour chaque utilisateur, on a dans notre BD la liste des utilisateurs qui sont ses amis sur le réseau (via une requête SQL). On souhaite afficher quand un utilisateur va sur la page d’un autre utilisateur une indication Vous avez N amis en commun ; On ne peut pas se permettre d’effectuer une série de requêtes SQL à chaque fois que la page est accédée (trop lourd en traitement). ⇒ On va donc développer des programmes Map et Reduce pour cette opération et exécuter le traitement toutes les nuits sur notre BD, en stockant le résultat dans une nouvelle table. Minyar Sassi Hidri Technologies pour le Big Data 95 / 227
  • 97. MapReduce Exemples Exemple 2 : Graphe social (2) Ici, nos données d’entrée sont sous la forme Utilisateur ⇒ Amis : A ⇒ B, C, D B ⇒ A, C, D, E C ⇒ A, B, D, E D ⇒ A, B, C, E E ⇒ B, C, D Puisqu’on est intéressé par l’information amis en commun entre deux utilisateurs et qu’on aura à terme une valeur par clé, on va choisir pour clé la concaténation entre deux utilisateurs. Par exemple, la clé A−B désignera les amis en communs des utilisateurs A et B. On peut segmenter les données d’entrée là aussi par ligne. Minyar Sassi Hidri Technologies pour le Big Data 96 / 227
  • 98. MapReduce Exemples Exemple 2 : Graphe social (3) La phase Map Notre opération Map va se contenter de prendre la liste des amis fournie en entrée, et va générer toutes les clés distinctes possibles à partir de cette liste. La valeur sera simplement la liste d’amis, telle quelle. On fait également en sorte que la clé soit toujours triée par ordre alphabétique (clé B − A sera exprimée sous la forme A − B). Ce traitement peut paraître contre-intuitif, mais il va à terme nous per- mettre d’obtenir, pour chaque clé distincte, deux couples (key, value) : les deux listes d’amis de chacun des utilisateurs qui composent la clé. Minyar Sassi Hidri Technologies pour le Big Data 97 / 227
  • 99. MapReduce Exemples Exemple 2 : Graphe social (4) La phase Map Le pseudo code de notre opération Map est le suivant : Par exemple, pour la première ligne : On obtiendra les couples (key, value) : Minyar Sassi Hidri Technologies pour le Big Data 98 / 227
  • 100. MapReduce Exemples Exemple 2 : Graphe social (5) La phase Map Pour la seconde ligne : On obtiendra ainsi : Pour la troisième ligne : On aura : ...et ainsi de suite pour nos 5 lignes d’entrée Minyar Sassi Hidri Technologies pour le Big Data 99 / 227
  • 101. MapReduce Exemples Exemple 2 : Graphe social (6) Entre la phase Map et la phase Reduce Une fois l’opération Map effectuée, Hadoop va récupérer les couples (key, valeur) de tous les fragments et les grouper par clé distincte. Le résultat sur la base de nos données d’entrée : ...on obtient bien, pour chaque clé USER1 − USER2, deux listes d’amis : les amis de USER1 et ceux de USER2. Minyar Sassi Hidri Technologies pour le Big Data 100 / 227
  • 102. MapReduce Exemples Exemple 2 : Graphe social (7) La phase Reduce Il nous faut enfin écrire notre programme Reduce. Il va recevoir en entrée toutes les valeurs associées à une clé. Son rôle va être très simple : déterminer quels sont les amis qui apparaissent dans les listes (les valeurs) qui nous sont fournies. Minyar Sassi Hidri Technologies pour le Big Data 101 / 227
  • 103. MapReduce Exemples Exemple 2 : Graphe social (8) La phase Reduce Après exécution de l’opération Reduce pour les valeurs de chaque clé unique, on obtiendra donc, pour une clé A − B, les utilisateurs qui apparaissent dans la liste des amis de A et dans la liste des amis de B. Autrement dit, on obtiendra la liste des amis en commun des utilisateurs A et B. Le résultat est : On sait ainsi que A et B ont pour amis communs les utilisateurs C et D, ou encore que B et C ont pour amis communs les utilisateurs A, D et E. Minyar Sassi Hidri Technologies pour le Big Data 102 / 227
  • 104. MapReduce Exemples Exemple 2 : Graphe social (9) Synthèse I En utilisant le modèle MapReduce, on a ainsi pu créer deux programmes très simples (nos programmes Map et Reduce) de quelques lignes de code seule- ment, qui permettent d’effectuer un traitement somme toute assez complexe. I Mieux encore, notre traitement est parallélisable : même avec des dizaines de millions d’utilisateurs, du moment qu’on a assez de machines au sein du cluster Hadoop, le traitement sera effectué rapidement. Pour aller plus vite, il nous suffit de rajouter plus de machines. I Pour notre réseau social, il suffira d’effectuer ce traitement toutes les nuits à heure fixe, et de stocker les résultats dans une table. Ainsi, lorsqu’un utilisateur visitera la page d’un autre utilisateur, un seul SE- LECT dans la BD suffira pour obtenir la liste des amis en commun - avec un poids en traitement très faible pour le serveur. Minyar Sassi Hidri Technologies pour le Big Data 103 / 227
  • 105. Chapitre 3 - Programmation MapReduce sous Hadoop 1 Architecture fonctionnelle 2 MapReduce du point de vue du développeur Java : Les entrées / Sorties 3 Création d’un projet Java Wordcount sous Eclipse 4 Hadoop Streaming Minyar Sassi Hidri Technologies pour le Big Data 104 / 227
  • 106. Architecture fonctionnelle 1 Architecture fonctionnelle 2 MapReduce du point de vue du développeur Java : Les entrées / Sorties 3 Création d’un projet Java Wordcount sous Eclipse 4 Hadoop Streaming Minyar Sassi Hidri Technologies pour le Big Data 105 / 227
  • 107. Architecture fonctionnelle Principe de programmation Pour résoudre un problème via la méthodologie MapReduce avec Hadoop, on doit : Choisir une manière de découper les données d’entrée de telle sorte que l’opération Map soit parallèlisable. Définir quelle clé utiliser pour notre problème. Écrire le programme pour l’opération Map. Écrire le programme pour l’opération Reduce. ...et Hadoop se chargera du reste (problématiques calcul distribué, groupement par clé distincte entre Map et Reduce, etc.). Minyar Sassi Hidri Technologies pour le Big Data 106 / 227
  • 108. Architecture fonctionnelle Architecture fonctionnelle (1) Comme pour HDFS, la gestion des tâches de Hadoop se base sur deux serveurs (des daemons) : Le JobTracker, qui va directement recevoir la tâche à exécuter (un .jar Java), ainsi que les données d’entrées (nom des fichiers stockés sur HDFS) et le répertoire où stocker les don- nées de sortie (toujours sur HDFS). Il y a un seul JobTracker sur une seule machine du clus- ter Hadoop. Le JobTracker est en communi- cation avec le NN de HDFS et sait donc où sont les données. Le TaskTracker, qui est en communication constante avec le JobTracker et va recevoir les opérations simples à effectuer (Map/Reduce) ainsi que les blocs de données correspondants (stockés sur HDFS). Il y a un TaskTracker sur chaque machine du cluster. Minyar Sassi Hidri Technologies pour le Big Data 107 / 227
  • 109. Architecture fonctionnelle Architecture fonctionnelle (2) I Comme le JobTracker est conscient de la position des données (grâce au NN), il peut facilement déterminer les meilleures machines auxquelles attribuer les sous-tâches (celles où les blocs de données correspondants sont stockés). I Pour effectuer un traitement Hadoop, on va donc : Stocker nos données d’entrée sur HDFS. Créer un répertoire où Hadoop stockera les résultats sur HDFS. Compiler nos programmes Map et Reduce au sein d’un .jar Java. I On soumettra alors le nom des fichiers d’entrée, le nom du répertoire des résul- tats, et le .jar lui-même au JobTracker : il s’occupera du reste (et notamment de transmettre les programmes Map et Reduce aux serveurs TaskTracker des machines du cluster). Minyar Sassi Hidri Technologies pour le Big Data 108 / 227
  • 110. Architecture fonctionnelle Architecture fonctionnelle (3) Le JobTracker I Le déroulement de l’exécution d’une tâche Hadoop suit les étapes sui- vantes du point de vue du JobTracker : 1. Le client (un outil Hadoop console : $hadoop) va soumettre le travail à effectuer au JobTracker : une archive Java .jar implémentant les opérations Map et Reduce. Il va également soumettre le nom des fichiers d’entrée, et l’endroit où stocker les résultats. 2. Le JobTracker communique avec le NN HDFS pour savoir où se trouvent les blocs correspondant aux noms de fichiers donnés par le client. 3. Le JobTracker, à partir de ces informations, détermine quels sont les nœuds TaskTra- cker les plus appropriés, c’est à dire ceux qui contiennent les données sur lesquelles travailler sur la même machine, ou le plus proche possible (même rack/rack proche). 4. Pour chaque morceau des données d’entrée, le JobTracker envoie au TaskTracker sélectionné le travail à effectuer (Map/Reduce, code Java) et les blocs de données correspondant. Minyar Sassi Hidri Technologies pour le Big Data 109 / 227
  • 111. Architecture fonctionnelle Architecture fonctionnelle (4) Le JobTracker 5. Le JobTracker communique avec les nœuds TaskTracker en train d’exécuter les tâches. Ils envoient régulièrement un heartbeat, un message signalant qu’ils travaillent toujours sur la sous-tâche rec¸ue. Si aucun heartbeat n’est rec¸u dans une période donnée, le JobTracker considère la tâche comme ayant échouée et donne le même travail à effectuer à un autre TaskTracker. 6. Si par hasard une tâche échoue (erreur java, données incorrectes, etc.), le TaskTracker va signaler au JobTracker que la tâche n’a pas pu être exécutée. Le JobTracker va alors décider de la conduite à adopter : redonner la sous-tâche à un autre TaskTracker, demander au même TaskTracker de ré-essayer, marquer les données concernées comme invalides, etc. Il pourra même blacklister le TaskTracker concerné comme non-fiable dans certains cas. 7. Une fois que toutes les opérations envoyées aux TaskTracker (Map + Reduce) ont été effec- tuées et confirmées comme effectuées par tous les noeuds, le JobTracker marque la tâche comme effectuée. Des informations détaillées sont disponibles (statistiques, TaskTracker ayant posé problème, etc.). Minyar Sassi Hidri Technologies pour le Big Data 110 / 227
  • 112. Architecture fonctionnelle Architecture fonctionnelle (5) Le JobTracker I On peut également obtenir à tout moment de la part du JobTracker des informations sur les tâches en train d’être effectuées : étape actuelle (Map, Shuffle, Reduce), % de complétion, etc.. I La soumission du .jar, l’obtention de ces informations, et d’une manière générale toutes les opérations liées à Hadoop s’effectuent avec le même unique client console vu précédem- ment : $hadoop. I De manière similaire au NN de HDFS, il n’y a qu’un seul JobTracker et s’il tombe en panne, le cluster tout entier ne peut plus effectuer de tâches. La aussi, des résolutions aux problème sont prévues dans la roadmap Hadoop. I Généralement, on place le JobTracker et le NN HDFS sur la même machine (une machine plus puissante que les autres), sans y placer de TaskTracker/DN HDFS pour limiter la charge. Cette machine particulière au sein du cluster (qui contient les deux gestionnaires, de tâches et de fichiers) est communément appelée le nœud maître (Master Node). Les autres nœuds (contenant TaskTracker + DN) sont communément appelés nœuds esclaves (Slave Node). I Même si le JobTracker est situé sur une seule machine, le client qui envoie la tâche au JobTracker initialement peut être exécuté sur n’importe quelle machine du cluster - comme les TaskTracker sont presents sur la machine, ils indiquent au client comment joindre le JobTracker. Minyar Sassi Hidri Technologies pour le Big Data 111 / 227
  • 113. Architecture fonctionnelle Architecture fonctionnelle (6) Le TaskTracker I Lorsque le TaskTracker rec¸oit une nouvelle tâche à effectuer (Map, Reduce, Shuffle) depuis le JobTracker, le TaskTracker va démarrer une nouvelle ins- tance de Java avec le fichier .jar fourni par le JobTracker, en appelant l’opé- ration correspondante. I Une fois la tâche démarrée, il enverra régulièrement au JobTracker ses mes- sages heartbeats. I Lorsqu’une sous-tâche est terminée, le TaskTracker envoie un message au JobTracker pour l’en informer, que la tâche se soit bien déroulée ou non (il indique évidemment le résultat au JobTracker). Minyar Sassi Hidri Technologies pour le Big Data 112 / 227
  • 114. MapReduce du point de vue du développeur Java 1 Architecture fonctionnelle 2 MapReduce du point de vue du développeur Java : Les entrées / Sorties 3 Création d’un projet Java Wordcount sous Eclipse 4 Hadoop Streaming Minyar Sassi Hidri Technologies pour le Big Data 113 / 227
  • 115. MapReduce du point de vue du développeur Java Les entrées-sorties (1) I Dans MapReduce, les données sont toujours lues ou écrites selon le format (key, value). Cette fac¸on de procéder peut paraître réductrice, mais en fait : On s’aperc¸oit à l’usage qu’il est possible, avec un peu d’expérience et d’astuce, de traiter beaucoup de problèmes de cette manière, y compris, par exemple, la recherche du plus court chemin dans un graphe orienté acyclique. Le fait d’imposer une structure unique et simple aux enregistre- ments, tant en lecture qu’en écriture, contribue à l’efficacité d’Ha- doop au niveau des entrées-sorties. Minyar Sassi Hidri Technologies pour le Big Data 114 / 227
  • 116. MapReduce du point de vue du développeur Java Les entrées-sorties (2) I Les données lues par le mapper sont définies au niveau du driver. La définition des données comprend : Leur localisation (fichier ou répertoire). Le type des enregistrements, qui est défini par la classe InputFormat. La détermination de la taille des InputSplits : un InputSplit définit le volume des données qui seront lues à chaque opération de lecture : - L’InputSplit a le plus souvent la taille d’un bloc HDFS, mais ce n’est pas une obligation. - Il est du ressort de Hadoop de faire le lien entre enregistrements et InputSplits d’une part, et entre InputSplits et blocs HDFS d’autre part. - Il n’y a en effet aucune garantie que la fin d’un bloc corresponde à la fin d’un enregistrement. Minyar Sassi Hidri Technologies pour le Big Data 115 / 227
  • 117. MapReduce du point de vue du développeur Java Les entrées-sorties (3) I Hadoop prend en compte par défaut les types d’enregistrement sui- vants : TextInputFormat : - Type par défaut. - value est une ligne entière terminée par n. - key est l’offset de la ligne depuis le début de fichier (elle est souvent sans intérêt pour le problème à traiter et, dans ce cas, il suffit de l’ignorer). KeyValueTextInputFormat : - Chaque ligne est supposée être au format <key><separator><value> n. - Le separator par défaut est tab. SequenceFileInputFormat : - Permet de lire un fichier binaire de paires <key, value>, comprenant éventuel- lement des métadonnées. SequenceFileAsTextInputFormat : - Format identique au précédent mais, en plus, convertit les clés et les valeurs en strings (<key.toString(), value.toString()>). Minyar Sassi Hidri Technologies pour le Big Data 116 / 227
  • 118. MapReduce du point de vue du développeur Java Les entrées-sorties (4) I Dans Hadoop : Les clés sont des objets qui implémentent l’interface ComparableWritable. Les valeurs sont des objets qui implémentent l’interface Writable. I L’utilisation de l’interface Writable permet d’optimiser le processus de sérialisation lors des accès disque. Tout type de données dans Hadoop doit implémenter Writable. I Par défaut, Hadoop propose les types de données suivants : IntWritable (int en Java). LongWritable (long en Java). FloatWritable (float en Java). DoubleWritable (double en Java). Text (string en Java). etc.. Minyar Sassi Hidri Technologies pour le Big Data 117 / 227
  • 119. MapReduce du point de vue du développeur Java Programmation MapReduce sous Hadoop I Comme indiqué précédemment, Hadoop est développé en Java. Les tâches Map/Reduce sont donc implémentables par le biais d’interfaces Java (il existe cependant des wrappers très simples permettant d’implémenter ses tâches dans n’importe quel langage). I Un programme Hadoop se compile au sein d’un .jar. I Pour développer un programme Hadoop, on va créer trois classes distinctes : Une classe dite Driver qui contient la fonction main du programme. Cette classe se chargera d’informer Hadoop des types de données (key, value) utilisées, des classes se chargeant des opérations Map et Reduce, et des fichiers HDFS à utiliser pour les entrées/sorties. Une classe Map (qui effectuera l’operation Map). Une classe Reduce (qui effectuera l’operation Reduce). Minyar Sassi Hidri Technologies pour le Big Data 118 / 227
  • 120. MapReduce du point de vue du développeur Java Programmation Hadoop La classe Driver I La classe Driver contient le main de notre programme. I Au sein du main() en question, on va effectuer les opérations suivantes : Créer un objet Configuration de Hadoop, qui est nécessaire pour : - Permettre à Hadoop d’obtenir la configuration générale du cluster. L’objet en question pourrait aussi nous permettre de récupérer nous-même des options de configuration qui nous intéressent. - Permettre à Hadoop de récupérer d’éventuels arguments génériques disponibles sur la ligne de commande (par exemple le nom du package de la tâche à exé- cuter si le .jar en contient plusieurs). On va également récupérer les arguments supplémentaires pour s’en servir ; on souhaite que l’utilisateur puisse préciser le nom du fichier d’entrée et le nom du répertoire de sortie HDFS pour nos tâches Hadoop grâce à la ligne de commande. Créer un nouvel objet Hadoop Job qui désigne une tâche Hadoop. Utiliser cet objet Job pour informer Hadoop du nom de nos classes Driver, Map et Reduce. Utiliser le même objet pour informer Hadoop des types de données utilisés dans notre programme pour les couples (key,value) Map et Reduce. Informer Hadoop des fichiers d’entrée/sortie pour notre tâche sur HDFS. Enfin, utiliser l’objet Job crée précédemment pour déclencher le lancement de la tâche via le cluster Hadoop. Minyar Sassi Hidri Technologies pour le Big Data 119 / 227
  • 121. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Driver Exemple : Occurrences de mots (1) I Le prototype de notre fonction main() : public static void main(String[] args) throws Exception On se sert de args pour récupérer les arguments de la ligne de commande. Plusieurs fonctions Hadoop appelées au sein du main sont susceptibles de déclencher des exceptions - on l’indique donc lors de la déclaration. I Avant toute chose, on créé dans notre main un nouvel objet Configuration Hadoop : // Créé un objet de configuration Hadoop. Configuration conf=new Configuration() ; Le package à importer est : org.apache.hadoop.conf.Configuration I Avant toute chose, on créé dans notre main un nouvel objet Configuration Hadoop : I On créé ensuite un nouvel objet Hadoop Job : Job job=Job.getInstance(conf, ”Compteur de mots v1.0”) ; Le package à importer est le suivant : org.apache.hadoop.mapreduce.Job Minyar Sassi Hidri Technologies pour le Big Data 120 / 227
  • 122. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Driver Exemple : Occurrences de mots (2) I Ensuite, il faut indiquer à Hadoop - par le biais de l’objet Job nouvellement créé - quelles sont les classes Driver, Map et Reduce de notre programme Hadoop. Dans notre cas, il s’agira respectivement des classes WCount, WCountMap et WCountRe- duce du package org.mbds.hadoop.wordcount On utilise pour ce faire les fonctions suivantes : job.setJarByClass(WCount.class) ; job.setMapperClass(WCountMap.class) ; job.setReducerClass(WCountReduce.class) ; I Il faut ensuite indiquer à Hadoop quels sont les types de données que l’ont souhaite utiliser pour les couples (key,valeur) de nos opérations map et reduce. Dans le cas de notre compteur d’occurrences de mots, on souhaite utiliser des chaînes de caractères pour les clefs (nos mots) et des entiers pour nos occurrences. Remarque : On ne doit pas utiliser les types classiques Int et String Java pour désigner nos types, mais des classes qui leur correspondent et qui sont propres à Hadoop. Dans notre cas, les classes IntWritable et Text. job.setOutputKeyClass(Text.class) ; job.setOutputValueClass(IntWritable.class) ; Les packages des types en question : org.apache.hadoop.io.IntWritable et org.apache.hadoop.io.Text Il en existe beaucoup d’autres dans org.apache.hadoop.io.∗. Minyar Sassi Hidri Technologies pour le Big Data 121 / 227
  • 123. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Driver Exemple : Occurrences de mots (3) I Ensuite, on doit indiquer où se situent nos données d’entrée et de sortie dans HDFS. On utilise pour ce faire les classes Hadoop FileInputFormat et FileOutputFormat. I Ces classes sont implémentées suivant un design pattern Singleton - il n’est pas nécessaire de les instancier dans le cas qui nous intéresse (dans des cas plus complexe, on étendra parfois la classe en question dans une nouvelle classe qui nous est propre). On procède de la manière suivante : FileInputFormat.addInputPath(job, new Path(ourArgs[0])) ; FileOutputFormat.setOutputPath(job, new Path(ourArgs[1])) ; Les packages à utiliser : - org.apache.hadoop.mapreduce.lib.input.FileInputFormat - org.apache.hadoop.mapreduce.lib.input.FileOutputFormat - org.apache.hadoop.fs.Path Minyar Sassi Hidri Technologies pour le Big Data 122 / 227
  • 124. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Driver Exemple : Occurrences de mots (4) I Enfin, il reste à lancer l’exécution de la tâche par le biais du cluster Hadoop. On procède ainsi : if(job.waitForCompletion(true)) System.exit(0) ; System.exit(-1) ; I La fonction waitForCompletion de l’objet job va exécuter la tâche et attendre la fin de son exécution. I Elle prend comme argument un booléen indiquant à Hadoop si oui ou non il doit donner des indications sur la progression de l’exécution à l’utilisateur sur la sortie standard (stdout). I Elle renvoie true en cas de succés ; ici, on terminera l’exécution du programme en renvoyant 0 si tout s’est bien passé, et -1 en cas de problème (codes de retour unix standards). Minyar Sassi Hidri Technologies pour le Big Data 123 / 227
  • 125. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Driver Exemple : Occurrences de mots (5) // Notre classe Driver (contient le main du programme Hadoop). public class WCount { // Le main du programme. public static void main(String[] args) throws Exception { // Créé un object de configuration Hadoop. Configuration conf=new Configuration() ; // Permet à Hadoop de lire ses arguments génériques, récupère les arguments restants dans ourArgs. String[] ourArgs=new GenericOptionsParser(conf,args).getRemainingArgs() ; // Obtient un nouvel objet Job : une tâche Hadoop. On // fourni la configuration Hadoop ainsi qu’une description textuelle de la tâche. Job job=Job.getInstance(conf, ”Compteur de mots v1.0”) ; // Défini les classes driver, map et reduce. job.setJarByClass(WCount.class) ; job.setMapperClass(WCountMap.class) ; job.setReducerClass(WCountReduce.class) ; // Défini types clefs/valeurs de notre programme Hadoop. job.setOutputKeyClass(Text.class) ; job.setOutputValueClass(IntWritable.class) ; // Définit les fichiers d’entrée du programme et le répertoire des résultats. // On se sert du premier et du deuxième argument restants pour permettre à // l’utilisateur de les spécifier lors de l’exécution. FileInputFormat.addInputPath(job, new Path(ourArgs[0])) ; FileOutputFormat.setOutputPath(job, new Path(ourArgs[1])) ; // On lance la tâche Hadoop. Si elle s’est effectuée correctement, on renvoie 0. Sinon, on renvoie -1. if(job.waitForCompletion(true)) System.exit(0) ; System.exit(-1) ; } } Minyar Sassi Hidri Technologies pour le Big Data 124 / 227
  • 126. MapReduce du point de vue du développeur Java Programmation Hadoop La classe Map I La classe Map va être en charge de l’opération Map de notre programme. I Elle doit étendre la classe Hadoop org.apache.hadoop.mapreduce.Mapper. I Il s’agit d’une classe générique qui se paramétrise avec quatre types : Un type keyin : le type de clé d’entrée. Un type valuein : le type de valeur d’entrée. Un type keyout : le type de clé de sortie. Un type valueout : le type de valeur de sortie. I Le type keyin est notamment utile lorsqu’on utilise des fonctionnalités plus avancées, comme la possibilité d’effectuer plusieurs opérations Map les unes à la suite des autres, auquel cas notre opération Map recevra en entrée des couples (key,value). I Dans notre cas, nous n’utiliserons pas cette possibilité ; on utilisera donc le type Java Object comme type keyin. Minyar Sassi Hidri Technologies pour le Big Data 125 / 227
  • 127. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Map Exemple : Occurrences de mots (1) Dans notre exemple, notre classe Map sera déclarée ainsi : public class WCountMap extends Mapper<Object, Text, Text, IntWritable> On utilise ici comme types : Text pour le type valuein, puisque notre valeur d’entrée à la fonction Map est une chaîne de caractères (une ligne de texte). Text pour le type keyout, puisque notre valeur de clé pour les couples (key,vakue) de la fonction Map est également une chaîne de caractères (le mot dont on compte les occur- rences). IntWritable pour le type valueout, puisque notre valeur pour les couples (key,value) de la fonction Map est un entier (le nombre d’occurrences). Ici aussi, on utilise les types Hadoop et non les types natifs Java (Int et String). Minyar Sassi Hidri Technologies pour le Big Data 126 / 227
  • 128. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Map Exemple : Occurrences de mots (2) Au sein de la classe Mapper, c’est la fonction map qui va s’occuper d’effectuer la tâche Map. C’est la seule qu’on doit absolument implémenter. Elle prend trois arguments : - La clé d’entrée keyin. La valeur d’entrée valuein (la ligne de texte dont on souhaite compter les mots). - Un Context Java qui représente un handle Hadoop et nous permettra de retourner les couples (key,value) résultant de notre opération Map. Le prototype de notre fonction map : protected void map(Object key, Text value, Context context) throws IOException, InterruptedException Comme pour la fonction main, la fonction map appellera des fonctions susceptibles de déclencher des exceptions (notamment concernant l’interruption de l’exécution Hadoop ou des problèmes d’accès HDFS) - on le précise donc dans sa déclaration. Minyar Sassi Hidri Technologies pour le Big Data 127 / 227
  • 129. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Map Exemple : Occurrences de mots (3) Au sein de la méthode map, on va donc effectuer la tâche Map de notre programme Map/Reduce. Dans le cadre de notre exemple, la fonction devra parcourir la ligne de texte fournie en entrée, et renvoyer un couple (key,value) pour chacun des mots. Ce couple devra avoir pour clé le mot en question, et pour valeur l’entier 1. Dans la fonction map, afin d’indiquer à Hadoop qu’on souhaite renvoyer un couple (key,value), on utilise la fonction write de notre objet Context. Elle peut être appelée autant de fois que nécessaire ; une fois pour chacun des couples (key,value) qu’on souhaite renvoyer. Par exemple context.write(”am”, 1). Il faut évidemment que la clé et la valeur renvoyées ainsi correspondent aux types keyout et valueout de notre classe Mapper. Minyar Sassi Hidri Technologies pour le Big Data 128 / 227
  • 130. MapReduce du point de vue du développeur Java Programmation Hadoop - Classe Map Exemple : Occurrences de mots (4) package org.mbds.hadoop.wordcount ; import org.apache.hadoop.mapreduce.Job ; import org.apache.hadoop.io.Text ; import org.apache.hadoop.io.IntWritable ; import java.util.StringTokenizer ; import org.apache.hadoop.mapreduce.Mapper ; import java.io.IOException ; // Notre classe Map. public class WCountMap extends Mapper<Object, Text, Text, IntWritable> { // IntWritable contant de valeur 1. private static final IntWritable ONE=new IntWritable(1) ; // La fonction map elle-même. protected void map(Object offset, Text value, Context context) throws IOException, InterruptedException { // Un StringTokenizer va nous permettre de parcourir chacun des mots de la ligne passée à Map. StringTokenizer tok=new StringTokenizer(value.toString(), ” ”) ; while(tok.hasMoreTokens()) { Text word=new Text(tok.nextToken()) ; // On renvoie notre couple (clef ;valeur) : le mot courant suivi de la valeur 1. context.write(word, ONE) ; } } } Minyar Sassi Hidri Technologies pour le Big Data 129 / 227