Déployer Hadoop dans le Cloud

Après plus de 5 ans maintenant, il apparaît clairement que la meilleure façon de rentabiliser ses données dans le contexte du Big Data consiste à distribuer le stockage des données et à paralléliser les traitement dans un cluster Hadoop.  Hadoop est aujourd’hui suffisamment mature pour être considéré à grande échelle. Grâce à son intégration au SQL, il permet aux analystes de tirer profit des données de l’entreprise, qui résident encore pour la plupart, dans des systèmes opérationnels (ERP, Data Warehouse, bases de données de production, etc.). Par ailleurs, en profitant de la baisse des coûts de stockage, le HDFS, qui est son système de fichiers, est devenu aujourd’hui l’option la plus profitable en termes de performance et de coûts financiers pour la constitution d’un Data Lake.

Malheureusement, malgré sa maturité, Hadoop demande toujours un investissement important en termes de coûts financiers et de ressources humaines, ce qui n’est pas à la portée de toutes les poches.  L’économie Numérique, grâce à la baisse des coûts des infrastructures informatiques qui la caractérise a permis l’émergence d’un nouveau type de modèle économique : le Cloud Computing. Grâce au Cloud Computing, les entreprises, aussi bien petites que grandes, qui n’avaient pas le budget nécessaire pour déployer un cluster Hadoop en production, ont désormais l’opportunité de l’acquérir sur la base d’un coût variable. Dans cette chronique, nous vous expliquerons comment Hadoop est utilisé dans le Cloud pour favoriser son adoption en entreprise. Mais avant d’entrer dans le vif du sujet, il est fondamental que vous comprenez clairement ce que c’est que le Cloud.

Qu’est ce que le Cloud Computing ?

Le Cloud Computing se définit selon deux aspects : un aspect économique et un aspect technique. Économiquement parlant, le Cloud Computing est un modèle économique dans lequel une entreprise (fournisseur Cloud) offre comme produit un service Cloud via Internet. Les services Cloud sont des ressources informatiques pouvant représenter les ressources RAM, la puissance de Micro-processeur, la bande passante, un logiciel, une interface applicative, un environnement de développement, ou des clusters entiers d’ordinateurs. Ces services Cloud sont offerts sous forme de service Web, leur accès est contrôlé par une API et leur exploitation fait l’objet d’une facturation fonction du volume de ressources utilisées, par exemple le nombre de requêtes HTTPS adressées à l’API par minute, la puissance de calcul consommée par heure, la quantité de mémoire utilisée par semaine, …etc. A partir de cette configuration, les fournisseurs Cloud définissent des offres Cloud qui correspondent à des tarifications d’accès à des quantités précises de ressources dans un intervalle de temps, par exemple accès à 10 Go de disque dur à 4 euros/mois, accès à 1 ordinateur de 40Go de disque, 1 GHz Intel Dual Core de micro-processeur et 4 Go de RAM à 5 euros de l’heure. L’entreprise cliente sélectionne et s’abonne à l’offre Cloud qui correspond à ses besoins et paye à l’usage (c’est ce qu’on appelle en économie une structure de coût « Pay-As-You-Go »). Elle peut se désabonner à tout moment, payant ainsi uniquement pour les ressources qu’elle a consommées. Donc, économiquement parlant, le Cloud Computing est une forme de leasing (location) dans laquelle ce sont les ressources informatiques qui sont louées.

Techniquement parlant, le Cloud Computing c’est de la virtualisation informatique.   La virtualisation fait référence à l’abstraction physique des ressources informatiques. En d’autres termes, les ressources physiques (puissance de calcul, mémoire, disque dur, réseau) d’une machine sont allouées à ce que l’on appelle une « machine virtuelle », c’est-à-dire une application logicielle qui est l’abstraction des ressources de la machine hôte (ou machine sur laquelle est démarrée cette machine virtuelle). La machine hôte voit cette machine virtuelle comme une application à laquelle elle distribue ses ressources. Les machines virtuelles sont construites à partir de l’excédent des ressources de la machine hôte et sont gérées par un hyperviseur. L’hyperviseur gère les ordinateurs, et les serveurs d’un système informatique comme un ensemble de pools auxquels il affecte dynamiquement les ressources en fonction des besoins en ressources des requêtes des utilisateurs du système.

processus de virtualisation

La figure précédente illustre le processus de virtualisation. Un gestionnaire de virtualisation constitue un pool de ressources de toutes les machines du réseau, l’hyperviseur, installé au niveau de chaque machine, crée les machines virtuelles et les provisionnent à partir de l’excédent des ressources de la machine (dans la figure, les provisions allouées aux machines virtuelles sont représentées par la couleur identique, à celle de la machine).

Le Cloud Computing tire avantage de la virtualisation en ce sens qu’il permet d’optimiser l’usage des ressources matérielles en les partageant simultanément entre plusieurs utilisateurs, ce qui était impossible auparavant puisque chaque machine correspondait obligatoirement à une machine physique identifiée et réservée à un usage exclusif. La virtualisation s’est combinée avec l’augmentation de la bande passante et la diminution des coûts des ordinateurs, suivant la tendance confirmée sur plusieurs décennies par Gordon Moore. Le déploiement de ce nouveau modèle d’accès aux serveurs s’est produit en même temps qu’apparaissait un nouveau mode de facturation des solutions logicielles, dans lequel le paiement annuel de licences d’utilisation d’un logiciel déployé sur les machines du client a été remplacé par un paiement à l’usage d’un logiciel centralisé, opéré directement par son éditeur. C’est ainsi que le Cloud Computing tel qu’on le connait aujourd’hui est né. La virtualisation va largement au-delà de ce que nous vous avons exposé ici. Pour plus de détails, n’hésitez pas à consulter le chapitre 17 de notre ouvrage « Maîtrisez l’utilisation des technologies Hadoop – Initiation à l’écosystème Hadoop », paru chez les éditions Eyrolles.

Les offres commerciales du Cloud Computing

Les services Cloud représentent les ressources informatiques offertes. Les offres des éditeurs cloud dépendent du type de ressources offert. En fonction des types de ressources offert, on distingue 3 types d’offres commerciales Cloud (ou taxonomie cloud) :   l’IaaS, le PaaS et le SaaS.

  • L’IaaS ou Infrastructure-as-a-Service : est un niveau de service qui permet à des entreprises de louer des centres de données (data Centers), serveurs, réseaux, bref de s’équiper d’un système informatique complet sans s’inquiéter de créer et de maintenir la même infrastructure en interne ;
  • Le PaaS ou Platform-as-a-Service est un niveau de service du Cloud dans lequel le fournisseur héberge et fournit un environnement de développement intégré (EDI) qu’un développeur peut utiliser pour créer et développer des logiciels, éliminant de ce fait la nécessité pour l’entreprise d’acheter constamment des EDI ;
  • Le SaaS ou Software-as-a-Service : est un niveau de service du Cloud dans lequel le fournisseur héberge et met à disposition un logiciel ou une application, sans que l’entreprise n’ait à se soucier de l’installation et de la maintenance de cette application en interne ;

L’image ci-dessous va vous permettre de comprendre clairement la taxonomie des services offerts en Cloud Computing et les niveaux de responsabilité partagées entre le fournisseur Cloud et le client.

Figure : Taxonomie des services Cloud. Les rectangles colorés correspondent aux ressources informatiques qui sont hébergées et maintenues par le fournisseur Cloud, tandis que ceux qui sont non-colorés correspondent aux ressources informatiques que l’entreprise cliente héberge et maintient chez elle.

Mise à disposition d’Hadoop dans le Cloud

Maintenant que vous comprenez clairement la notion de Cloud, il est temps que nous entrions dans le vif du sujet. lorsqu’Hadoop est offert en Cloud, il peut être offert en deux options, soit en IaaS préconfiguré, soit en HaaS (Hadoop-as-a-Service). Dans la pratique, c’est l’option HaaS qui est la plus utilisée. Comme son nom l’indique, dans cette option, Hadoop est offert comme un service Web. Des instances de service Hadoop sont facturées par le fournisseur. Une instance de service Hadoop est la combinaison d’une instance et d’une distribution Hadoop ou des composants spécifiques d’Hadoop directement installés sur ces instances. Par exemple, le client peut acheter des instances Spark, qui correspondent à des instances de machine virtuelles avec des configurations précises sur lesquelles sont installées Spark, des instances Storm, des instances HBase, etc.  Ces instances sont automatiquement organisées en cluster complet (Nœuds de données et nœud de référence), scalable, et tolérant aux pannes par le fournisseur Cloud, ce qui vous évite de vous préoccuper de la mise en place, et de la mise en service du cluster et d’Hadoop vous-même. Ce cluster peut s’approvisionner automatiquement en ressources si la charge de travail venait à dépasser la capacité de calcul du cluster.  Le tableau suivant récapitule les caractéristiques principales de HaaS.

 

Caractéristiques Hadoop-as-a-Service
Offre CloudInstance de machine virtuelles à part + distribution/composant  Hadoop + Object Store (optionnel) en un
Ressources CloudInstances de taille fixe au départ, mais qui se provisionnent automatiquement en cas de montée en charge et ce sans arrêt du service. Redimensionnement automatique
FacturationRessources des instances utilisées par période + composant Hadoop souscrit + volume de stockage souscrit (cas où il y’a eu souscription à un Object Store) ou Volume de Débit de données transférées (cas où il n’y’a pas eu souscription à un Object Store)
Indications Recommandé si :
–     Vous voulez travailler avec un composant spécifique de l’écosystème Hadoop ;
– Vous voulez mettre en production des calculs qui demandent de la scalabilité, de la tolérance aux pannes et du redimensionnement automatique du cluster ;

 

Voilà, vous connaissez l’essentiel en ce qui concerne l’utilisation d’Hadoop sous forme de service (Hadoop-as-a-Service). Bien évidemment, vous vous doutez bien qu’il n’est pas possible de couvrir un sujet aussi vaste que le Cloud sous un aspect stratégique, économique et technique dans le même article. C’est pourquoi, si vous souhaitez aller plus loin, nous vous recommandons l’ouvrage dont nous sommes auteur : « Maîtrisez l’utilisation des technologies Hadoop – Initiation à l’écosystème Hadoop ».

Avez-vous des questions sur le déploiement d’Hadoop dans le Cloud ? Travaillez-vous sur un projet Big Data ? Donnez-nous votre avis ci-bas