Big Data

4 024 vues

Publié le

Cours donné par Dr. Minyar Sassi Hidri

Publié dans : Données & analyses
0 commentaire
10 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
4 024
Sur SlideShare
0
Issues des intégrations
0
Intégrations
35
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
10
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Big Data

  1. 1. Big Data par Minyar Sassi Hidri Département Technologies de l’Information et de la Communication ´Ecole Nationale d’Ingénieurs de Tunis Novembre 2015 Minyar Sassi Hidri Big Data 1 / 238
  2. 2. Plan 1 Chapitre 1 : Introduction au Big Data 2 Chapitre 2 : Hadoop, MapReduce et le Big Data 3 Chapitre 3 : Big Data et NoSQL 4 Cas pratiques Minyar Sassi Hidri Big Data 2 / 238
  3. 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 Chiffres clés et 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 Big Data 3 / 238
  4. 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 Chiffres clés et 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 Big Data 4 / 238
  5. 5. 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 Données appelées Big Data ou Données Massives Minyar Sassi Hidri Big Data 5 / 238
  6. 6. Big Data : Faits, Intérêts, Sources et Challenges Big Data : Intérêts Big Data : Intérêts Minyar Sassi Hidri Big Data 6 / 238
  7. 7. 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 Big Data 7 / 238
  8. 8. 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... I 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 Big Data 8 / 238
  9. 9. 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 Big Data 9 / 238
  10. 10. 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 Chiffres clés et 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 Big Data 10 / 238
  11. 11. 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 Big Data 11 / 238
  12. 12. 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. En mixant intégration de stockage, analyse prédictive et appli- cations, 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 Big Data 12 / 238
  13. 13. 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 Big Data 13 / 238
  14. 14. 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 conç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 Big Data 14 / 238
  15. 15. 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 Big Data 15 / 238
  16. 16. 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 Chiffres clés et 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 Big Data 16 / 238
  17. 17. 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 : 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 Big Data 17 / 238
  18. 18. Problématique et termes clés Problématique et termes clés (2) I Vous êtes confrontés a une problématique de gestion de données cor- respondant a 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 a collecter, stocker puis analyser les données d’une faç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 Big Data 18 / 238
  19. 19. 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 Big Data 19 / 238
  20. 20. 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 Big Data 20 / 238
  21. 21. 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 Big Data 21 / 238
  22. 22. 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 Big Data 22 / 238
  23. 23. 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 Big Data 23 / 238
  24. 24. Problématique et termes clés Big Data : Le 4è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 Big Data 24 / 238
  25. 25. Problématique et termes clés Big Data : Le 5è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 Big Data 25 / 238
  26. 26. Chiffres clés et 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 Chiffres clés et 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 Big Data 26 / 238
  27. 27. Chiffres clés et forces majeurs Chiffres clés Des chiffres importants qui s’ajoutent au nouveaux concepts et notions soulevées par le Big Data : 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 Facebook 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 ; Fin 2011, 20 foyers moyens on généré plus de trafic que la totalité des utilisateurs Internet en 2008 ; On estime que des données de mauvaise qualité coûtent plus de 600 milliard de dollars par année aux entreprises américaines. Minyar Sassi Hidri Big Data 27 / 238
  28. 28. Chiffres clés et 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 avan- cé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 Big Data 28 / 238
  29. 29. Chiffres clés et 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 Big Data 29 / 238
  30. 30. Chiffres clés et 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 Big Data 30 / 238
  31. 31. Chiffres clés et 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 Franç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 faç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 Big Data 31 / 238
  32. 32. Chiffres clés et 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 conç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 Big Data 32 / 238
  33. 33. 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 Chiffres clés et 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 Big Data 33 / 238
  34. 34. 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 Big Data 34 / 238
  35. 35. 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 Big Data 35 / 238
  36. 36. 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 Chiffres clés et 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 Big Data 36 / 238
  37. 37. 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 Big Data 37 / 238
  38. 38. 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 Chiffres clés et 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 Big Data 38 / 238
  39. 39. 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 Big Data 39 / 238
  40. 40. 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 Big Data 40 / 238
  41. 41. 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 Big Data 41 / 238
  42. 42. 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 Chiffres clés et 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 Big Data 42 / 238
  43. 43. 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 Big Data 43 / 238
  44. 44. 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 Big Data 44 / 238
  45. 45. 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 Chiffres clés et 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 Big Data 45 / 238
  46. 46. 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 Big Data 46 / 238
  47. 47. 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 façon innovante et performante. Minyar Sassi Hidri Big Data 47 / 238
  48. 48. Enjeux stratégiques Impacts du Big Data dans l’entreprise Impacts du Big Data dans l’entreprise (2) Minyar Sassi Hidri Big Data 48 / 238
  49. 49. 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 Big Data 49 / 238
  50. 50. 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 Chiffres clés et 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 Big Data 50 / 238
  51. 51. 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 / traitement sémantique Minyar Sassi Hidri Big Data 51 / 238
  52. 52. 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 4 Hadoop et MapReduce Minyar Sassi Hidri Big Data 52 / 238
  53. 53. Objectifs I Découvrir diverses solutions complémentaires liées à Hadoop ; I Apprendre à installer et utiliser Hadoop ; I Découvrir la méthodologie MapReduce ; I Apprendre a rédiger et exécuter des programmes MapReduce sous Ha- doop. Minyar Sassi Hidri Big Data 53 / 238
  54. 54. 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 4 Hadoop et MapReduce Architecture fonctionnelle MapReduce du point de vue du développeur Java : Les entrées / Sorties Programmation MapReduce Hadoop Création d’un projet Java Wordcount sous Eclipse Hadoop Streaming Minyar Sassi Hidri Big Data 54 / 238
  55. 55. Hadoop Problématiques du calcul distribué Problématiques du calcul distribué (1) I Désigne l’exécution d’un traitement informatique sur une multitude 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 architec- tures ; 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 Big Data 55 / 238
  56. 56. 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 : 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 ; Exploiter la démocratisation de l’informatique moderne et la bonne vo- lonté 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 Big Data 56 / 238
  57. 57. 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 : Des super calculateurs classiques comme Blue Gene : très onéreux, sou- vent 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 debut de réponse, mais complexe à mettre en œuvre pour beaucoup d’entreprises ou petites universités, et nécessitant aussi un investissement initial assez conséquent. Minyar Sassi Hidri Big Data 57 / 238
  58. 58. 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 Big Data 58 / 238
  59. 59. 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 Big Data 59 / 238
  60. 60. 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 Big Data 60 / 238
  61. 61. Hadoop La solution : Apache Hadoop Qui utilise Hadoop ? ...et des centaines d’entreprises et universités à travers le monde. Minyar Sassi Hidri Big Data 61 / 238
  62. 62. 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 Big Data 62 / 238
  63. 63. Hadoop L’écosystème Hodoop Hadoop : Système d’exploitation de la donnée Vue d’ensemble I HDFS : Système de fichiers distribué. I MapReduce : Framework de traitement pa- rallélisé. I Ambari Destiné à la supervision et à l’administration de clusters Hadoop ; Outil Web qui propose un tableau de bord (vi- sualisation de l’état d’un cluster - état des ser- vices, configuration, supervision, exécution des jobs, métriques.) 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 Big Data 63 / 238
  64. 64. Hadoop L’écosystème Hodoop Data Integration 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 Logstash Logstash est un simple agent orienté message qu’il est possible de configurer pour combiner différentes fonctions. 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 Big Data 64 / 238
  65. 65. 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 Big Data 65 / 238
  66. 66. 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 Big Data 66 / 238
  67. 67. 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 Big Data 67 / 238
  68. 68. Hadoop L’écosystème Hodoop Machine Learning 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 Big Data 68 / 238
  69. 69. Hadoop L’écosystème Hodoop Search Engine I SolR VSolR offre une indexation distribuée, répliquée basée sur Apache Lu- cene ; Permet la recherche full text, le highlighting, le facetting, la recherche géospatiale ; Permet l’indexation de documents riches. I Elastic Elastic offre une indexation distribué, répliqué basé sur Apache Lucene ; Permet la recherche full text, le highlighting, le facetting, la recherche géospatiale ; Permet l’indexation de documents riches. Minyar Sassi Hidri Big Data 69 / 238
  70. 70. Hadoop L’écosystème Hodoop Les distributions Pourquoi des distributions ? I Pour regrouper de façon homogène les différentes extensions ; I Pour faciliter l’installation, la diffusion, 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 Big Data 70 / 238
  71. 71. 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 4 Hadoop et MapReduce Architecture fonctionnelle MapReduce du point de vue du développeur Java : Les entrées / Sorties Programmation MapReduce Hadoop Création d’un projet Java Wordcount sous Eclipse Hadoop Streaming Minyar Sassi Hidri Big Data 71 / 238
  72. 72. 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ésultats de nos traitements, on va utiliser HDFS : Hadoop Distributed FileSystem ; I HDFS est inspiré de GFS, un système de fichiers distribué conçu par Google ; I L’implémentation de HDFS a son origine dans un whitepaper issu du département 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 Big Data 72 / 238
  73. 73. 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 Mas- ter même s’il peut changer au cours de la vie du cluster, il s’agit du NameNode (NN). Il est respon- sable de la localisation des don- né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 Big Data 73 / 238
  74. 74. 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 ; Minyar Sassi Hidri Big Data 74 / 238
  75. 75. HDFS : Hadoop Distributed File System ´Ecriture / Lecture d’un fichier ´Ecriture / Lecture d’un fichier ´Ecriture Lecture Minyar Sassi Hidri Big Data 75 / 238
  76. 76. 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 Big Data 76 / 238
  77. 77. 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 Big Data 77 / 238
  78. 78. 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 Big Data 78 / 238
  79. 79. 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 Big Data 79 / 238
  80. 80. 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 Big Data 80 / 238
  81. 81. 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 4 Hadoop et MapReduce Architecture fonctionnelle MapReduce du point de vue du développeur Java : Les entrées / Sorties Programmation MapReduce Hadoop Création d’un projet Java Wordcount sous Eclipse Hadoop Streaming Minyar Sassi Hidri Big Data 81 / 238
  82. 82. MapReduce Présentation Présentation (1) I Pour exécuter un problème large de manière distribuée, 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) ; 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++, 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) ; I Un framework pour l’analyse de 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. I SQL ou Xquery trop lourd : Jointure, Group By, etc.. ; I De nombreuses variations : Hadoop (Apache), Hadoop++ (projet qui vise à améliorer la performance de Hadoop pour les requêtes analytiques), Amazon Elastic MapReduce (Amazon EMR : est un service Web utilisant Hadoop), etc. Minyar Sassi Hidri Big Data 82 / 238
  83. 83. 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’operation 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 Big Data 83 / 238
  84. 84. 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 Big Data 84 / 238
  85. 85. 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 Big Data 85 / 238
  86. 86. 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 Big Data 86 / 238
  87. 87. 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), avec key du type Text et value du type intWritable ; 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 Big Data 87 / 238
  88. 88. 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 Big Data 88 / 238
  89. 89. 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 : Reduce (key, values) //key : Un mot ; values : Une liste de 1 r´esultat = 0 POUR CHAQUE value v IN values r´esultat+ = v ; ´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 Big Data 89 / 238
  90. 90. 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 Big Data 90 / 238
  91. 91. 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 Big Data 91 / 238
  92. 92. 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 reç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 Big Data 92 / 238
  93. 93. 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 Big Data 93 / 238
  94. 94. 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 Big Data 94 / 238
  95. 95. 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 Big Data 95 / 238
  96. 96. 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 Big Data 96 / 238
  97. 97. 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 Big Data 97 / 238
  98. 98. 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 Big Data 98 / 238
  99. 99. 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 Big Data 99 / 238
  100. 100. 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 Big Data 100 / 238
  101. 101. 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 Big Data 101 / 238
  102. 102. 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 Big Data 102 / 238
  103. 103. Hadoop et 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 4 Hadoop et MapReduce Architecture fonctionnelle MapReduce du point de vue du développeur Java : Les entrées / Sorties Programmation MapReduce Hadoop Création d’un projet Java Wordcount sous Eclipse Hadoop Streaming Minyar Sassi Hidri Big Data 103 / 238
  104. 104. Hadoop et MapReduce 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 Big Data 104 / 238
  105. 105. Hadoop et MapReduce 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 Big Data 105 / 238
  106. 106. Hadoop et MapReduce 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 Big Data 106 / 238
  107. 107. Hadoop et MapReduce 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 Big Data 107 / 238
  108. 108. Hadoop et MapReduce 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 reçue. Si aucun heartbeat n’est reç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 Big Data 108 / 238
  109. 109. Hadoop et MapReduce 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 Big Data 109 / 238
  110. 110. Hadoop et MapReduce Architecture fonctionnelle Architecture fonctionnelle (6) Le TaskTracker I Lorsque le TaskTracker reç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 Big Data 110 / 238
  111. 111. Hadoop et MapReduce 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 façon de procéder peut paraître réductrice, mais en fait : On s’aperç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 Big Data 111 / 238
  112. 112. Hadoop et MapReduce 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 Big Data 112 / 238
  113. 113. Hadoop et MapReduce 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 Big Data 113 / 238
  114. 114. Hadoop et MapReduce 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 Big Data 114 / 238
  115. 115. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 115 / 238
  116. 116. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 116 / 238
  117. 117. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 117 / 238
  118. 118. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 118 / 238
  119. 119. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 119 / 238
  120. 120. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 120 / 238
  121. 121. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 121 / 238
  122. 122. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 122 / 238
  123. 123. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 123 / 238
  124. 124. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 124 / 238
  125. 125. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 125 / 238
  126. 126. Hadoop et MapReduce Programmation MapReduce Hadoop 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 Big Data 126 / 238
  127. 127. Hadoop et MapReduce Programmation MapReduce Hadoop Programmation Hadoop La classe Reduce I La classe reduce va être en charge de l’opération Reduce de notre programme ; I Elle doit étendre la classe Hadoop org.apache.hadoop.mapreduce.Reducer. I Il s’agit là aussi d’une classe générique qui se paramétrise avec les mêmes quatre types que pour la classe Mapper : keyin, valuein, keyout et valueout ; I On rappelle que l’opération Reduce recevra en entrée une clé unique, associée à toutes les valeurs pour la clé en question ; I Dans le cas du compteur d’occurrences de mots, on recevra en entrée une valeur unique pour la clé, par exemple am, suivi de toutes les valeurs qui ont été rencontrées à la sortie de l’opération Map pour la clé am (par exemple deux fois la valeur 1 si le mot am était présent deux fois dans notre texte d’exemple). Minyar Sassi Hidri Big Data 127 / 238

×