Hadoop 2 – HDFS Federation

Le dispositif HDFS Federation permet de faire cohabiter plusieurs NameNodes (NN) au sein d’un même cluster physique.

Les NN sont indépendants deux à deux : chaque NN gère un espace de nommage (namespace) qui lui est propre et les NN ne communiquent pas entre eux.

Chaque NN se voit allouer un certain nombre de blocs pour stocker les fichiers dont il a la charge. Ces blocs sont répartis sur plusieurs nœuds. Un disque peut héberger des blocs correspondant à des NN différents.

L’intérêt du concept de Federation est double :

  • Federation facilite le scaling out d’un cluster :
    • Il est facile de rajouter des nœuds pour augmenter la capacité de stockage et/ou la puissance de traitement mais, dans la version 1, toute la charge de travail repose sur un seul NN, ce qui a ses limites lorsque l’on gère des clusters de plusieurs milliers de nœuds.
    • La version 2 de Hadoop, en distribuant la charge de travail entre plusieurs NN, facilite l’avènement de clusters de grande taille ; les temps de réponse au niveau des NN peuvent être améliorés (moins de métadonnées à gérer pour chaque NN, d’où besoins en RAM et en temps CPU moindres pour chaque NN, etc.).
  • Federation permet d’isoler chaque namespace des autres, par exemple pour faire cohabiter au sein d’un même cluster physique un cluster logique de développement et un cluster logique de production.
Une Federation HDFS

Une Federation HDFS

Les notions de High Availability et de Federation sont indépendantes. Il est possible d’activer l’une ou l’autre, ou les deux. Dans ce dernier cas, il faut activer l’option Federation avant d’activer l’option High Availability.
fonctionnement globale de mapreduce

Présentation et fonctionnement de MapReduce

Une bonne compréhension de MapReduce implique la maitrise du fonctionnement de Hadoop et HDFS. Pour cela, ces deux articles sont obligatoires pour mieux appréhender la suite du cours.

Qu’est ce que MapReduce ?

MapReduce est un modèle de programmation conçu spécifiquement pour lire, traiter et écrire des volumes de données très importants. Les programmes adoptant ce modèle sont automatiquement parallélisés et exécutés sur des clusters (grappes) d’ordinateurs. MapReduce consiste en deux fonctions map() et reduce().

map” est le nom d’une fonction de haut niveau qui applique une fonction donnée à chacun des éléments d’une liste et retourne une liste. Par exemple :

(mapcar #’round ‘(1.3 2.7 3.4 4.5)) => (1 3 3 4)

reduce” est le nom d’une fonction de haut niveau qui applique une fonction donnée à tous les éléments d’une liste et retourne une liste unique. Par exemple :

(reduce #’+ ‘(1 2 3 4)) => 10

MapReduce implémente les fonctionnalités suivantes :

  • Parallélisation automatique des programmes Hadoop.
    • HDFS se charge de la répartition et de la réplication des données ;
    • Le maître divise le travail en jobs parallèles et les répartit ;
    • Le maître collecte les résultats et gère les pannes des noeuds.
  • Gestion transparente du mode distribué.
  • Tolérance aux pannes.

Tout l’intérêt de ce modèle de programmation est de simplifier la vie du développeur Hadoop, en lui masquant le fonctionnement interne de Hadoop (parallélisation , tolérance aux pannes,…etc). Ainsi, le modèle de programmation permet au développeur de ne s’intéresser qu’à la partie algorithmique. Il transmet alors son programme MapReduce développé dans un langage de programmation au framework Hadoop pour l’exécution.

Fonctionnement de MapReduce

Un programme MapReduce se compose des trois parties suivantes

  • Le driver, qui s’exécute sur une machine client, est responsable d’initialiser le job puis de le soumettre pour exécution.
  • Le mapper est responsable de lire les données stockées sur disque et les traiter.
  • Le reducer est responsable de consolider les résultats issus du mapper puis de les écrire sur disque.

Fonctionnement de HDFS

Présentation de HDFS

HDFS (Hadoop Distributed File System) est le composant de Hadoop en charge du stockage des données dans un cluster Hadoop

HDFS reprend de nombreux concepts proposés par des systèmes de fichiers classiques comme ext2 pour Linux ou FAT pour Windows. Nous retrouvons donc la notion de blocs (la plus petite unité que l’unité de stockage peut gérer), les métadonnées qui permettent de retrouver les blocs à partir d’un nom de fichier, les droits ou encore l’arborescence des répertoires.

Toutefois, HDFS se démarque d’un système de fichiers classique pour les principales raisons suivantes :

  • HDFS est optimisé pour maximiser les débits de données. La taille d’un bloc de données est ainsi de 64 Mo dans HDFS contre 512 octets à 4 Ko dans la plupart des systèmes de fichiers traditionnels, ce qui permet de réduire le seek time. ( Il est toutefois possible d’augmenter la taille d’un bloc à 128 Mo ou à 256 Mo en fonction des besoins)
  • HDFS est un système de gestion de fichiers du type Write Once Read Many (WORM) : on y écrit une fois le fichier, puis on y accède plusieurs fois..
  • HDFS fournit un système de réplication des blocs dont le nombre de réplications est configurable (3 par défaut). Pendant la phase d’écriture, chaque bloc correspondant au fichier est répliqué sur des nœuds distincts dans le cluster, ce qui contribue à en garantir la fiabilité et la disponibilité au moment de lecture de données. Si un bloc est indisponible sur un nœud, des copies de ce bloc seront disponibles sur d’autres nœuds.
  • HDFS s’appuie sur le système de fichier natif de l’OS pour présenter un système de stockage unifié reposant sur un ensemble de disques et de systèmes de fichiers hétérogènes.

Fonctionnement de HDFS

Le fonctionnement de HDFS est assuré par trois types de deamons :

1. Le NameNode (noeud maitre – master node):

Dans un cluster Hadoop, le NameNode gère l’espace de noms, l’arborescence du système de fichiers et les métadonnées des fichiers et des répertoires. Il centralise la localisation des blocs de données répartis dans le cluster.

Quand un client sollicite Hadoop pour récupérer un fichier, c’est via le Namenode que l’information est extraite. Ce Namenode va indiquer au client quels sont les Datanodes qui contiennent les blocs.

Le NameNode reçoit régulièrement un « battement de cœur » et un Blockreport de tous les DataNodes dans le cluster afin de s’assurer que les datanodes fonctionnent correctement. Un Bloclreport (ou rapport de bloc) contient une liste de tous les blocs d’un DataNode.

En cas de défailance du datanode, le NameNode choisit de nouveaux datanodes pour de nouvelles réplications de blocs de données, équilibre la charge d’utilisation des disques et gère également le trafic de communication des datanodes.

Les métadonnées sont stockées sur disque dur (fichier fsimage) et chargées dans la mémoire vive du NameNode lors du démarrage du cluster
Si vous perdez le NameNode, vous perdez HDFS!

2. Le SecondaryNameNode :

Il s’agit ici d’un abus de langage! Dans l’architecture HDFS, le nom – Secondary NameNode donne l’impression que c’est un substitut du NameNode. Hélas! Ce n’est pas le cas..

Le SecondaryNameNode effectue des tâches de maintenance pour le compte du NameNode. Plus précisément, le Secondary NameNode met à jour le fichier fsimage à interval régulier en y intégrant le contenu des edits.

Le SecondaryNameNode intervient soit :

  • lorsque le fichier edits atteint une taille prédéfinie.
  • à intervalle régulier (par exemple une fois par heure).

3. Le DataNode :

 

Fonctionnement de Hadoop

Pour bien comprendre le fonctionnement de Hadoop, nous vous invitons à lire ces deux cours introductifs sur “Big Data” et “Hadoop”:

L’écosystème Hadoop

Hadoop est principalement constitué de deux composants :

  • Le système de gestion de fichiers distribué, HDFS.
  • Le framework MapReduce (version 1 de Hadoop)/YARN (version 2 de Hadoop).

Plus concrètement l’écosystème Hadoop comprend de nombreux autres outils couvrant le stockage et la répartition des données, les traitements distribués, l’entrepôt de données, le workflow, la programmation, sans oublier la coordination de l’ensemble des composants. On parle des outils comme Hive, Pig, Hbase, Flume,…etc

L’écosystème Hadoop

L’écosystème Hadoop

Stockage et traitement de données

Hadoop a été conçu pour stocker de très gros volumes de données sur un grand nombre de machines (nœuds) équipées de disques durs banalisés, fonctionnant en parallèle.

L’addition de plusieurs nœuds au cluster Hadoop permet d’offrir un espace de stockage et une puissance de calcul pouvant traiter des volumes de données de plusieurs To ou Po.

Le système de gestion de fichiers de Hadoop, HDFS, écrit et lit les fichiers par blocs de 64 Mo par défau. Il est toutefois possible de monter à 128 Mo. Alors que sur des systèmes classiques, la taille est généralement de 4 Ko, l’intérêt de fournir des tailles plus grandes permet de réduire le temps d’accès à un bloc.

Les blocs dans HDFS

Les blocs dans HDFS

La redondance des données

Par défaut, les données chargée dans un cluster Hadoop sont stockées en trois exemplaires, sur des nœuds différents. Cette réplication des données répond en fait à deux objectifs :

  • Disponibilité des données en cas de panne, deux copies des données, stockées sur d’autres nœuds.
  • Lors de l’exécution d’un job Hadoop, chaque tâche peut être exécutée sur n’importe quel nœud, surtout s’il stocke une copie des données nécessaires à la tâche.

Gestion des pannes d’un cluster Hadoop

L’un des avantages de Hadoop réside dans le fait que si un des nœuds qui exécute une partie des traitements tombe en panne, le travail est repris automatiquement par un autre nœud, on parle d’une réaffectation des tâches par le deamon JobTracker.

De plus, Hadoop est capable de détecter l’incident, déterminer la tâche concernée (code et données) et de relancer la tâche sur un autre nœud disposant des données nécessaires à la bonne exécution de la tâche (où l’intérêt de répliquer les données ).

Installation de la distribution Cloudera de Hadoop

Deux possibilité sont disponibles pour télécharger Hadoop. La première solution consiste à utiliser la version proposée par la fondation Apache. La seconde solution consiste à utiliser les distributions fournies par des entreprises qui font du service autour d’Hadoop comme Cloudera , Hortonworks , MapR Technologies, …

Installation de la distribution Cloudera de Hadoop

1. Installation de VMware ou VirtualBox

Nous utiliserons VMware , et on considere son installation comme acquise et ne sera pas détaillée dans ce cours. (mais si vous avez un problème, n’hesitez pas à nous écrire)

2. Installation de Hadoop (distribution CDH4)

La version disponible au moment d’criture de ce cours est CDH5.

Connectez-vous sur le site de Cloudera à l’adresse : www.cloudera.com/content/support/en/downloads.html

En bas de page, recherchez Cloudera QuickStart VMs et cliquez sur le bouton Download Now!

hadoop-cloudera

Dans la page qui s’ouvre, cliquez sur le bouton Download for WMWare.

hadoop-clouderaVMs

Remplissez le formulaire, lisez et acceptez les Terms & Conditions pour commencer le téléchargement.

Décompressez le fichier téléchargé et sauvegardez le dossier cloudera-quickstart-vm-version-virtualbox dans un répertoire de votre choix.

Executer le fichier cloudera-quickstart-demo-vm.vmx. Ce dernier s’ouvre directement dans VMWare. Une machine virtuelle, intitulée cloudera-quickstart-demo-vm, apparaît à gauche de la fenêtre dans la liste des machines disponibles. (image ci-dessous).

Ouverture de Cloudera VM sur VMWare

Ouverture de Cloudera VM sur VMWare

Configurez la taille de mémoire vive à 1 024 Mo. (cloudera-quickstart-demo-vm >> Edit virtual machine setting >> Memory >> 1024 >> OK)

Configuration de la taille de la mémoire vive de Cloudera

Configuration de la taille de la mémoire vive de Cloudera

Sélectionnez la machine virtuelle cloudera-quickstart-demo-vm et cliquez sur la flèche verte intitulée Démarrer pour la lancer.

Démarrer Cloudera sur VMWare

Démarrer Cloudera sur VMWare

Une à deux minutes, le bureau de CentOS s’affiche, une fenêtre Firefox affichant un message comme ci-dessous:

Cloudera

Cloudera

Fermez Firefox et lancez le terminal

Terminal CentOS

Terminal CentOS

Tappez hadoop dans la fenêtre du Terminal pour verifier son installation :

Verification de Installation de la distribution Cloudera de Hadoop

Verification de Installation de la distribution Cloudera de Hadoop

l’installation s’est correctement déroulée!!

Pour arreter la machine virtuelle, cliquez sur Power Off

Arreter VMWare

Arreter VMWare

Et pour garder l’état de la machine virtuelle (retrouver la machine virtuelle exactement dans l’état dans lequel vous l’avez quittée), cliquez sur Suspend.

Suspendre VMWare

Suspendre VMWare

 

Les modes de fonctionnement de Hadoop

Les modes de fonctionnement de Hadoop sont en nombre de trois :

  • le mode local (local mode) ;
  • le mode pseudo-distribué (pseudo-distributed mode) ;
  • le mode totalement distribué (fully-distributed mode).

Le mode local

En mode local, Hadoop fonctionne sur une seule station de travail et les 5 daemons de Hadoop (NameNode, SecondaryNameNode, DataNode, JobTracker et TaskTracker) s’exécutent tous dans la même JVM. De plus, le système de fichier utilisé est celui du système d’exploitation et non HDFS. Le mode local mode est rarement utilisé, sauf pour tester Hadoop pour la première fois ou déboguer un programme.

Le mode pseudo-distribué

En mode pseudo-distribué, Hadoop fonctionne sur une seule station de travail, mais chacun des 5 deamons s’exécute dans sa propre JVM ainsi que le système de fichier utilisé est HDFS. Le mode pseudo-distribué est souvent utilisé par les développeurs Haddop, parce qu’il développe et teste des jobs simulant un vrai cluster Hadoop.

Le mode totalement distribué

Le mode totalement distribué correspond au fonctionnement d’un vrai cluster Hadoop, avec plusieurs stations de travail interconnectées en réseau. chacun des 5 deamons s’exécute dans sa propre JVM ainsi que le système de fichier utilisé est HDFS.

Le mode pseudo-distribué est celui utilisé dans ce cours.

 

Présentation de Hadoop

Qu’est ce qu’Hadoop ?

Hadoop est un framework 100% open source, écrit en Java et géré par la fondation Apache. Il a été conçu pour répondre aux besoins du Big Data, tant au plan technique qu’économique. Hadoop est capable de stocker et traiter de manière efficace un grand nombre de donnés, en reliant plusieurs serveurs banalisés entre eux pour travailler en parallèle.

Hadoop offre une grande flexibilité. Ses performances évoluent de manière quasi linéaire en fonction du nombre de machines constituant le cluster. Plus le nombre de nœuds est élevé moins le temps d’exécution des jobs est court!

Hadoop fonctionne sur le principe des grilles de calcul consistant à répartir l’exécution d’un traitement intensif de données sur plusieurs noeuds ou grappes de serveurs.

Java est le langage de préférence pour écrire des programme Hadoop natifs. Néanmoins, il est possible d’utiliser python, bash, ruby, perl …

hadoop

Le nom “Hadoop” était initialement celui d’un éléphant en peluche, jouet préféré du fils de Doug Cutting.

En quoi Hadoop est-il différent des anciennes techniques ?

  • Économique : Hadoop permet aux entreprises de libérer toute la valeur de leurs données en utilisant des serveurs peu onéreux.
  • Flexible : Hadoop permet de stocker de manière extensible tous types de données. Les données peuvent être non structurées et ne suivre aucun schéma structurées  (PDF, MP3, base de données, etc.) grâce à son système de fichier HTDFS « Hadoop Distributed File System ». Les utilisateurs peuvent transférer leurs données vers Hadoop sans avoir besoin de les reformater.
  • Tolère les pannes: les données sont répliquées à travers le cluster afin qu’elles soient facilement récupérables suite à une défaillance du disque, du nœud ou du bloc.
  • Etc,…

SGBD vs Hadoop

Les systèmes de gestion de bases de données (SGBD) traditionnels sont conçus pour fonctionner en mode transactionnel, ils ne sont en aucun cas capables, techniquement et/ou financièrement, de traiter de manière séquentielle des volumes de données se chiffrant au minimum en dizaines ou centaines de To.

Les distributions de Hadoop

Il existe plusieurs distributions de Hadoop, dont les plus connues sont celles de Cloudera, Hortonworks et MapR. Bien que dans le même temps, d’autres distributions Hadoop voient aussi le jour. Par exemple, il y a Pivotal HD de EMC Corporation ou IBM InfoSphere BigInSights. Avec Amazon Elastic MapReduce (EMR), Amazon offre même une solution hébergée, pré-configurée dans son cloud.

Ces distributions comprennent des produits gratuits, qui offrent les fonctionnalités de base de Hadoop, et des options ou produits payants, qui offrent des fonctionnalités avancées.

Qui utilise déjà Hadoop ?

Hadoop est utilisé par des entreprises ayant de très fortes volumétries de données à traiter. Parmi elles, on trouve notamment des géants du web comme Facebook, Twitter, LinkedIn, ou encore les géants de l’e-commerce à l’instar de eBay et Amazon.

Vous trouverez sur cette page, la liste des entreprises et institutions publiques qui utilisent Hadoop

Quels sont les domaines d’application d’Hadoop ?

Toutes les sociétés et tous les secteurs d’activités sont concernés : la vente/commerce, distribution, transports, les administrations et le secteur public, les domaines scientifiques et médicaux, la banque/assurance, les télécoms, les usines de production.

  • Dans le domaine de la gestion de clientèle (Anticipation des désabonnement)
  • Dans le domaine de la publicité (Ciblage de la clientèle)
  • Dans le domaine de la lutte contre la fraude
  • etc,…
Les modes de fonctionnement de Hadoop >>

Big Data

Introduction à Big Data

On assiste depuis quelques années à une explosion de données : essor de l’e-commerce, démocratisation de la connectivité mobile, multiplication des objets connectés… Résultat : on collecte des quantités gigantesques de données. Twitter, pour ne prendre que cet exemple, doit gérer 500 millions de nouveaux tweets quotidiennement.

Cela pose un défi de taille : il ne s’agit plus seulement de collecter et stocker ces volumes de données, il s’agit également de les traiter et les analyser en temps réel. Or, les outils classiques de gestion de données sont devenus inadaptés à leur traitement, soit pour des raisons techniques, soit pour des raisons économiques, soit pour les deux.

De ce constat est né le Big Data et aussi de nouveaux outils ont été développé pour palier aux problème de la collecte, du stockage et du traitement de gros volumes de données. Parmi eux, Hadoop.

Qu’est ce que Big Data ?

Big data fait référence à des ensembles de données qui, en raison de leurs Variété (Variety en anglais), Vitesse (Velocity en anglais) ou Volume ne peuvent pas être facilement stockées, manipulées ou analysées avec les méthodes traditionnelles, telles que les tableurs , les bases de données relationnelles ou les outils statistiques ordinaires.

  • Variété  :  La nature des données (Données structurées, semi-structurées ou non structurées)
  • Vitesse  :  La vitesse  à laquelle les données sont produites et évoluent dans le temps.
  • Volume :  Le volume  de données à collecter, stocker et traiter.

Mais d’ou viennent les données?

Nous distinguons deux types de sources de données pour les Big Data, données générées par les humains (photos, vidéos, audio, tweets,…) et d’autres, générées par les machines en communicant entre elles “M to M data”  (GPS, Satellites, Web Crawlers – robots d’indexation,… ).