0% ont trouvé ce document utile (0 vote)
4 vues153 pages

Introduction au Big Data et Hadoop

Le document présente une introduction au Big Data et à la science des données, en soulignant l'importance de l'extraction d'informations à partir de grandes quantités de données. Il aborde également des technologies clés comme Hadoop et le modèle Map/Reduce, qui facilitent le calcul distribué et l'analyse de données massives. Enfin, il met en lumière les défis et les solutions associés à l'utilisation de ces technologies dans divers contextes, notamment dans les entreprises et les universités.

Transféré par

le nine
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues153 pages

Introduction au Big Data et Hadoop

Le document présente une introduction au Big Data et à la science des données, en soulignant l'importance de l'extraction d'informations à partir de grandes quantités de données. Il aborde également des technologies clés comme Hadoop et le modèle Map/Reduce, qui facilitent le calcul distribué et l'analyse de données massives. Enfin, il met en lumière les défis et les solutions associés à l'utilisation de ces technologies dans divers contextes, notamment dans les entreprises et les universités.

Transféré par

le nine
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Big Data / Data Science

SORO W. SEYDOU wongnigaseydous@[Link]

IGL 2023 - 2024


1 Introduction au Big Data
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
Introduction
1-1
7 Data science
Introduction
1-1

Data Science, il s’agit de l’extraction d’informations exploitables à partir de données


brutes. Ce champ multidisciplinaire a pour but principal d’identifier des tendances, des
motifs, des connexions et des corrélations dans les larges ensembles de données. La
science des données englobe une large variété d’outils et de techniques telles que la
programmation informatique, l’analyse prédictive, les mathématiques,
les statistiques ou l’intelligence artificielle. Désormais, la Data Science inclut aussi
les algorithmes de Machine Learning. De nos jours, presque toutes les entreprises
affirment pratiquer la Data Science sous une forme ou une autre. Cependant, les
méthodes et approches employées peuvent varier d’une organisation à l’autre. Il
devient donc très compliqué d’offrir une définition précise de la Data Science.
D’autant que de nouvelles technologies apparaissent sans cesse et transforment
continuellement ce domaine.
Technologies
1-1

Scala
Python
R
ML
SQL
NoSQL
Hadoop Map-Reduce -Spark

Java
……
SQL & NoSQL
1-1

Exposé sur les thèmes suivants :

Ex1: Présentation des concepts fondamentaux de SQL

Ex2: Présentation des principes de base de NoSQL,


y compris les différences fondamentales avec SQL.

Ex3: Les différents types de bases de données NoSQL,


et leurs cas d'utilisation.
7 Hadoop
Le calcul distribué
1-1

Désigne l'exécution d'un traitement informatique sur une multitude


de machines différentes (un cluster de machines) de manière transparente.

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 architectures,
l'implémentation différents langages.
● 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 ».
Le calcul distribué
1-1

Ces problématiques sont complexes et ont donné lieu à des années de recherche et
d'expérimentation.

On distingue historiquement deux approches/cas d'usage:

● Effectuer des calculs intensifs localement (recherche scientifique, rendu 3D, etc.) - 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.

● 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.
Conclusion
1-1

Pour l'exécution de tâches distribuées distantes via la mise à disposition de machines tout
autour du monde par des volontaires, la création du framework BOINC a apporté une
réponse efficace – de nombreux projets universitaires et scientifiques exploitant
aujourd'hui la technologie.
Cependant, de nombreuses universités et entreprises ont des besoins d'exécution locale de
tâches parallélisables sur des données massives. Les solutions qui étaient disponibles
jusqu'ici:
● 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.
● Des solutions développées en interne: investissement initial très conséquent,
nécessite des compétences et une rigueur coûteuses.
● Architecture Beowulf: un début de réponse, mais complexe à mettre en œuvre pour
beaucoup d'entreprises ou petites universités, et nécessitant là aussi un
investissement initial assez conséquent.
Le Problème
1-1

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 permettre à 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 taille variables extensibles à tout moment.
La solution: Apache Hadoop
1-1

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 map-reduce,
depuis des interfaces simples accessibles via des librairies dans des langages
multiples (Java, Python, C/C++...).
● 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.
Historique (1/2)
1-1

- 2002: Doug Cutting (directeur [Link]) 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


problè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
Map/Reduce 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 (désormais 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...
Historique (2/2)
1-1

… 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 . .
Qui utilise Hadoop
1-1
Une technologie en plein essort
1-1

● De plus en plus de données produites par des systèmes d'information de plus en


plus nombreux. Ces données doivent toutes être analysées, corrélées, etc. et
Hadoop offre une solution idéale et facile à implémenter au problème.

● Pour le public, l'informatisation au sein des villes (« smart cities ») et des


administrations se développe de plus en plus et va produire des quantités
massives de données.

… 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 ».

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.
7 Le modèle Map/Reduce
Présentation
1-1

● Pour exécuter un problème large de manière distribué, il faut pouvoir découper le


problème en plusieurs 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).
● De multiples approches existent et ont existé pour cette division d'un problème en
plusieurs « sous-tâches ».
● MapReduce est un paradigme (un modèle) visant à généraliser les approches
existantes pour produire une approche unique applicable à tous les problèmes.
● MapReduce existait déjà depuis longtemps, notamment dans les langages
fonctionnels (Lisp, Scheme), mais la présentation du paradigme sous une forme
« rigoureuse », généralisable à tous les problèmes et orientée calcul distribué est
attribuable à un whitepaper issu du département de recherche de Google publié en
2004 (« MapReduce: Simplified Data Processing on Large Clusters »).
Présentation
1-1

MapReduce définit deux opérations distinctes à effectuer sur les données d'entrée:

● La première, MAP, va transformer les données d'entrée en une série de couples


clef/valeur. Elle va regrouper les données en les associant à des clefs, choisies de
telle sorte que les couples clef/valeur aient un sens par rapport au problème à
résoudre. Par ailleurs, 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.
● La seconde, REDUCE, va appliquer un traitement à toutes les valeurs de chacune
des clefs distinctes produite par l'opération MAP. Au terme de l'opération REDUCE,
on aura un résultat pour chacune des clefs distinctes.
Ici, on attribuera à chacune des machines du cluster une des clefs uniques produites par
MAP, en lui donnant la liste des valeurs associées à la clef. Chacune des machines
effectuera alors l'opération REDUCE pour cette clef.
Présentation
1-1

On distingue donc 4 étapes distinctes dans un traitement MapReduce:

● Découper (split) les données d'entrée en plusieurs fragments.

● Mapper chacun de ces fragments pour obtenir des couples (clef ; valeur).

● Grouper (shuffle) ces couples (clef ; valeur) par clef.

● Réduire (reduce) les groupes indexés par clef en une forme finale, avec une
valeur pour chacune des clefs distinctes.

En modélisant le problème à résoudre de la sorte, on le rend parallélisable – chacune de


ces tâches à l'exception de la première seront effectuées de manière distribuée.
Présentation
1-1

Pour résoudre un problème via la méthodologie MapReduce avec Hadoop, on devra donc:

● 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 CLEF utiliser pour notre problème.

● Écrire le programme pour l'opération MAP.

● Ecrire le programme pour l'opération REDUCE.

… et Hadoop se chargera du reste (problématiques calcul distribué, groupement par clef


distincte entre MAP et REDUCE, etc.).
Exemple concret (1/8)
1-1

Imaginons qu'on nous donne un texte écrit en langue Française. On souhaite déterminer
pour un travail de recherche quels sont les mots les plus utilisés au sein de ce texte
(exemple Hadoop très répandu).

Ici, nos données d'entrée sont constituées du contenu du texte.

Première étape: déterminer une manière de découper (split) les données d'entrée pour
que chacune des machines puisse travailler sur une partie du texte.

Notre problème est ici très simple – on peut par exemple décider de découper les données
d'entrée ligne par ligne. Chacune des lignes du texte sera un fragment de nos données
d'entrée.
Exemple concret (2/8)
1-1

Nos données d'entrée (le texte):


Celui qui croyait au ciel
Celui qui n'y croyait pas
[…] (Louis Aragon, La rose et le Réséda,
Fou qui fait le délicat Fou 1943, fragment)
qui songe à ses querelles

Pour simplifier les choses, on va avant le découpage supprimer toute ponctuation et tous
les caractères accentués. On va également passer l'intégralité du texte en minuscules.
Exemple concret (3/8)
1-1

Après découpage:

celui qui croyait au ciel

celui qui ny croyait pas

fou qui fait le delicat

fou qui songe a ses querelles

… on obtient 4 fragments depuis nos données d'entrée.


Exemple concret (4/8)
1-1

On doit désormais déterminer la clef à utiliser pour notre opération MAP, et écrire le code
de l'opération MAP elle-même.

Puisqu'on s'intéresse aux occurrences des mots dans le texte, et qu'à terme on aura après
l'opération REDUCE un résultat pour chacune des clefs distinctes, la clef qui s'impose
logiquement dans notre cas est: le mot-lui même.

Quand à notre opération MAP, elle sera elle aussi très simple: on va simplement parcourir
le fragment qui nous est fourni et, pour chacun des mots, générer le couple clef/valeur:
(MOT ; 1). La valeur indique ici l’occurrence pour cette clef - puisqu'on a croisé le mot une
fois, on donne la valeur « 1 ».
Exemple concret (5/8)
1-1

Le code de notre opération MAP sera donc (ici en pseudo code):


POUR MOT dans LIGNE, FAIRE:
GENERER COUPLE (MOT; 1)

Pour chacun de nos fragments, les couples (clef; valeur) générés seront donc:

celui qui croyait au ciel (celui;1) (qui;1) (croyait;1) (au;1) (ciel;1)

celui qui ny croyait pas (celui;1) (qui;1) (ny;1) (croyait;1) (pas;1)

fou qui fait le delicat (fou;1) (qui;1) (fait;1) (le;1) (delicat;1)

fou qui songe a ses querelles (fou;1) (qui;1) (songe;1) (a;1) (ses;1)
(querelles;1)
Exemple concret (6/8)
1-1

Une fois notre opération MAP effectuée (de manière distribuée), Hadoop groupera
(shuffle) tous les couples par clef commune.

Cette opération est effectuée automatiquement par Hadoop. Elle est, là aussi, effectuée de
manière distribuée en utilisant un algorithme de tri distribué, de manière récursive. Après
son exécution, on obtiendra les 15 groupes suivants:
Exemple concret (7/8)
1-1

Il nous reste à créer notre opération REDUCE, qui sera appelée pour chacun des
groupes/clef distincte.
Dans notre cas, elle va simplement consister à additionner toutes les valeurs liées à la clef
spécifiée:
Exemple concret (8/8)
1-1
Exemple concret - conclusion
1-1
Schéma général
1-1
Conclusion
1-1
7 HDFS
Présentation
1-1
Présentation
1-1
Présentation
1-1
Architecture
1-1
Ecriture d’un fichier
1-1
Ecriture d’un fichier
1-1
Lecture d’un fichier
1-1
Lecture d’un fichier
1-1
La commande hadoop fs
1-1
Remarques
1-1
Inconvénients
1-1
Alternatives
1-1
7 L’architecture Hadoop
Présentation
1-1
Présentation - << MRV1 >>
1-1
Présentation - << MRV1 >>
1-1
Présentation - << MRV1 >>
1-1
<< MRV1 >> - Le JobTracker
1-1
<< MRV1 >> - Le JobTracker
1-1
<< MRV1 >> - Le JobTracker
1-1
<< MRV1 >> - Le JobTracker
1-1
<< MRV1 >> - Le TaskTracker
1-1
<< MRV1 >> - Le TaskTracker
1-1
<< MRV1 >> - Remarques
1-1
<< MRV1 >> - Remarques
1-1
Présentation - Yarn
1-1
Yarn – Vue générale
1-1
Yarn – ResourceManager
1-1
Yarn – NodeManager
1-1
Yarn – Soumission d’un programme
1-1
Yarn – Soumission d’un programme
1-1
Yarn – Soumission d’un programme
1-1
Yarn – Remarques
1-1
7 Utilisation Hadoop
Interfaces utilisateur
1-1
Remarques
1-1
Remarques
1-1
Programmation Hadoop
1-1
Programmation Hadoop – Classe driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Driver
1-1
Programmation Hadoop – Classe Map
1-1
Programmation Hadoop – Classe Map
1-1
Programmation Hadoop – Classe Map
1-1
Programmation Hadoop – Classe Map
1-1
Programmation Hadoop – Classe Map
1-1
Programmation Hadoop – Classe Map
1-1
Programmation Hadoop – Classe REDUCE
1-1
Programmation Hadoop – Classe REDUCE
1-1
Programmation Hadoop – Classe REDUCE
1-1
Programmation Hadoop – Classe REDUCE
1-1
Programmation Hadoop – Classe REDUCE
1-1
Programmation Hadoop – Classe REDUCE
1-1
Remarques
1-1
Compilation
1-1
Exécution
1-1
Remarques
1-1
Autres langages: streaming
1-1
Streaming- Map
1-1
Streaming- REDUCE
1-1
Exemple (Python)
1-1
Exemple (Python)
1-1
Exemple (Python)
1-1
Exemple (Python)
1-1
Exemple (Python)
1-1
Exemple (Python)
1-1
Exécution
1-1

Vous aimerez peut-être aussi