Introduction à l'écosystème hadoop
●
●
●
●
●
●
●
●

Introduction
Composants de base du système
HDFS
MapReduce
Warnings
L'écosystème
Usecases Ekino
Perspectiv...
Introduction
Le contexte
●

●

●

Croissance des volumes de données produits par les
systèmes informatiques
Réseaux sociaux, données sc...
Les usecases typiques
●

Analyse de logs

●

Business Intelligence

●

Transformation de données, ETL-style

●

Machine le...
Les limites techniques
●

●

●

●

Les disques durs stockent de plus en plus de
données, mais la vitesse d'accès reste la ...
L'approche Hadoop
●

●

●

Les données doivent être répliquées sur plusieurs
disques, afin de pallier aux crashs hardware
...
Les origines d'Hadoop
●

Au commencement, deux publications Google :
●
The Google File System (GFS) : a scalable
distribut...
Les origines d'Hadoop
●

●

●

●

Pendant ce temps là, Doug Cutting, créateur de Lucene et
Nutch, cherche un framework pou...
Composants de base du système
Les composants Hadoop
●

●

Hadoop se compose de deux systèmes : HDFS et
MapReduce
Cinq types de process vont gouverner ce...
Les composants : Namenode
●

●

●

●

Le Namenode est le process qui pilote HDFS : il sait
où sont stockées quelles donnée...
Les composants :
SecondaryNamenode
●

●

Le SecondaryNamenode prends des snapshots des
logs du Namenode à intervalles régu...
Les composants : Datanode
●

●

●

Les Datanodes sont les noeuds sur lesquels résident
les données
Ce sont eux qui traduis...
Les composants : JobTracker
●

●

●

Le JobTracker pilote l'exécution des jobs sur le
cluster
C'est lui qui assigne les tâ...
Les composants : TaskTracker
●

Les TaskTrackers exécute les jobs (Map et Reduce)

●

Ils communiquent au JobTracker l'éta...
Schéma général

Hadoop in Action, Manning
Les fichiers de configuration
●

●

●

Trois fichiers thématiques pour configurer son
cluster : core-site.xml, hdfs-site.x...
Les fichiers de configuration
Trois modes d'exécution
●

●

Mode local : un seul process, utile pour debugger,
mais très limité
Mode pseudo-distribué : ...
Démarrer un cluster
●

●

Le fichier slaves permet de définir les hosts sur
lesquels tournent les datanodes / tasktrackers...
HDFS
Principes de HDFS
●

●

●

●

L'unité de stockage de base est le Block (64Mb par
défaut)
Chaque block est répliqué sur plu...
Limites de HDFS
●

●

●

HDFS est orienté batchs : pas adapté aux
traitements online
HDFS est orienté « write once, read m...
Features
●

●

●

●

Supporte différents types de compressions : GZIP,
BZ, LZO
Filesystem manipulable via Java, C, Thrift
...
Exemples
Types de fichiers
●

●

●

On peut stocker des données sous forme de fichier
texte standard
Ou sous forme de fichier binai...
Lire dans HDFS

Hadoop : The Definitive Guide, O'Reilly
Ecrire dans HDFS

Hadoop : The Definitive Guide, O'Reilly
Map Reduce
Principes de MapReduce
●

●

●

MapReduce n'est pas un langage, c'est un paradigme
de programmation. L'idée est de découpe...
Principes de MapReduce
●

●

●

●

Le format de base des échanges entre map et reduce est
la paire clé / valeur
La sériali...
Principes de MapReduce

Hadoop : The Definitive Guide, O'Reilly
Principes de MapReduce
●

Map :
<k1, v1>  →  list(k2,v2)  

●

Reduce :
<k2, list(v2)>  →  list(k3,v3) 
Exemple : analyse de logs apache
●

Entrées / sorties de Map :
<LineNumber, LineContent>  →  list(URI,Count)  

●

Exemple...
Exemple : analyse de logs apache
●

Entrées / sorties de Map :
<URI, list(Count)>  →  list(URI,Count)  

●

Exemple d'entr...
Eléments de base dans l'API Java
●

Tout commence par la définition d'un Job, basé sur
une Configuration, et sur des param...
Eléments de base dans l'API Java
●

On donne à ce job des implémentations de Mapper,
Reducer, types des fichiers d'entrée ...
Eléments de base dans l'API Java
●

Le Mapper est très simple : on extrait l'url, et on
« émet » un compteur de 1
Eléments de base dans l'API Java
●

●

Le Reducer additionne les valeurs obtenue pour
une même clé.

Hadoop propose pour c...
Eléments de base dans l'API Java
●

Si on veut travailler sur des types non primitifs, on
peut créer un WritableComparable
Eléments de base dans l'API Java
●

On utilise la commande hadoop pour lancer et
paramétrer son job
La Streaming API
●

●

L'utilisation d'Hadoop n'est pas réservée aux jobs
Java. Tout langage lisant STDIN / STDOUT peut se...
La Streaming API : exemple en Ruby
Warnings
Savoir choisir le bon outil
●

Parfois des outils standards peuvent suffire
●

sed /grep / awk

●

SGBD

●

bashreduce
Complexité et coûts
●

●

●

Hadoop est certes une solution open source
nécessitant du hardware standard
Mais les coûts de...
L'enfer des versions
●

Le versioning d'Hadoop peut laisser perplexe

●

Améliorations récentes 
●

Sortie de la v1.0

●

...
L'enfer des versions (en image)
●

Le graphe des branches passées et en cours :

http://www.cloudera.com/blog/2012/01/an-u...
Le client java
●

●

●

L'API Java possède une ancienne version (deprecated
puis un-deprecated), et une nouvelle version
B...
L'écosystème
Un projet parmi d'autres
●

●

Hadoop est utilisable seul, mais de nombreux projets
externes facilitent son utilisation
La...
Pig
●

●

●

●

Pig est un DSL qui permet de créer des jobs MapReduce
de manière beaucoup plus simple que l'API native
Cha...
Pig : exemple de script
Pig : exemple d'UDF
Sqoop
●

Le but de Sqoop est de faciliter l'export / import de
données entre HDFS et des bases de données
externes.
HBase
●

●

●

Hbase est une base de données orientée colonnes,
selon le design du système BigTable de Google
C'est le seu...
Et les autres
●

Hive : possibilité d'exécuter du sql enrichi sur HDFS

●

Flume : framework utilisé pour alimenter HDFS

...
Usecases Ekino
Orange Business Services
●

●

●

Le but : récolter des tweets et les liens associés, les
organiser en catégories, et affi...
Workflow des données
●

●

●

Un démon est connecté à datasift, et écrit
directement les tweets dans HDFS
Des jobs Hadoop ...
Workflow des données
Perspectives
Les améliorations à venir
●

NameNode High Availability

●

Nouveau système MapRecuce : YARN

●

Meilleur mécanisme de sch...
Toujours plus de connexions
●

●

●

●

Intégration à Microsoft Azure, Excel
Toujours plus de produits intégrant Hadoop : ...
Pour en savoir plus
Les papiers Google
●

●

GFS :
http://research.google.com/archive/gfs.html
MapReduce :
http://research.google.com/archive/...
Quelques bons tutorials
●

http://developer.yahoo.com/hadoop/tutorial/

●

http://hadoop.apache.org/common/docs/current/ma...
Hadoop chez les grands noms du web
●

●

●

●

Twitter : http://www.slideshare.net/kevinweil/hadoop-pig-andtwitter-nosql-e...
Des blogs à suivre
●

http://nosql.mypopescu.com/tagged/hadoop

●

http://www.cloudera.com/blog

●

http://hortonworks.com...
?????
Hadoop and friends : introduction
Prochain SlideShare
Chargement dans…5
×

Hadoop and friends : introduction

1 137 vues

Publié le

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 137
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
80
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Hadoop and friends : introduction

  1. 1. Introduction à l'écosystème hadoop
  2. 2. ● ● ● ● ● ● ● ● Introduction Composants de base du système HDFS MapReduce Warnings L'écosystème Usecases Ekino Perspectives et liens
  3. 3. Introduction
  4. 4. Le contexte ● ● ● Croissance des volumes de données produits par les systèmes informatiques Réseaux sociaux, données scientifiques, capteurs Formes variées : texte structuré / non structuré, images
  5. 5. Les usecases typiques ● Analyse de logs ● Business Intelligence ● Transformation de données, ETL-style ● Machine learning : moteurs de recommandations, détection de patterns
  6. 6. Les limites techniques ● ● ● ● Les disques durs stockent de plus en plus de données, mais la vitesse d'accès reste la même La RAM disponible sur un serveur augmente, mais pas autant que la taille des datasets Si les données sont sur plusieurs serveurs, on augmente les capacités du système... Mais aussi les risques de panne hardware
  7. 7. L'approche Hadoop ● ● ● Les données doivent être répliquées sur plusieurs disques, afin de pallier aux crashs hardware Les données doivent être réparties de façon à minimiser les accès réseaux Si on pousse le code vers les données , et pas l'inverse, on évite des transferts massifs de données
  8. 8. Les origines d'Hadoop ● Au commencement, deux publications Google : ● The Google File System (GFS) : a scalable distributed file system for large distributed dataintensive applications ● ● MapReduce: Simplified Data Processing on Large Clusters Ces systèmes décrivent la nouvelle infrastructure Google, et restent propriétaires.
  9. 9. Les origines d'Hadoop ● ● ● ● Pendant ce temps là, Doug Cutting, créateur de Lucene et Nutch, cherche un framework pour distribuer les calculs de graphes Nutch Il implémente les principes de GFS et MapReduce dans Nutch Il est embauché par Yahoo! pour poursuivre ces développements Yahoo donne Hadoop à la fondation Apache
  10. 10. Composants de base du système
  11. 11. Les composants Hadoop ● ● Hadoop se compose de deux systèmes : HDFS et MapReduce Cinq types de process vont gouverner ces systèmes
  12. 12. Les composants : Namenode ● ● ● ● Le Namenode est le process qui pilote HDFS : il sait où sont stockées quelles données C'est lui qui orchestre les DataNodes Ce process est d'autant plus crucial que c'est aussi le SPOF du système Nécessite beaucoup de RAM
  13. 13. Les composants : SecondaryNamenode ● ● Le SecondaryNamenode prends des snapshots des logs du Namenode à intervalles réguliers Ce n'est pas un backup du NameNode : il peut aider à récupérer des données et relancer un cluster, mais ça n'a rien d'automatique
  14. 14. Les composants : Datanode ● ● ● Les Datanodes sont les noeuds sur lesquels résident les données Ce sont eux qui traduisent les blocks HDFS en fichiers sur disque En communication constante avec le Namenode
  15. 15. Les composants : JobTracker ● ● ● Le JobTracker pilote l'exécution des jobs sur le cluster C'est lui qui assigne les tâches aux TaskTrackers, et gèrent leur cycle de vie Il est également responsable de la gestion des erreurs, et de la relance des jobs
  16. 16. Les composants : TaskTracker ● Les TaskTrackers exécute les jobs (Map et Reduce) ● Ils communiquent au JobTracker l'état des jobs
  17. 17. Schéma général Hadoop in Action, Manning
  18. 18. Les fichiers de configuration ● ● ● Trois fichiers thématiques pour configurer son cluster : core-site.xml, hdfs-site.xml, mapred-site.xml Tous sont au même format : un ensemble de paires clés / valeurs Des centaines de propriétés sont configurables, une dizaine est vraiment importante
  19. 19. Les fichiers de configuration
  20. 20. Trois modes d'exécution ● ● Mode local : un seul process, utile pour debugger, mais très limité Mode pseudo-distribué : 5 JVM distinctes, une par process, sur une seule machine. Utile pour valider des développements dans des conditions de prod. ● Mode distribué : le « vrai » mode, pour la production. ● On passe de l'un à l'autre en switchant des properties
  21. 21. Démarrer un cluster ● ● Le fichier slaves permet de définir les hosts sur lesquels tournent les datanodes / tasktrackers. Des scripts permettent de lancer HDFS et MapReduce simultanément ou séparément.
  22. 22. HDFS
  23. 23. Principes de HDFS ● ● ● ● L'unité de stockage de base est le Block (64Mb par défaut) Chaque block est répliqué sur plusieurs noeuds HDFS est fault-tolerant : si un noeud tombe, les autres noeuds peuvent continuer à servir les fichiers RAID < JBOD (Just a Bunch Of Disks)
  24. 24. Limites de HDFS ● ● ● HDFS est orienté batchs : pas adapté aux traitements online HDFS est orienté « write once, read many times » : pas de modifications arbitraires au milieu d'un fichier HDFS n'est pas fait pour stocker beaucoup de petits fichiers : trop de metadata à maintenir
  25. 25. Features ● ● ● ● Supporte différents types de compressions : GZIP, BZ, LZO Filesystem manipulable via Java, C, Thrift Hadoop supporte également d'autres types de filesystems : local, FTP, S3 Le système calcule des checksums pour détecter toute corruption
  26. 26. Exemples
  27. 27. Types de fichiers ● ● ● On peut stocker des données sous forme de fichier texte standard Ou sous forme de fichier binaire optimisé pour MapReduce, compressable, splittable : le SequenceFile Existe aussi en version permettant des lookups : le MapFile 
  28. 28. Lire dans HDFS Hadoop : The Definitive Guide, O'Reilly
  29. 29. Ecrire dans HDFS Hadoop : The Definitive Guide, O'Reilly
  30. 30. Map Reduce
  31. 31. Principes de MapReduce ● ● ● MapReduce n'est pas un langage, c'est un paradigme de programmation. L'idée est de découper un traitement de données en deux phases. La première phase est le Map : c'est là que l'on va transformer les données en entrée La seconde phase est le reduce : on va y aggréger les résultats du Map
  32. 32. Principes de MapReduce ● ● ● ● Le format de base des échanges entre map et reduce est la paire clé / valeur La sérialisation des objets est gérée par Hadoop, sous forme de Writable : pas de sérialisation Java native Hadoop fournit des types primitifs sérializables, mais on peut bien sûr fournir ses propres types complexes La phase de shuffle, entre map et reduce, va partitionner les données par clé
  33. 33. Principes de MapReduce Hadoop : The Definitive Guide, O'Reilly
  34. 34. Principes de MapReduce ● Map : <k1, v1>  →  list(k2,v2)   ● Reduce : <k2, list(v2)>  →  list(k3,v3) 
  35. 35. Exemple : analyse de logs apache ● Entrées / sorties de Map : <LineNumber, LineContent>  →  list(URI,Count)   ● Exemple d'entrée : 10.51.204.2 - - [28/Mar/2012:04:05:16 +0200] "GET /supervision.jsp HTTP/1.0" 200 2 "-" "HTTP-Monitor/1.1" 10.51.204.1 - - [28/Mar/2012:04:05:16 +0200] "GET /supervision.jsp HTTP/1.0" 200 2 "-" "HTTP-Monitor/1.1" 62.39.140.248 - - [28/Mar/2012:04:05:16 +0200] "GET / HTTP/1.1" 200 118580 "-" "Mozilla/4.0 (compatible;  MSIE 6.0; Windows NT 5.0; ip-label)" ● Exemple de sortie /supervision.jsp 1 /supervision.jsp 1 / 1
  36. 36. Exemple : analyse de logs apache ● Entrées / sorties de Map : <URI, list(Count)>  →  list(URI,Count)   ● Exemple d'entrée :     /supervision.jsp 1     /supervision.jsp 1     /supervision.jsp 1     / 1     / 1 ● Exemple de sortie /supervision.jsp 3 / 2
  37. 37. Eléments de base dans l'API Java ● Tout commence par la définition d'un Job, basé sur une Configuration, et sur des paramètres utilisateurs
  38. 38. Eléments de base dans l'API Java ● On donne à ce job des implémentations de Mapper, Reducer, types des fichiers d'entrée et sortie , types des paramètres.
  39. 39. Eléments de base dans l'API Java ● Le Mapper est très simple : on extrait l'url, et on « émet » un compteur de 1
  40. 40. Eléments de base dans l'API Java ● ● Le Reducer additionne les valeurs obtenue pour une même clé. Hadoop propose pour ce type de Reducer le LongSumReducer.
  41. 41. Eléments de base dans l'API Java ● Si on veut travailler sur des types non primitifs, on peut créer un WritableComparable
  42. 42. Eléments de base dans l'API Java ● On utilise la commande hadoop pour lancer et paramétrer son job
  43. 43. La Streaming API ● ● L'utilisation d'Hadoop n'est pas réservée aux jobs Java. Tout langage lisant STDIN / STDOUT peut se brancher sur la Streaming API : PHP, Ruby, Python... On va spécifier en paramètre les scripts à exécuter lors des phases de map et reduce
  44. 44. La Streaming API : exemple en Ruby
  45. 45. Warnings
  46. 46. Savoir choisir le bon outil ● Parfois des outils standards peuvent suffire ● sed /grep / awk ● SGBD ● bashreduce
  47. 47. Complexité et coûts ● ● ● Hadoop est certes une solution open source nécessitant du hardware standard Mais les coûts de déploiement / monitoring restent élevés Et l'apprentissage est long....
  48. 48. L'enfer des versions ● Le versioning d'Hadoop peut laisser perplexe ● Améliorations récentes  ● Sortie de la v1.0 ● Packages Cloudera
  49. 49. L'enfer des versions (en image) ● Le graphe des branches passées et en cours : http://www.cloudera.com/blog/2012/01/an-update-on-apache-hadoop-1-0/
  50. 50. Le client java ● ● ● L'API Java possède une ancienne version (deprecated puis un-deprecated), et une nouvelle version Beaucoup de méthodes statiques, API pas très intuitive Réaliser des joins ou du chainage de jobs est loin d'être trivial 
  51. 51. L'écosystème
  52. 52. Un projet parmi d'autres ● ● Hadoop est utilisable seul, mais de nombreux projets externes facilitent son utilisation La plupart de ces librairies ont été développées puis opensourcées par de gros acteurs du web.
  53. 53. Pig ● ● ● ● Pig est un DSL qui permet de créer des jobs MapReduce de manière beaucoup plus simple que l'API native Chaque script Pig va être traduit en jobs MapReduce qui vont s'exécuter séquentiellement ou en parallèle. Il s'agit de faciliter l'écriture et la lisibilité des jobs, au détriment de leur rapidité d'exécution Le DSL s'articule autour de macros comme LOAD, STORE, GROUP BY, COUNT, JOIN, qui rendent simples des tâches complexes à réaliser avec le client Java, et autour d'UDF, User Defined Functions écrites en Java
  54. 54. Pig : exemple de script
  55. 55. Pig : exemple d'UDF
  56. 56. Sqoop ● Le but de Sqoop est de faciliter l'export / import de données entre HDFS et des bases de données externes.
  57. 57. HBase ● ● ● Hbase est une base de données orientée colonnes, selon le design du système BigTable de Google C'est le seul système orienté temps réel de l'écosystème Hadoop : on peut exécuter des requêtes sans passer par des jobs MapReduce C'est un système extrêmement complexe 
  58. 58. Et les autres ● Hive : possibilité d'exécuter du sql enrichi sur HDFS ● Flume : framework utilisé pour alimenter HDFS ● Cascading : framework java à base de pipelines ● ● Avro : système de sérialisation, façon Thrift / ProtocolBuffers Mahout : algorithmes de machine learning distribuables
  59. 59. Usecases Ekino
  60. 60. Orange Business Services ● ● ● Le but : récolter des tweets et les liens associés, les organiser en catégories, et afficher des visualisations permettant de naviguer par thèmes / périodes Un tweet prend peu de place, mais si on récupère le contenu des liens, l'espace disque se réduit vite D'où le choix d'Hadoop pour stocker ces tweets et faire passer des jobs calculant des statistiques
  61. 61. Workflow des données ● ● ● Un démon est connecté à datasift, et écrit directement les tweets dans HDFS Des jobs Hadoop tournent toutes les heures pour calculer les compteurs par catégorie Avec Sqoop, on exporte ces résultats vers MySQL
  62. 62. Workflow des données
  63. 63. Perspectives
  64. 64. Les améliorations à venir ● NameNode High Availability ● Nouveau système MapRecuce : YARN ● Meilleur mécanisme de scheduling
  65. 65. Toujours plus de connexions ● ● ● ● Intégration à Microsoft Azure, Excel Toujours plus de produits intégrant Hadoop : ETL, bases de données Plus de facilité pour provisionner / monitorer un cluster Les innovations à venir seront probablement issues d'acteurs commerciaux : Cloudera, Hortonworks
  66. 66. Pour en savoir plus
  67. 67. Les papiers Google ● ● GFS : http://research.google.com/archive/gfs.html MapReduce : http://research.google.com/archive/mapreduce.html
  68. 68. Quelques bons tutorials ● http://developer.yahoo.com/hadoop/tutorial/ ● http://hadoop.apache.org/common/docs/current/mapred ● http://radar.oreilly.com/2011/06/getting-started-with-had
  69. 69. Hadoop chez les grands noms du web ● ● ● ● Twitter : http://www.slideshare.net/kevinweil/hadoop-pig-andtwitter-nosql-east-2009 LinkedIn : http://engineering.linkedin.com/hadoop/userengagement-powered-apache-pig-and-hadoop Facebook : http://www.royans.net/arch/hive-facebook/ Les plans de Microsoft : http://www.slideshare.net/bradsa/apache-hadoop-for-windowsserver-and-windwos-azure
  70. 70. Des blogs à suivre ● http://nosql.mypopescu.com/tagged/hadoop ● http://www.cloudera.com/blog ● http://hortonworks.com/blog/
  71. 71. ?????

×