Le Touilleur ExpressLe Touilleur ExpressLe Touilleur ExpressLe Touilleur Express
  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express

Riviera Dev, Introduction à Apache Hadoop

    Home Perso Riviera Dev, Introduction à Apache Hadoop

    Riviera Dev, Introduction à Apache Hadoop

    Par Nicolas Martignole | Perso | Commentaires fermés | 21 octobre, 2011 | 0 | 1 456 affichages
         

    Emmanuel Bastien (@ebastien) travaille chez Amadeus. Apache Hadoop est un framework Map-Reduce Java, qui permet de processe de gros volumes de données. Prenez la taille des disques modernes qui sont énormes, le souci qui nous attend est bien le traitement des volumes de données. Plusieurs serveurs, plusieurs machines, finalement ne serait-il pas plus simple de faire venir l’algorithme de traitement vers la donnée, plutôt que de chercher à traiter à un seul endroit les données ? Le réseau est un goulot d’étranglement.

    Emmanuel démarre avec l’exemple d’un indexer de fréquences d’apparition des mots. Quelques lignes unix avec des pipes, finalement on peut par analogie expliquer le fonctionnement de Map et Reduce en quelques lignes.

    Une fonction de Map prend en entrée une partie des données, et en sortie retourne une collection de paires clé-valeur. La tâche Reduce va prendre en entrée toutes les valeurs pour une clé et va retourner le résultat final.

    La tâche Map doit pouvoir s’exécuter en parrallèle en étant capable de traiter de manière indépendante les données. La tâche Reduce doit agréger les données d’une seule clé. Cela permet de distribuer le traitement.

    En pratique, la distribution est est effectuée via HDFS, le file-system partagé d’Hadoop. Un fichier est découpé en bloc de taille fixe de 64Mo. HDFS est donc efficace avec des gros fichiers de données. Chaque bloc de votre fichier est alors alloué sur un data node. Le Name node sert à reconstruire l’ensemble du fichier. Mais attention, HDFS est un système distribué qui cependant ne fait pas de la haute disponibilité. En effet, ce Name Node est un SPOF (Single Point Of Failure).

    Concernant la gestion des Jobs, JobTracker et Task Tracker permettent de synchroniser les traitements.

    L’API Java d’Hadoop est en Java. Ecrire finalement pour Hadoop est simple. Vous implémentez une class avec l’interface Mapper, une autre classe avec l’interface Reduce, vous construisez un JAR et Hadoop se chargera ensuite de distribuer votre algo sur le cluster.

    Vous pouvez aussi faire du streaming avec un binaire pour la partie map, un binaire pour la partie reduce et simplement la définition des entrées et des sorties. Pratique pour tester, mais les performances sont moins bonnes que l’API native Java.

    Apache Hive est un langage pseudo-SQL pour générer des jobs Hadoop. Un autre projet, Apache Pig venu de Yahoo! Emmanuel présente ensuite un exemple en Ruby avec Cascading/JRuby. Plus verbeux que Pig, il utilise le même exemple afin de nous montrer les différents types de DSL existants.

    Pour terminer nous avons vu une démonstration avec Cloudera. Cette société propose un support et des outils professionnels pour Apache Hadoop.
    D’autres services comme Amazon Elastic MapReduce et bientôt le support d’Hadoop sur Microsoft Windows Azure. Le framework est utilisable sur Amazon WS très facilement.

    Pour tester Hadoop vous pouvez récupérer une VM sur le site de Cloudera avec l’ensemble des outils d’Hadoop. Pratique si vous voulez simplement regarder.
    Tout est sur http://www.cloudera.com

    Une présentation simple et intéressante sur Hadoop.

    Articles similaires:

    Hadoop et Elasticsearch, comment indexer vers ES Default ThumbnailIntroduction à Spring Integration Default ThumbnailConférence Riviera DEV à Sophia-Antipolis Default ThumbnailRiviera DEV, DevOps par Henri Gomez
    No tags.

    Recent Posts

    • GitHub Actions : le tueur de Jenkins ?

      Avouez-le : ce titre de blog est super racoleur. J’avais aussi pensé

      15 février, 2021
    • Comment recréer du lien social dans l’Entreprise avec des outils numériques en 2021

      Nous sommes en février 2021 pendant le 3ème confinement lié à la

      10 février, 2021
    • FizzBuzz en Java et Scala (surtout Scala)

      L’exercice FizzBuzz est un petit exercice très simple, à tester par exemple

      9 février, 2021

    Recent Tweets

    • RT  @_beauraF : Since 2:19 p.m., the entire  @doctolib  platform has been running on Rails 6.1. 🚀 Once again it feels like launching a rocket…

      9 hours ago
    • RT  @ponceto91 : Bonjour les piou-pious. Un week-end qui commence sous le signe d'une énorme faille de sécurité dans VMware rendant vulnérabl…

      9 hours ago
    •  @fsznajderman   @LunatechLabs  Bonne route Fabrice à la MNT, c’était un plaisir de discuter et de bosser avec toi

      10 hours ago
    • RT  @fsznajderman : Today, was my last day at  @LunatechLabs . My journey in this company was awesome! I will keep lot of memories of those 3.…

      10 hours ago
    •  @LostInBrittany   @FGRibreau   @aheritier  Ah ben c’est la fête... j’ai bien fait de pas balancer tous les mails. Je vais regarder demain

      24 hours ago

    Mots clés

    agile (18) ajax (11) Apple (11) architecture (6) barcamp (5) BarCampJavaParis (5) ddd (5) devoxx (33) esb (6) exo (6) flex (9) geek (5) google (11) grails (5) groovy (10) humeur (12) humour (7) independant (6) iphone (12) Java (77) javascript (7) jazoon (28) jboss (22) jboss seam (12) jsf (9) jug (16) Linux (11) mac (6) mule (5) parisjug (7) paris jug (22) pjug (6) play (8) playframework (6) portlet (5) recrutement (6) ria (8) Scala (21) scrum (44) spring (23) Startup (11) usi (21) usi2010 (9) web (16) xebia (7)

    Le Touilleur Express

    Contactez-moi : nicolas@touilleur-express.fr

    Suivez-moi sur Twitter : @nmartignole

    Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
    • A propos de l’auteur
    • A propos du Touilleur Express
    Le Touilleur Express