[TechDays2012] Hadoop Map/Reduce sur Windows et Windows Azure

Session présentée par Pierre Lagarde, Yann Schwartz et Benjamin Guinebertière. Pour moi, clairement la meilleure des sessions qu’il y avait sur Hadoop aux TechDays.

Un type de manipulation classique sur de la donnée massive issue de logs et transformée par une sortie Hadoop est de reprendre les données pour analyse dans un cube PowerPivot. En plus des développeurs Big Data, il faut donc aussi mettre en scène des analystes de données.

Ce qui caractérise Big Data n’est pas seulement les très forts volumes, mais le fait que les données ne sont pas relationnelles, et qu’elles viennent de données hétérogènes. Ceci dans le but de répondre à des questions originales et permettant de créer des économies dans des approches différentes de ce qu’on faisait avant.

Hadoop = Pig pour l’ETL + Hive pour le reporting + Sqoop (RDBMS par interop avec des bases de données SQL). Hadoop est également le HDFS qui est un système de fichiers qui supporte tout ceci. ZooKeeper gère la mise en place et la coordination de tous ces outils.

Microsoft propose une API JavaScript pour la configuration du job Map/Reduce. Le JavaScript est compilé en Java, donc très performant. Il y aura certainement bientôt une API .NET également. Dans le mécanisme de décompte des mots, il y a une première phase de Reduce qui est quand même réalisée dans chacun des nodes, de façon à ne pas envoyer “coucou,1” trois fois, mais plutôt “coucou,3”, qui prendra moins de temps à passer en Reduce pour concaténer les décomptes des mots de tous les nodes.

Le mécanisme pour créer un cluster Hadoop est encore en CTP, mais l’interface sera bientôt disponible. Pour l’instant, il vaut donc mieux ne pas perdre son temps à se créer soi-même son ensemble Hadoop.

Hadoop a pour principe de déplacer le code vers la donnée plutôt que l’inverse, afin de réduire la bande passante.

Par contre, côté utilisation des ressources, c’est assez volumineux, car le principe d’Hadoop n’est pas d’économiser, mais seulement de distribuer les données et les traitements sur de nombreuses machines. Du coup, on n’économise pas, et au contraire, on donne la possibilité à un requêteur de mobiliser énormément de ressources pour satisfaire une requête. Au final, un analyste peut se retrouver à demander le calcul de plein de requêtes sans se rendre compte que chacune mobilise une heure de traitement sur des clusters de plusieurs dizaines de machines octo-processeurs.

Il y a un plugin Hive Query pour Excel, qui permet de faire des requêtes sur un cluster Hadoop.

Une utilisation possible d’Hadoop peut aussi être de travailler sur des données importantes mais pas obligatoirement énormes, tout simplement pour pouvoir paralléliser fortement les traitements.

La difficulté est qu’un algorithme correspond à beaucoup de Map/Reduce atomiques à la suite : il faut donc avoir une surcouche permettant de décrire des traitements plus complexes. C’est le cas de Hive qui permet de faire un pseudo SQL. Il y a aussi PigLatin, qui fait un mélange entre du SQL et de l’impératif. Ca ressemble un peu au niveau des jointures à Linq. Ensuite, les compilateurs tranforment ceci en Map/Reduce mais beaucoup plus optimisé que ce qu’on ferait à la main.

Yann Schwartz a créé un outil qui permet de transformer du Linq en Map/Reduce. Très intéressant, et à creuser, surtout pour les liens que cela ouvre de manière plus globale avec les autres méthodes de calcul rapide : à partir du moment où on exprime une expression fonctionnelle de calcul, on peut plus facilement envoyer sur Hadoop, du GPGPU, etc.

Hadoop sait travailler directement avec de la donnée en mémoire.

Mahout permet de faire du machine learning sur Hadoop. Par exemple, l’architecte en chef de Google a réalisé un algorithme de quelques dizaines de lignes qui est un correcteur orthographique universel, mais qui a besoin de 10 To de données sur lesquelles apprendre.

Encore une fois, désolé pour le style un peu télégraphique de ces retours de Tech Days, mais le but est surtout de ramener des astuces et de garder la connaissance acquise de manière synthétique. Pas besoin pour ça de trop d’enrobage verbeux…

About JP Gouigoux

Jean-Philippe Gouigoux est Architecte Logiciel, MVP Connected Systems Developer. Il intervient régulièrement à l'Université de Bretagne Sud ainsi qu'à l'Agile Tour. Plus de détails sur la page "Curriculum Vitae" de ce blog.
This entry was posted in Retours and tagged , . Bookmark the permalink.

2 Responses to [TechDays2012] Hadoop Map/Reduce sur Windows et Windows Azure

  1. nad says:

    Bonjour ,
    Article très interessant. Je suis novice dans le domaine et je n’arrive pas très bien à comprendre ce concept “Hadoop a pour principe de déplacer le code vers la donnée plutôt que l’inverse, afin de réduire la bande passante” . Que signifie t-il ? y a t-il un exemple ou une application précise qui permettrait de l’illustrer?
    Merci de votre aide

    • JP Gouigoux says:

      Bonjour,
      Traditionnellement, les traitements de données se font en utilisant une machine “maître” qui contient l’algorithme, et qui va récupérer les données depuis une seconde machine contenant la base de données (voire plusieurs machines quand on utilise des systèmes pour distribuer la donnée). Afin d’éviter ce goulet d’étranglement, les approches comme Hadoop diffuse l’algorithme sur toutes les machines du cluster, l’exécution se fait partout en parallèle, et les résultats sont ensuite agrégés. Cela permet une bien meilleure performance, mais seuls certains algorithmes se prêtent bien à cette parallélisation. Vous trouverez de bonnes illustrations de ce principe en cherchant le terme “Map Reduce”.
      Cordialement,
      JP

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha Captcha Reload