Yahoo libère son Hadoop

Posté par . Modéré par Mouns.
Tags :
12
13
juin
2009
Internet
Yahoo! a annoncé la mise en ligne du code source de sa version du framework Apache Hadoop. Apache Hadoop est un logiciel open source, développé en Java, utilisé pour des applications intensives en manipulation de données sur de vastes clusters.

Hadoop réalise deux tâches essentielles:

  1. Map/Reduce : ce concept prend une application et la divise en plusieurs fragments qui peuvent chacun être exécutés séparément sur un noeud du cluster ;

  2. HDFS : il s'agit d'un système de fichier distribué qui enregistre les données à travers les noeuds du clusters tout en optimisant la bande passante



Ce code est celui utilisé par Yahoo! sur de très nombreux systèmes.

Le code source, hébergé chez GitHub, est sous license Apache 2.0.
Yahoo! n'offre aucun support pour Hadoop. Cette version contient donc tous les patchs que Yahoo! a développé en interne pour améliorer la stabilité et la performance de ses clusters. Yahoo! précise que tous ces patchs ont, bien entendu, été soumis au projet Apache : seulement ils ne sont pas tous encore inclus dans les versions officielle de Apache.

Une démonstration récente du Hadoop de Yahoo! a permis de montrer l'enregistrement de 1 PB [1 000 TB - 1 000 000 GB] en 16h25 sur un cluster de 3800 noeuds composé de Xeon 2.5GHz (duals et quad-core). Cette configuration pourrait enregistrer 1 TB [1 000 GB] en 62s !
  • # Eviv Bulgroz !

    Posté par (page perso) . Évalué à 4.

    Un projet Java de plus qui se libère, C shouette...

    Enfin, avec Hadoopi, on peut maintenant stocker et échanger 1 TB en 62s ? Ça en fait, des mp3 et des divx.

    Un petit lien pour se détendre: http://james-iry.blogspot.com/2009/05/brief-incomplete-and-m(...)
    • [^] # Re: Eviv Bulgroz !

      Posté par . Évalué à 8.

      > Un projet Java de plus qui se libère, C shouette...

      L'annonce est assez trompeuse. Hadoop est libre depuis un bon moment déjà. À l'origine hadoop est un projet de Yahoo! Ils ont décider le donner le code à la fondation Apache en 2007 IIRC.

      Ce que yahoo! vient d'annoncer, est la disponibilité de leur version de production. C'est à dire une release d'hadoop + patchs qui a passé la QA.

      Quelques autres projets de Yahoo! autour d'hadoop on aussi été donné à la fondation Apache. Pig par exemple (un SQL like qui fonctionne pour fichier plat de grosse taille). D'une manière général un ecosystem intéressant est en train de se développer au dessu d'hadoop: pig, zookeeper, hive, hbase etc.
  • # Déjà vu ?

    Posté par . Évalué à -1.

    Tiens, manipulation de données, cluster...

    L'ont ils libéré pour éviter qu'on le confonde avec un viruslogiciel au nom similaire ?
  • # Ça me rappelle quelque chose...

    Posté par (page perso) . Évalué à 9.

    Hadoop ? C'est un pare-feu pour Ooo ?
  • # framework apache ?

    Posté par (page perso) . Évalué à 1.

    Bonjour,
    En lisant cette breve, je me pose une question: mais a quoi peut bien ressembler concretement un ''framework apache'', chose dont j'ignorai l'existence ?
    Hormis le FS, c'est quoi, des tonnes de fichiers de conf ? des CGI divers et variés ? des CGI qui agissent ''de l'extérieur d'apache'' et rendent un programme plus apache-friendly ? ..
    • [^] # Re: framework apache ?

      Posté par . Évalué à 10.

      Ca n'a rien à voir avec le serveur HTTP apache. C'est un projet de la fondation Apache parmis des dizaines d'autres.

      Pour faire simple Hadoop c'est la version, open source, de Yahoo! des inventions de google :-)
      Hadoop propose un système de fichier distribué inspiré de GFS (cf http://labs.google.com/papers/gfs.html ) et une implémentation de map/reduce (cf http://labs.google.com/papers/mapreduce.html ).

      Notons que si hadoop est développé en Java, avec hadoop streaming on peut écrire le code de map/reduce dans le langage que l'on veut: http://wiki.apache.org/hadoop/C++WordCount

      Pour ceux qui sont intéressés Cloudera propose d'excellents tutoriels sur Hadoop en ligne: http://www.cloudera.com/hadoop-training
    • [^] # Re: framework apache ?

      Posté par (page perso) . Évalué à 3.

      Bonjour,

      je penses que tu fais l'amalgame entre la fondation Apache et son produit phare httpd. Apache httpd est un serveur Web, mais c'est loin d'être le seul développement de la fondation Apache.
      Il suffit de jeter un oeil ici : [http://www.apache.org/]

      Entre autres projets connus d'Apache, il y a Ant, Cocoon, CouchDB, Lucene, Jakarta, etc. etc.

      Ce framework n'a donc rien à voir avec Httpd, c'est juste un framework java orienté clusters
    • [^] # Re: framework apache ?

      Posté par (page perso) . Évalué à 1.

      Oh! D'accord, autant pour moi, c'est la 1ere phrase parlant de ''framework apache'' qui sonnait comme ''framework java'' par ex. dans ma tete.
      Merci pour vos indications, je visualise beaucoup mieux la chose avec l'analogie avec GFS & co.
  • # Hadoop

    Posté par . Évalué à 5.

    Il manque un petit lien vers http://hadoop.apache.org/ qui marche très bien même sans les patches yahoo.
  • # Oh non !

    Posté par . Évalué à 4.

    Je croyais qu’avec la censure du Conseil constitutionnel, on allait arrêter de parler d'Hadopi pendant quelque temps !

    En plus, il y a une faute de frappe…

    Hein ? lire l’article ? et pis quoi encore… →[]
  • # Pertinence de Java

    Posté par (page perso) . Évalué à -2.

    Je ne saisis pas bien l'intérêt de Java, lorsque l'on cherche la performance. Sur un cluster de 3000 noeuds, quelles performances aurait-on pu obtenir en programmant sur des langages compilés ? Combien de noeuds auraient pu être économisés pour les performances obtenues avec Java ?

    Je sais bien qu'on parle de stockage et non de calcul, mais on ne m'enlèvera pas l'idée que le choix d'utiliser Java même dans ce cas précis est plutôt un mauvais choix.
    • [^] # Re: Pertinence de Java

      Posté par . Évalué à 7.

      Tiens encore le même refrain. Ca faisait longtemps.

      Tu es en train de dire que les mecs qui gèrent les plus gros clusters en prod pour faire de l'analyse d'énorme volume de donnée sont tous des abrutis ? Et que tu sais vachement mieux que ce qui marche et ce qui marche pas malgré le fait que tu ne comprennes rien au problème ? "on parle de stockage et non de calcul" -> non non un map/reduce c'est pas calcul intensif...

      C'est tellement une hérésie de le faire en Java que c'est développé par Yahoo! pour la prod de Yahoo!. Dans les quelques utilisateurs qui font des choix à la va vite en utilisant des trucs qui rament on retrouve facebook (2PB de donnée à traiter), Microsoft, cooliris, lastfm etc. Et y'a aussi quelques mecs qui connaissent vraiment rien au domaine, http://www.cloudera.com/about , qui se sont dit que ca marchait tellement mal que ca valait le coup de monter une boite. Et toi tu as des arguments pertinents en dehors de lieu commun ?

      Hadoop, ca marche, c'est facile à déployer et ca scale. Ca joue dans la cours des plus grand puisque Yahoo! et Google se tirent la bourre sur les benchs. Tu pourrais peut être grappiller X% de perfs en utilisant un truc plus bas niveau mais ce n'est pas forcement le plus important. Tu as énormément de facteur qui influent sur le calcul, comme ton infrastructure, la taille de tes map/reduce, la redondance, la rack affinity etc. Et la facilité de déploiement et d'utilisation est aussi à prendre en compte.

      Après personne ne t'oblige à écrire tes map/reduce en Java. Via pipe et streaming tu peux utiliser ce que tu veux.
      • [^] # Re: Pertinence de Java

        Posté par (page perso) . Évalué à 1.

        Houla, je crois que j'ai commis une hérésie bien malgré moi.

        Tu es en train de dire que les mecs qui gèrent les plus gros clusters en prod pour faire de l'analyse d'énorme volume de donnée sont tous des abrutis ?

        Je ne vois pas bien où tu vois cela dans mon message précédent. J'étais simplement en recherche d'arguments pour comprendre l'intérêt de Hadoop. D'après ce que tu dis c'est utilisé par les plus gros demandeurs de stockage, donc forcément ça doit être bien.

        Hadoop, ca marche, c'est facile à déployer et ca scale.

        Ça, j'avais bien compris, mon message n'était pas pour dénigrer Hadoop. Je vois juste un exemple d'application reconnue qui tourne en Java, et j'imagine que c'est adopté parce qu'il n'y a pas autre chose. Hadoop est quand même un outil système critique, et on aurait pu s'attendre, comme d'importe quel outil système, à ce qu'il soit développé en langage compilé pour optimiser les performances. Je n'imagine pas par exemple un serveur web ou un interpréteur PHP écrit en Java.

        Tu pourrais peut être grappiller X% de perfs en utilisant un truc plus bas niveau mais ce n'est pas forcement le plus important. Tu as énormément de facteur qui influent sur le calcul, comme ton infrastructure, la taille de tes map/reduce, la redondance, la rack affinity etc.

        Bin justement, on ne connait pas la valeur du X%. Et c'est cela qui m'intéresse. Si X vaut 5 ou 200, on ne concluera pas la même chose sur l'importance de ce facteur.

        Je comprends bien l'importance des facteurs dont tu parles, mais cela n'a rien à voir avec "Java". Tous les facteurs cités influent aussi sur n'importe quelle appli non basée sur Java.

        Et la facilité de déploiement et d'utilisation est aussi à prendre en compte.

        Là encore, aucun rapport avec Java.
        • [^] # Re: Pertinence de Java

          Posté par (page perso) . Évalué à 2.

          Je n'imagine pas par exemple un serveur web ou un interpréteur PHP écrit en Java.

          Ah, ben pour Python, il y a un interpréteur écrit en Java: Jython... donc, ça devrais le faire pour du PHP.

          [modulo: perso je ne cours pas après Java]
          • [^] # Re: Pertinence de Java

            Posté par . Évalué à 2.

            Et les perfs de jython sont tout à fait honorables. Évidement ca rame par rapport à cpython pour un script tout con le startup de la JVM étant toujours couteux, par contre sur des applis résidentes...

            Idem avec Ruby. Pas mal de gens semblent déployer en prod sur du JRuby par ce que ca tourne mieux...
        • [^] # Re: Pertinence de Java

          Posté par . Évalué à 2.

          De mon point de vue, le problème de Java n'est pas la performance mais le langage lui-même.

          D'ailleurs la JVM évolue de plus en plus vers une meilleurs compatibilité avec d'autres types de langages.
          De plus, elle est de plus en plus performante.
          (Non j'ai pas de sources particulières, c'est juste le sentiment que j'ai en suivant régulièrement l'écosystème JVM :)

          En plus, à notre époque, les vraies avancées dans les langages, ce n'est plus sur la performance elle-même mais plutôt sur les capacités d'abstractions et la sureté (typage) d'utilisation (en particulier pour faire du calcul parallèle facilement).

          Un langage comme Scala qui tourne sur la JVM mais bien plus évolué et capable de passer à l'échelle sur la taille des applis en permettant de construire des abstractions sur des concepts bas niveaux est bien plus intéressant et utilisable que du C à mon avis.
        • [^] # Re: Pertinence de Java

          Posté par . Évalué à 5.

          Je n'imagine pas par exemple un serveur web

          Java Enterprise Edition ? Ça fait (entre autres) serveur web, c'est très puissant, très utilisé, et pas vraiment à la rue niveau performances.
        • [^] # Re: Pertinence de Java

          Posté par . Évalué à 4.

          J'étais simplement en recherche d'arguments pour comprendre l'intérêt de Hadoop.

          Yahoo! a développé Hadoop qui tourne actuellement sur ~100 000 cores chez eux. Ils ont du se soucier du TCO non ?

          Amazon fait du business sur Hadoop (via elastic map/reduce) et Facebook à un cluster ~1 000 machines. Même si Yahoo! s'était planté, ça ne fait en général pas très peur à ces deux là d'optimiser ou de redevelopper en interne. On peut donc en déduire que les perfs sont suffisamment bonnes. Ca changera peut être un jour.

          j'imagine que c'est adopté parce qu'il n'y a pas autre chose.

          Il y a une demande non nulle pour de tels frameworks. D'une part des grosses internet compagny qui utilisent de grosses infrastructures dédiées pour traiter des volumes énormes ou pour faire tourner un grand nombre de jobs; et de l'autre des gens qui cherchent à stocker et traiter des volumes de données important à moindre coût.
          C'est un secteur qui est de plus en plus concurrentiel et pour le môment personne ne s'est vraiment pleind des perfs d'Hadoop. Tu peux être sur qu'un challenger viendra si quelqu'un pense pouvoir fournir un meilleur tupple <performance, stabilité, facilité de déploiement, facilité d'utilisation>.

          De même Hadoop répond aux besoins des deux parties. Peut être qu'il est possible de faire mieux pour une clientèle donnée.

          Autrement Ebay utilise greenplum par exemple...

          Hadoop est quand même un outil système critique, et on aurait pu s'attendre, comme d'importe quel outil système, à ce qu'il soit développé en langage compilé pour optimiser les performances. Je n'imagine pas par exemple un serveur web ou un interpréteur PHP écrit en Java.

          Est ce que tu es sure que point critique est hadoop ? Qu'elle est la ratio de temps passé dans le noyau (IO disk, network), dans Hadoop, dans les jobs utilisateurs ?
          Combien de temps estime tu pouvoir gagner ? Sur quelles opérations ? Avec quelles conséquences sur les fonctionnalités ?

          Autre question. Est ce qu'il y a plus à gagner en configurant correctement le cluster ou en hackant le code ? Est ce que les utilisateurs sont capables de bencher leur installation pour optimiser les perfs ? Est ce qu'il existe une configuration optimale pour la prod (ie. des jobs divers sur des tailles de fichier pouvant varier d'un ordre de grandeur).

          Je n'ai pas forcement plus de réponses que toi. Mais par contre j'essaie de me poser les bonnes questions avant d'enfoncer des portes ouvertes... En pratique on peut toujours aller plus vite.

          Bin justement, on ne connait pas la valeur du X%. Et c'est cela qui m'intéresse.

          Tu ne la connaitra jamais. Il faudrait deux implémentations du même produit avec le même design, les mêmes algos, les mêmes fonctionnalités.

          Par contre tu peux profiler un cluster de prod pour voir ce qui est couteux et ce sur quoi il y a à gagner... C'est pas évident à faire non plus.

          Là encore, aucun rapport avec Java.

          Je me trompe si je dis que tu ne déploie pas souvent des applications distribuées sur des ressources hétérogènes (hard comme soft) ?
  • # Des exemples

    Posté par . Évalué à 2.

    Franchement, c'est le type de produit qui me passionne un peu. Je ne travailles pas dans le domaine des clusters, quoique j'ai eu à faire quelques tests de mise en place d'un petit cluster de calcul simple.

    Je programme en Java (J2EE, Struts, Hibernate....) et suis toujours halluciné de voir autant de foisonnement de solutions dans ce monde (et j'imagine que cela doit être vrai pour d'autres langages). Moi qui n'a pas du tout envie de réinventer la roue, ça devient super frustrant puisqu'à chaque ligne de code que j'écris, j'ai l'impression de la réinventer cette foutue roue et que dois bien y avoir un framework quelque part qui puisse m'aider à faire de mes dix lignes de codes une seule.

    Mais là, j'ai un gros problème que j'espère que certains m'aideront à résoudre : je n'arrive pas à voir l'utilité du produit, non pas qu'il ne soit pas utile, mais à part le tri distribué ou le calcul d'une moyenne, je n'ai pas trouvé d'autres exemples d'applications.

    Dans un commentaire, j'ai pu apprendre qu'Amazon, Ebay et Facebook utilisaient de telles solutions, mais ma question est : "Qu'en font-ils ?"

    Des exemples, je veux des exemples !
    • [^] # Re: Des exemples

      Posté par . Évalué à 2.

      Tu peux faire pleins de choses. En dehors de l'indexation, y'a des gens s'en servent pour faire du clustering (ex: rapprocher des articles dans google news), du machine learning, de la traduction automatique, de l'analyse/filtrage de logs, du filtrage bayesien, du calcul matriciel, de la détection de spam etc. Tu as pleins d'exemples d'utilisation là: http://wiki.apache.org/hadoop/PoweredBy

      Tu peux aussi t'amuser à calculer les décimales de pi: http://developer.yahoo.net/blogs/hadoop/2009/05/hadoop_compu(...)

      AFAIK les crawlers de google et maintenant yahoo! poussen les données sur GFS/HDFS et après tout est analysé via des jobs map/reduce.

      En général si tu as a beaucoup de données en entrée sans relation fortes (ca ne remplace pas le RDBMS), ca vaut le coup de regarder.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.