Hadoop
LA STACK DE RÉFÉRENCE
Pourquoi
 Nous avons vu la différence entre les deux possibilités de scaling pour
traiter un gros volume de données
 Hadoop a été créé pour traiter un gros volume de données de manière
distribuée
 Doug Cutting travaille chez Google après être passé chez les meilleurs
(Excite, Apple, Xerox, …)
 Il a créé le projet de moteur de recherche Lucene (porté par Apache) (nous
en reparlerons)
 Le premier vrai projet Hadoop est né chez Yahoo (10 000 cœurs !, x10
aujourd’hui)
 Utilisé par Facebook avec 30 Po de données
2
Les pilliers
 Architecturaux :
 Le stockage : HDFS
 La gestion des nœuds et des tâches : YARN
 Le stockage d’objets : Ozone
 Le Traitement : Map Reduce
 Plusieurs distributions plus ou moins open source
 Hortonworks
 Cloudera
 MapR
3
4
HDFS
 Système de stockage de fichiers (Filesystem)
 La manière dont une machine stocke ses fichiers
 Par exemple FAT32 et NTFS pour Windows, ext2, ext3 pour Linux.
 Il en existe un grand nombre en fonction des usages ou des constructeurs de
machines
 Il est :
 Distribué, c’est à dire réparti sur plusieurs machines
 Extensible : on peut l‘étendre à volonté en rajoutant des machines
 Portable : il n’est pas liée à un système d’exploitation
5
Principes
 Stocke de très gros volumes
 Composés de gros fichiers
 Taille mini 64 Mo, à comparer aux 1ko de nos Pc’s
 Il abstrait l’architecture physique de stockage
 Vu par l’utilisateur comme un disque dur unique
6
Architecture
 Deux composants principaux
 Le NameNode, qui sait ou sont rangés les fichiers et qui est unique
 Les DataNode, qui stockent des morceaux de fichiers et qui peuvent les
restituer
7
Namenode
 Deux composants principaux
 Le NameNode, qui sait ou sont rangés les fichiers
 Semble à la FAT (File allocation Table) d’un disque dur
 Il gère l’espace de noms
 Il centralise la répartition des blocs de données dans le cluster
 Il est unique
 SPOF (Single Point Of Failure)
 On peut définir un NameNode secondaire, en cas de panne
8
DataNode
 Stocke et restitue les blocs de données
 En Lecture :
 Le Namenode est interrogé pour localiser les blocs de données
 Pour chaque bloc, il dit quel DataNode est le plus apte (bande passante) à
fournir la réponse
 Réplication
 Permet d’assurer la haute disponibilité
 Périodiquement, les dataNodes indique quels blocs ils détiennent au
NameNode
 Si celui-ci estime que le donnée n’est pas présente dans assez de DataNode, il
met en route une réplication (par défaut trois réplications)
 Mécanisme qui ressemble (de loin) au RAID
9
10
11
12
Inconvénients
 Le NameNode est unique
 Il peut constituer un goulot d’étranglement si l’on accède à beaucoup de petits
fichiers (Hadoop n’est pas fait pour cela, il y a d’autres outils)
 Peut se contourner à l’aide des espaces de noms (NameSpace) qui peuvent être
servis par des NameNode différents
 C’est un SPOF (Single Point Of Failure), même si un basculement manuel vers
une copie est possible
13
YARN (Yet Another Resource Negotiator)
 Une trousse à outils
 Pour gérer les ressources du cluster
 Pour planifier (Scheduling) des tâches (Jobs)
 Est devenu un système d’exploitation distribué
 Supprime la forte dépendance entre HDFS et MapReduce
 On peut dissocier le stockage de l’exploitation des données
 Permet par exemple :
 Des applications interactives
 Le traitement de flux de données
14
YARN
 Resource Manager
 Gestionnaire de ressource global
 Accepte les tâches
 Les planifie
 Leur alloue des ressources
 Node Manager
 Surveille l’état des ressources et transmet au ResourceManager
 Containers de ressources
 Assigne les ressources allouées par le Node Manage à une application
 Autorise les applications opportunistes : elle se lancent quand des
ressources sont disponibles
15
Ozone
 Stockage objet pour HDFS
 Permet de gérer un très grand nombre de petits fichiers
 Outrepasse une limitation classique de HDFS
 Permet de gérer des milliers de nœuds
 Base consistante
 Modèle RAFT (Reliable, Replicated, Redundant and Fault-Tolerant)
 Fiable
 Répliqué
 Redondant
 Tolérant à la panne
 Tests sur https://www.katacoda.com/
16
Zookeeper
 Indispensable pour tous les outils Hadoop
 Peut être utilisé de manière indépendante de Hadoop
 Gestionnaire de configuration pour système distribués
 Haute disponibilité, services redondants
17
Map Reduce
 Un Framework (cadre) de programmation
 Et donc une nouvelle manière de penser les choses
 Une architecture maitre – esclave
 Le système découpe les données pour distribuer les tâches
 On apporte le traitement là ou sont les données, et non l’inverse
 C’est un système tolérant à la panne
 La parallèlisation est cachée à l’utilisateur, il n’a pas à la gérer
 Le processus peut être récursif
 Il travaille en mémoire
18
Map Reduce
 Découpe les tâches en deux opérations
 Map :
 On transforme chaque donnée en une autre
 Sur chaque nœud du cluster
 Reduce
 Le nœuds fond remonter leurs données vers le nœud parent
 Les données sont consolidées par le nœud parent pour fournir la (les) réponse(s)
19
Map Reduce 20
Map
 Le nœud analyse, découpe et délègue
 Associe à un couple (clef, valeur) un autre couple (clef2, valeur2)
21
Map( clef1, valeur1) -> list(clef2, valeur2)
Map (void * Document) {
int cles = 1;
foreach mot in document
Calcul(mot, cles);
}
Reduce
 Le nœud analyse, découpe et délègue
 Associe à un couple (clef, valeur) un autre couple (clef2, valeur2)
22
Reduce( clef2, list(valeur2)) -> valeur3
Reduce(int clefs, Interator values) {
int result = 0;
foreach v in values
result += v;
}
MapReduce et ses limites
 Ne peut être utilisé que par des langages de bas niveau (pas de type SQL p.ex.)
 Pas de gestion des index, donc pertes de performances (les index ont été inventés pour
cela)
 Un seul flot de données
 un jeu de donnée en sortie
 Une seule donnée en sortie
 La tolérance aux pannes et la mise à l’échelle n’optimisent pas les entrées-sorties
 Map et Reduce sont des opérations bloquantes
 i.e. tous les Map() doivent être terminés pour lancer Reduce()
23
Combiner
 On peut améliorer les choses en précalculant sur les nœuds
 P.ex. un maximum existe sur chaque nœud, il y est calculé puis envoyé à
reduce
 Cela permet de transférer moins de données
 Et de moins charger le nœud du reducer
24
Pig
 Un langage pour faire du Map Reduce
 Inspiré de Java
 Peut être aussi utilisé en Python, Javascript, Ruby ou Groovy
25
Pig : un exemple 26
input_lines = LOAD '/tmp/my-copy-of-all-pages-on-internet' AS (line:chararray);
-- Extract words from each line and put them into a pig bag
-- datatype, then flatten the bag to get one word on each
Row_words = FOREACH input_lines GENERATE FLATTEN((line)) AS word;
-- filter out any words that are just white spaces
filtered_words = FILTER words BY word MATCHES 'w+’;
-- create a group for each word
word_groups = GROUP filtered_words BY word;
-- count the entries in each group
word_count = FOREACH word_groups GENERATE (filtered_words) AS , group AS word;
-- order the records by count
ordered_word_count = ORDER word_count BY
DESC; STORE ordered_word_count INTO '/tmp/number-of-words-on-internet';
Hive
 Entrepôt de données
 Utilisateurs
 Développé par Facebook
 Utilisé par Netflix
 En place sur Amazon (un fork, c’est-à-dire Hive + des fonctionnalités ajoutées)
 Permet un requêtage par un langage proche de SQL (Hive Query Language)
 Fonctionnalité ACID
 Pas de transactions
 Indexation « faible »
 En interne, Hive traduit les requêtes
 en Graphe Orienté Acyclique (MapReduce ou Tez)
 En Jobs Spark
27
 Permet d’utiliser Hadoop avec d’autres langages que Java (p.ex. Python)
 Il s’agit d’une API vers MapReduce
 Les interfaces se font à l’aide des entrés-sorties standard Un*x (stdin,
stdout)
 Parfaitement adapté à du traitement par ligne de chaines de caractères
 La sortie de map est un couple clef-valeur séparé par une tabulation
 Hadoop trie les valeurs par clef et les passe à reduce
28
Hadoop streaming
29

10 big data hadoop

  • 1.
    Hadoop LA STACK DERÉFÉRENCE
  • 2.
    Pourquoi  Nous avonsvu la différence entre les deux possibilités de scaling pour traiter un gros volume de données  Hadoop a été créé pour traiter un gros volume de données de manière distribuée  Doug Cutting travaille chez Google après être passé chez les meilleurs (Excite, Apple, Xerox, …)  Il a créé le projet de moteur de recherche Lucene (porté par Apache) (nous en reparlerons)  Le premier vrai projet Hadoop est né chez Yahoo (10 000 cœurs !, x10 aujourd’hui)  Utilisé par Facebook avec 30 Po de données 2
  • 3.
    Les pilliers  Architecturaux:  Le stockage : HDFS  La gestion des nœuds et des tâches : YARN  Le stockage d’objets : Ozone  Le Traitement : Map Reduce  Plusieurs distributions plus ou moins open source  Hortonworks  Cloudera  MapR 3
  • 4.
  • 5.
    HDFS  Système destockage de fichiers (Filesystem)  La manière dont une machine stocke ses fichiers  Par exemple FAT32 et NTFS pour Windows, ext2, ext3 pour Linux.  Il en existe un grand nombre en fonction des usages ou des constructeurs de machines  Il est :  Distribué, c’est à dire réparti sur plusieurs machines  Extensible : on peut l‘étendre à volonté en rajoutant des machines  Portable : il n’est pas liée à un système d’exploitation 5
  • 6.
    Principes  Stocke detrès gros volumes  Composés de gros fichiers  Taille mini 64 Mo, à comparer aux 1ko de nos Pc’s  Il abstrait l’architecture physique de stockage  Vu par l’utilisateur comme un disque dur unique 6
  • 7.
    Architecture  Deux composantsprincipaux  Le NameNode, qui sait ou sont rangés les fichiers et qui est unique  Les DataNode, qui stockent des morceaux de fichiers et qui peuvent les restituer 7
  • 8.
    Namenode  Deux composantsprincipaux  Le NameNode, qui sait ou sont rangés les fichiers  Semble à la FAT (File allocation Table) d’un disque dur  Il gère l’espace de noms  Il centralise la répartition des blocs de données dans le cluster  Il est unique  SPOF (Single Point Of Failure)  On peut définir un NameNode secondaire, en cas de panne 8
  • 9.
    DataNode  Stocke etrestitue les blocs de données  En Lecture :  Le Namenode est interrogé pour localiser les blocs de données  Pour chaque bloc, il dit quel DataNode est le plus apte (bande passante) à fournir la réponse  Réplication  Permet d’assurer la haute disponibilité  Périodiquement, les dataNodes indique quels blocs ils détiennent au NameNode  Si celui-ci estime que le donnée n’est pas présente dans assez de DataNode, il met en route une réplication (par défaut trois réplications)  Mécanisme qui ressemble (de loin) au RAID 9
  • 10.
  • 11.
  • 12.
  • 13.
    Inconvénients  Le NameNodeest unique  Il peut constituer un goulot d’étranglement si l’on accède à beaucoup de petits fichiers (Hadoop n’est pas fait pour cela, il y a d’autres outils)  Peut se contourner à l’aide des espaces de noms (NameSpace) qui peuvent être servis par des NameNode différents  C’est un SPOF (Single Point Of Failure), même si un basculement manuel vers une copie est possible 13
  • 14.
    YARN (Yet AnotherResource Negotiator)  Une trousse à outils  Pour gérer les ressources du cluster  Pour planifier (Scheduling) des tâches (Jobs)  Est devenu un système d’exploitation distribué  Supprime la forte dépendance entre HDFS et MapReduce  On peut dissocier le stockage de l’exploitation des données  Permet par exemple :  Des applications interactives  Le traitement de flux de données 14
  • 15.
    YARN  Resource Manager Gestionnaire de ressource global  Accepte les tâches  Les planifie  Leur alloue des ressources  Node Manager  Surveille l’état des ressources et transmet au ResourceManager  Containers de ressources  Assigne les ressources allouées par le Node Manage à une application  Autorise les applications opportunistes : elle se lancent quand des ressources sont disponibles 15
  • 16.
    Ozone  Stockage objetpour HDFS  Permet de gérer un très grand nombre de petits fichiers  Outrepasse une limitation classique de HDFS  Permet de gérer des milliers de nœuds  Base consistante  Modèle RAFT (Reliable, Replicated, Redundant and Fault-Tolerant)  Fiable  Répliqué  Redondant  Tolérant à la panne  Tests sur https://www.katacoda.com/ 16
  • 17.
    Zookeeper  Indispensable pourtous les outils Hadoop  Peut être utilisé de manière indépendante de Hadoop  Gestionnaire de configuration pour système distribués  Haute disponibilité, services redondants 17
  • 18.
    Map Reduce  UnFramework (cadre) de programmation  Et donc une nouvelle manière de penser les choses  Une architecture maitre – esclave  Le système découpe les données pour distribuer les tâches  On apporte le traitement là ou sont les données, et non l’inverse  C’est un système tolérant à la panne  La parallèlisation est cachée à l’utilisateur, il n’a pas à la gérer  Le processus peut être récursif  Il travaille en mémoire 18
  • 19.
    Map Reduce  Découpeles tâches en deux opérations  Map :  On transforme chaque donnée en une autre  Sur chaque nœud du cluster  Reduce  Le nœuds fond remonter leurs données vers le nœud parent  Les données sont consolidées par le nœud parent pour fournir la (les) réponse(s) 19
  • 20.
  • 21.
    Map  Le nœudanalyse, découpe et délègue  Associe à un couple (clef, valeur) un autre couple (clef2, valeur2) 21 Map( clef1, valeur1) -> list(clef2, valeur2) Map (void * Document) { int cles = 1; foreach mot in document Calcul(mot, cles); }
  • 22.
    Reduce  Le nœudanalyse, découpe et délègue  Associe à un couple (clef, valeur) un autre couple (clef2, valeur2) 22 Reduce( clef2, list(valeur2)) -> valeur3 Reduce(int clefs, Interator values) { int result = 0; foreach v in values result += v; }
  • 23.
    MapReduce et seslimites  Ne peut être utilisé que par des langages de bas niveau (pas de type SQL p.ex.)  Pas de gestion des index, donc pertes de performances (les index ont été inventés pour cela)  Un seul flot de données  un jeu de donnée en sortie  Une seule donnée en sortie  La tolérance aux pannes et la mise à l’échelle n’optimisent pas les entrées-sorties  Map et Reduce sont des opérations bloquantes  i.e. tous les Map() doivent être terminés pour lancer Reduce() 23
  • 24.
    Combiner  On peutaméliorer les choses en précalculant sur les nœuds  P.ex. un maximum existe sur chaque nœud, il y est calculé puis envoyé à reduce  Cela permet de transférer moins de données  Et de moins charger le nœud du reducer 24
  • 25.
    Pig  Un langagepour faire du Map Reduce  Inspiré de Java  Peut être aussi utilisé en Python, Javascript, Ruby ou Groovy 25
  • 26.
    Pig : unexemple 26 input_lines = LOAD '/tmp/my-copy-of-all-pages-on-internet' AS (line:chararray); -- Extract words from each line and put them into a pig bag -- datatype, then flatten the bag to get one word on each Row_words = FOREACH input_lines GENERATE FLATTEN((line)) AS word; -- filter out any words that are just white spaces filtered_words = FILTER words BY word MATCHES 'w+’; -- create a group for each word word_groups = GROUP filtered_words BY word; -- count the entries in each group word_count = FOREACH word_groups GENERATE (filtered_words) AS , group AS word; -- order the records by count ordered_word_count = ORDER word_count BY DESC; STORE ordered_word_count INTO '/tmp/number-of-words-on-internet';
  • 27.
    Hive  Entrepôt dedonnées  Utilisateurs  Développé par Facebook  Utilisé par Netflix  En place sur Amazon (un fork, c’est-à-dire Hive + des fonctionnalités ajoutées)  Permet un requêtage par un langage proche de SQL (Hive Query Language)  Fonctionnalité ACID  Pas de transactions  Indexation « faible »  En interne, Hive traduit les requêtes  en Graphe Orienté Acyclique (MapReduce ou Tez)  En Jobs Spark 27
  • 28.
     Permet d’utiliserHadoop avec d’autres langages que Java (p.ex. Python)  Il s’agit d’une API vers MapReduce  Les interfaces se font à l’aide des entrés-sorties standard Un*x (stdin, stdout)  Parfaitement adapté à du traitement par ligne de chaines de caractères  La sortie de map est un couple clef-valeur séparé par une tabulation  Hadoop trie les valeurs par clef et les passe à reduce 28 Hadoop streaming
  • 29.