Le Touilleur Express

  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express
Next Previous

Riviera Dev, Introduction à Apache Hadoop

21 octobre, 2011

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

Derniers articles

  • Monolithic software in the healthcare industry

    Un monolithe, c’est quoi ?

    Dans cet article, je vous propose de découvrir ce qu’est un monolithe,

    12 juillet, 2023
  • Vis ma vie de Staff/Principal Engineer

    Suite de l’article précédent sur le Staff Engineer. Aujourd’hui, voyons un peu

    20 juillet, 2022
  • Inari

    Devenir Staff Engineer : comment et pourquoi ?

    Après une dizaine d’années en tant que développeur, vous serez un jour

    17 juillet, 2022

Tweets @nmartignole

Mots clés

Apple (32) Architecture (13) Big Data (5) Conference (8) Devoxx (55) Dev Web (37) Doctolib (2) geekevent (1) groovy (2) Innoteria (11) Java (517) Linux (10) Non classé (15) Perso (266) Recrutement (3) Scala (30) scrum (43) Société (3) Startup (20) Web 2.0 (67)

Le Touilleur Express

Blog par Nicolas Martignole

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
  • Log In
  • My Account
  • My Profile
  • Reset Password

Le Touilleur Express