BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Articles L’embarras du choix - Comment choisir la bonne plate-forme pour Big Data / Hadoop ?

L’embarras du choix - Comment choisir la bonne plate-forme pour Big Data / Hadoop ?

L’embarras du choix - Comment choisir la bonne plate-forme pour Big Data / Hadoop ?

Cette année, le big data est devenu un sujet pertinent dans beaucoup d’entreprises. Bien qu'il n’y ait pas de définition standard du terme “big data”, Hadoop est de facto un standard pour le traitement big data. Presque tous les grands éditeurs de logiciels tels que IBM, Oracle, SAP et même Microsoft utilisent Hadoop. Cependant une fois que vous avez choisi d’utiliser Hadoop, la première question à se poser est de savoir comment débuter et quel produit choisir pour vos traitements big data. Plusieurs alternatives existent pour installer une version d’Hadoop et réaliser des traitements de ces données. Cet article présente ces différentes alternatives et recommande à quel moment les utiliser.

Alternatives de plates-formes Hadoop

L’illustration suivante montre différentes alternatives de plates-formes Hadoop. Vous pouvez soit simplement installer la version open source de Apache, soit choisir l’une des différentes distributions proposées par les différents fournisseurs, ou alors vous pouvez décider d’utiliser le package Big Data d'un éditeur. Il est très important de comprendre que chaque distribution contient Apache Hadoop, et que presque chaque package Big Data contient ou utilise une distribution.

Figure 1

Dans le paragraphe qui suit, nous nous attarderons sur les différentes alternatives en commençant par Apache Hadoop.

Apache Hadoop

La version courante du projet Apache Hadoop (version 2.0) inclut ces modules :

  • Hadoop Common: les utilitaires communs qui supportent les autres modules d’Hadoop.
  • Hadoop Distributed File System (HDFS): un système de fichiers distribués qui fournit un accès haut-débit aux données de l’application.
  • Hadoop YARN: un framework pour la planification des tâches et la gestion des ressources du cluster
  • Hadoop MapReduce: un système basé sur YARN pour le traitement parallèle des gros volumes de données.

C’est très facile à installer et l’installation se fait de manière autonome sur un système local (il suffit de dézipper, puis de mettre à jour certaines variables d’environnement et de commencer à l’utiliser). Cependant, ceci permet juste de faire la mise en route et quelques tutoriels de base.

Si vous souhaitez installer Apache Hadoop pour un ou plusieurs “vrai noeud”, l’installation devient plus complexe.

Problème 1: installation d’un cluster complexe

Une installation en mode pseudo-distribué vous aide à simuler une installation multi-noeuds avec un noeud unique. A la place d’installer Hadoop sur différents serveurs, vous pouvez le simuler sur un seul serveur. Même dans ce mode, vous devez déjà faire beaucoup de configuration. Si vous voulez installer un cluster avec plusieurs noeuds, ça devient plus complexe bien sûr. Si vous n’avez pas d’administrateur expérimenté, vous aurez beaucoup de mal avec les droits des utilisateurs, droits d'accès, et autres problèmes de ce type.

Problème 2: usage de l'écosystème Hadoop

Dans Apache, tous les projets sont indépendants. C’est une bonne chose ! Cependant, l'écosystème Hadoop ne contient pas uniquement Hadoop, mais beaucoup d’autres projets Apache tels que :

  • Pig: une plate-forme pour analyser des ensembles de gros volumes de données. Cela consiste en un langage haut-niveau pour l’expression de programmes d’analyse de données, couplé à une infrastructure pour évaluer ces programmes.
  • Hive: un système d'entrepôt de données pour Hadoop qui offre un langage de requête de type SQL pour faciliter les agrégations, le requêtage ad-hoc et l’analyse de gros volumes de données stockés dans des systèmes de fichiers compatibles Hadoop.
  • Hbase: un stockage de données distribué et scalable dédié au big data avec un accès direct et une lecture/écriture temps réel.
  • Sqoop: un outil conçu pour transférer efficacement une masse de données entre Apache Hadoop et un stockage de données structuré tel que les bases de données relationnelles.
  • Flume: un service distribué, fiable et disponible pour collecter efficacement, agréger et déplacer une grande quantité de logs.
  • Zookeeper: un service centralisé pour maintenir les configurations, la nomenclature, pour fournir une synchronisation distribuée et des services groupés.
  • et d’autres encore.

Ces projets doivent être installés et intégrés manuellement dans Hadoop.

Vous devez de vous-même faire attention aux différentes versions et releases. Malheureusement, toutes les releases ne fonctionnent pas parfaitement bien ensemble. Vous devez comparer les notes de livraisons et vous débrouiller par vous-même. Hadoop lui-même propose déjà tellement de versions, de branches, de features différentes.... Il n’y a pas juste une version 1.0, 1.1, 2.0,... comme vous pouvez en trouver sur d’autres projets. Pour plus de détails sur “l’enfer des versions Hadoop”, regardez l’article Genealogy of elephants.

Problème 3: support commercial

Apache Hadoop est “juste” un projet open source. Cela a beaucoup d’avantages. Vous pouvez accéder au code source et le modifier. Plusieurs entreprises utilisent et étendent le code de base et y ajoutent des fonctionnalités. Les discussions, articles, posts de blog et les mailing listes offrent beaucoup d’informations.

Cependant, un réel problème est d’obtenir un support commercial pour un projet open source tel qu’Apache Hadoop. Habituellement, les entreprises offrent uniquement du support sur leurs produits, pas sur un projet open source (ce n’est pas un problème qui concerne seulement Hadoop, mais beaucoup de projets open source).

Quand utiliser Apache Hadoop ?

Apache Hadoop est bien pour un premier essai grâce à ses 10 min d’installation en mode autonome sur un système local. Vous pouvez tester l’exemple du WordCount (qui est l’équivalent du “hello world” pour Hadoop) et jeter un oeil à quelques lignes de MapReduce en Java.

Si vous n’avez pas l’intention d’utiliser une “vraie” distribution Hadoop (voir section suivante), Apache Hadoop est aussi le bon choix. Cependant, je me demande s’il y a une raison de ne pas utiliser une distribution Hadoop - comme elles sont valables également dans une édition gratuite, non-commerciale.

Ainsi, pour de vrais projets Hadoop, je recommande vraiment d’utiliser une distribution Hadoop au lieu de juste utiliser Apache Hadoop. Les avantages sont expliqués dans la section ci-dessous.

Les distributions Hadoop

Une distribution Hadoop résout les problèmes mentionnés dans la section précédente. Le business modèle de ces fournisseurs repose à 100% sur leurs distributions Hadoop. Ils offrent des packages, des outils et un support commercial, ce qui réduit beaucoup les efforts à mettre en oeuvre, pas seulement pour le développement mais aussi pour l'opérationnel.

Une distribution contient différents projets de l'écosystème Hadoop. Ceci assure que toutes les versions utilisées fonctionnent ensemble sans problèmes. Il y a des releases régulières avec des versions mises à jour de différents projets.

En plus du package, les fournisseurs de distribution offrent des outils graphiques pour le déploiement, l’administration et le monitoring des clusters Hadoop. De cette façon, il est beaucoup plus facile d’installer, de gérer et de surveiller les clusters. L’investissement est beaucoup réduit.

Comme mentionné, il est difficile d’obtenir du support pour le simple projet Apache Hadoop, alors que les distributeurs offrent un support commercial pour leur propre distribution Hadoop.

Les fournisseurs de distributions Hadoop

En plus de Apache Hadoop, il y a plus ou moins trois distributions Hadoop qui en ce moment se distinguent, trois chevaux de courses, à savoir HortonWorks, Cloudera 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.

Beaucoup d’autres éditeurs de logiciels ne développent pas leur propre distribution Hadoop, mais travaillent ensemble avec l’un des éditeurs existant. Par exemple, Microsoft est partenaire de Hortonworks, en particulier pour déployer Apache Hadoop sur son système d’exploitation Windows Server et sur leur service de cloud Windows Azure. Un autre exemple est Oracle qui offre une appliance big data qui combine matériels et logiciels d’Oracle avec la distribution Cloudera d’Hadoop. Certains fournisseurs tels que SAP ou Talend offrent du support pour plusieurs distributions.

Comment choisir la bonne distribution Hadoop ?

L'évaluation des distributions Hadoop est en dehors de la portée de cet article. Cependant, les principaux acteurs méritent d’être décrits brièvement. Souvent, il y a juste de subtiles différences entre les différentes distributions, que les fournisseurs considèrent comme un ingrédient secret et comme leur principale différentiation. La liste suivante expose ces différences :

  • Cloudera : la distribution de loin la plus installée avec le plus grand nombre de déploiements référencés. Un outillage puissant pour le déploiement, la gestion et le suivi est disponible. Impala est développée par Cloudera pour offrir des traitements temps réel de big data.
  • Hortonworks : le seul fournisseur qui utilise 100% du projet open source Apache Hadoop sans ses propres (non-open) modifications. Hortonworks est le premier vendeur à utiliser les fonctionnalités Apache HCatalog pour des services de méta-données. Par ailleurs, leur initiative Stinger optimises massivement le projet Hive. Hortonworks offre un très bon bac à sable, facile à utiliser pour commencer. Hortonworks a développé et committé des améliorations au niveau du coeur qui rend Apache Hadoop exécutable nativement sur les plate-formes Microsoft Windows incluant Windows Server et Windows Azure.
  • MapR : utilise quelques concepts différents de ses concurrents, en particulier du support pour un système de fichier Unix natif au lieu de HDFS(avec des composants non open source) pour une meilleure performance et une facilité d’utilisation. Les commandes natives Unix peuvent être utilisées à la place des commandes Hadoop. De plus, MapR se différencie de ses concurrents avec des fonctionnalités de haute disponibilité comme les snapshots, la réplication ou encore le basculement avec état ("stateful failover"). L’entreprise est aussi à la tête du projet Apache Drill, un projet open source réinventé à partir de Dremel de Google pour des requêtes de type SQL sur des données Hadoop afin d’offrir des traitements temps réels.
  • Amazon Elastic Map Reduce (EMR) : diffère des autres en tant que solution hébergée sur l’infrastructure web scalable d’Amazon Elastic Compute Cloud (Amazon EC2) et d’Amazon Simple Storage Service (Amazon S3). Outre la distribution d’Amazon, vous pouvez aussi utiliser MapR sur EMR. Un use case majeur est les clusters éphémères. Si vous avez besoin de traitements de big data ponctuels ou peu fréquents, ERM peut vous éviter de perdre beaucoup d’argent. Cependant, il y a certains désavantages aussi. De l'écosystème Hadoop seul Pig et Hive sont inclus, beaucoup d’autres ne sont pas présents par défaut. De plus, ERM est vraiment mis au point pour travailler avec les données dans S3, qui a une latence plus élevée et ne place pas les données sur vos noeuds de calcul. Ainsi les Entrées/Sorties de fichiers sur ERM sont plus lents et plus latents que des E/S sur votre propre cluster Hadoop ou EC2.

Les distributions ci-dessus ont en commun le fait qu’elles puissent être utilisées de façon flexible ou en combinaison avec différentes packages Big Data. Certaines autres distributions, qui apparaissent de nos jours, ne sont pas aussi flexibles et vous lient à un logiciel spécifique et / ou une suite matérielle. Par exemple, le Pivotal HD d’EMC était nativement fusionné avec la base de données analytique de Greenplum pour offrir de vraies requêtes SQL et de très bonnes performance au dessus d'Hadoop, ou encore la distribution Intel pour Apache Hadoop, qui a optimisé sa distribution Hadoop pour des disques SSD, quelque chose que les autres entreprises Hadoop n’ont pas fait jusqu’ici.

Donc, si vous avez déjà une suite de fournisseurs spécifiques dans votre entreprise, soyez sûr de vérifier quelles sont les distributions Hadoop supportées. Par exemple, si vous utilisez la base de données Greenplum, alors Pivotal HD peut être un mariage parfait, alors que dans d’autres cas des solutions plus flexibles peuvent être plus appropriées. Par exemple, si vous avez déjà utilisé Talend ESB, et que vous voulez commencer votre projet big data avec Talend Big Data, alors vous pouvez choisir la distribution Hadoop de votre choix, puisque Talend n’est pas basé sur une distribution spécifique de Hadoop.

Pour faire le bon choix, lisez les concepts et expérimentez différentes distributions. Découvrez l'outillage et analyser les coûts pour les versions Enterprise avec support commercial. Par la suite, vous pouvez décider quelle distribution est la bonne pour vous.

Quand utiliser une distribution Hadoop ?

En raison de ses avantages tels que le packaging, les outils et le support commercial, une distribution Hadoop peut être utilisée dans la plus part des cas. Il y a de rare cas où il s'avère être une bonne idée de n’utiliser que la release Apache Hadoop, de construire ses propres outils, et d’écrire des patchs soi-même. D’autres personnes ont eu déjà les problèmes que vous avez. Vérifiez bien que vous avez de bonnes raisons de ne pas utiliser une distribution Hadoop !

Cependant, même une distribution Hadoop exige beaucoup d’efforts. Vous avez quand même besoin d'écrire beaucoup de code pour vos jobs MapReduce, ainsi que pour intégrer toutes vos différentes sources de données dans Hadoop. C’est maintenant qu’arrive le package Big Data.

Le package Big Data

Au dessus d’Apache Hadoop ou d’une distribution Hadoop, vous pouvez utiliser un package Big Data. Ce dernier supporte souvent différentes distributions Hadoop sous son capot. Cependant, certains fournisseurs implémentent leur propre solution Hadoop. De toute façon un package Big Data ajoute plusieurs autres caractéristiques aux distributions pour le traitement des données :

  • Outillage : habituellement, un package Big Data est basée au dessus d’un IDE comme Eclipse. Des plugins additionnels facilitent le développement des applications big data. Vous pouvez créer, construire et déployer des services big data avec un environnement de développement familier.
  • Modélisation : Apache Hadoop ou une distribution Hadoop offrent une infrastructure pour des clusters Hadoop. Cependant, vous devez toujours écrire beaucoup de code complexe pour construire votre programme MapReduce. Vous pouvez écrire ce code entièrement en Java, ou vous pouvez utiliser des langages optimisés tels que PigLatin ou le langage de requête Hive, qui génère du code MapReduce. Un package Big Data offre un outillage graphique pour modéliser vos services big data. Tout le code requis est généré. Vous avez juste à configurer vos jobs (c-a-d définir tous les paramètres). Réaliser les jobs big data devient plus facile et plus efficace.
  • Génération de code : tout le code est généré. Vous n’avez pas à écrire, debugger, analyser et optimiser votre code MapReduce.
  • Plannification : l'exécution des jobs big data doit être programmée et surveillée. Au lieu d'écrire des jobs cron ou d’autres codes pour l’ordonnancement, vous pouvez utiliser un package Big Data pour définir et gérer les plans d'exécutions facilement.
  • Intégration : Hadoop a besoin d'intégrer des données de toutes sortes de technologies et de produits. En plus des fichiers et des bases de données SQL, vous avez aussi à intégrer des bases de donnéess NoSQL, des médias sociaux tels que Twitter ou Facebook, des middleware de messagerie ou des données de produits B2B tels que Salesforce ou SAP. Un package Big Data aide beaucoup en offrant des connecteurs à toutes ces interfaces pour Hadoop et la partie back. Vous n’avez pas à coder à la main la “colle” qui liera les différents composants, vous avez juste à utiliser les outils graphiques pour intégrer et cartographier toutes ces données. Les capacités d'intégration incluent souvent des fonctionnalités sur la qualité des données tel que le nettoyage de données pour améliorer la qualité des données importées.

Fournisseurs de package Big Data

Le nombre de package Big Data augmente en permanence. Vous pouvez choisir entre plusieurs fournisseurs open source et propriétaire. La plus part des gros fournisseurs de logiciels tels que IBM, Oracle, Microsoft, etc intègrent plusieurs sortes de package big data dans leur suite logicielle. La plus part d’entre eux supporte juste une seule distribution Hadoop, soit leur propre distribution, soit une sur laquelle ils travaillent avec un fournisseur.

D’un autre côté, il y a des fournisseurs qui sont spécialisés dans le traitement de données. Ils offrent des produits pour l'intégration de données, la qualité, Entreprise Service Bus (ESB, ou Bus de Service d'Entreprise), la gestion de processus métiers, et d’autres composants d'intégration. Il y a des fournisseurs propriétaires tels que Informatica, et des fournisseurs open-source tels que Talend ou Pentaho. Certains de ces fournisseurs ne supportent pas une seule distribution Hadoop, mais plusieurs. Par exemple, au moment où cet article est écrit, Talend peut être utilisé en association avec Apache Hadoop, Cloudera, Hortonworks, MapR, Amazon Elastic MapReduce ou encore une distribution customisée (par exemple pour utiliser EMC’s Pivotal HD).

Comment choisir le bon package Big Data ?

L'évaluation des packages big data est en dehors de la portée de cet article. Il y a plusieurs aspects qui doivent être considérés lorsque l’on choisit un package big data. Les aspects suivant doivent vous aider à faire le bon choix pour vos problématiques big data :

  • Simplicité : expérimentez le package big data par vous-même. Cela veut dire : installez-le, connectez-le à votre installation Hadoop, connectez vos interfaces (fichier, bases de données, B2B, etc), et enfin modélisez, déployez et exécutez des jobs big data. Voyez par vous-même si il est facile d’utiliser un package big data - ce n’est pas suffisant de laisser quelques fournisseurs vous montrer comment ça marche. Expérimentez par vous-même !
  • Avantages : le package big data respecte-t-il les standards libres les plus répandus - pas seulement Apache Hadoop et son écosystème, mais aussi l'intégration de données via des web services SOAP et REST...Est-ce que c’est open source et facile à changer ou étendre en ce qui concerne vos problèmes spécifiques ? Y a t-il une grande communauté y compris de la documentation, des forums, des articles, des posts et des talks de conférences ?
  • Fonctionnalités : toutes les fonctionnalités requises sont-elles supportées ? La distribution Hadoop (si vous en utilisez déjà une) ? Toutes les parties de l'écosystème Hadoop que vous voulez utiliser ? Toutes les interfaces / technologies / produits que vous avez à intégrer ? Soyez conscient que trop de fonctionnalités pourrait augmenter la complexité et coûter beaucoup. Alors vérifiez aussi si vous avez besoin d’une solution aussi lourde. Avez vous vraiment besoin de toutes ces fonctionnalités?
  • Pièges : Soyez conscients de plusieurs pièges. Certains packages Big Data appliquent des coûts sur les données (“taxe sur les données”), c-a-d vous devez payer pour chaque ligne de données que vous traitez. Cela peut devenir vite très cher puisque nous parlons de BIG DATA. Tous les packages ne génèrent pas de code natif Apache Hadoop. Souvent un moteur propriétaire doit être installé sur chaque serveur du cluster Hadoop. Cela augmente les coûts de licence, et prive de l'indépendance au fournisseur. Pensez aussi à ce que vous voulez réellement faire avec un package big data. Certaines solutions supportent juste Hadoop pour ETL pour alimenter les données dans un entrepôt de données, d’autres offrent des fonctionnalités telles que le post-traitement, la transformation ou l’analyse big data sur des clusters Hadoop. ETL est juste un cas d’usage d’Apache Hadoop et de son écosystème.

Arbre de décision : Framework vs Distribution vs Package

Maintenant, vous connaissez les différentes alternatives Hadoop. Pour finir, résumons cela et voyons quand s’impose le choix d’un framework Apache Hadoop, d’une distribution Hadoop ou d’un package Big Data.

L’arbre de décision suivant va vous aider à choisir la bonne alternative :

Apache :

  • apprendre et comprendre les détails bas niveau ?
  • expert ? Choisir et configurer vous-même ?

Distribution :

  • installation facile ?
  • apprentissage (débutant) ?
  • outils pour le déploiement ?
  • support commercial nécessaire ?

Package :

  • intégration de différentes sources ?
  • support commercial nécessaire ?
  • génération de code au lieu de coder ?
  • interface graphique de planification des jobs big data ?
  • réalisation de traitements big data (intégration, manipulation, analyse) ?

Conclusion

Plusieurs alternatives existent pour les installations d’Hadoop. Vous pouvez utiliser juste le projet Apache Hadoop et créer votre propre distribution en dehors de l'écosystème Hadoop. Les fournisseurs des distributions Hadoop tels que Cloudera, Hortonworks ou MapR ajoutent plusieurs fonctionnalités au dessus de Apache Hadoop, tel que de l’outillage, du support commercial afin de réduire les efforts. Au dessus des distributions Hadoop, vous pouvez utiliser un package big data pour des fonctionnalités additionnelles telles que la modélisation, la génération de code et la planification des jobs big data, ainsi que l'intégration de différentes sources de données. Soyez sûr d'évaluer les différentes alternatives pour prendre la bonne décision pour votre projet big data.

A Propos de l'Auteur

Kai Wähner travaille comme Consultant Principal à Talend. Son expertise principale réside dans les domaines de Java EE, SOA, Cloud Computing, BPM, Big Data, et la Gestion d'Architectures d'Enterprise. Il est speaker dans des conférences informatiques internationales telles que JavaOne, ApacheCon ou OOP, écrit des articles pour des journaux professionnels et partage son expérience avec les nouvelles technologie sur son blog. Trouvez plus de détails et de références (présentations, articles, billets de blog) sur son site web, et vous pouvez le contacter ici ou sur Twitter: @KaiWaehner.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT