Tout savoir sur Hadoop et ses avantages

Hadoop est un framework Java open source utilisé pour le stockage et traitement des big data. Les données sont stockées sur des serveurs standard peu coûteux configurés en clusters. Le système de fichiers distribué Hadoop supporte des fonctionnalités de traitement concurrent et de tolérance aux incidents. Développé par Doug Cutting et Michael J. Cafarella, Hadoop utilise le modèle de programmation MapReduce pour stocker et récupérer plus rapidement les données dans ses nœuds. Le framework est géré par Apache Software Foundation et sous licence Apache 2.0.

Pendant des années, alors que la puissance de traitement des serveurs d'applications explosait, les bases de données ont pris du retard en raison de leur capacité et de leur vitesse limitées. Aujourd'hui, alors que de nombreuses applications génèrent des volumes considérables de données à traiter, Hadoop joue un rôle important et très attendu dans la refonte du monde des bases de données.

Sur le plan des activités commerciales de l'entreprise, il existe également des avantages directs et indirects. En utilisant la technologie open source sur des serveurs peu coûteux qui sont généralement hébergés dans le cloud (mais parfois sur site), les entreprises peuvent réduire notablement leurs coûts.

En outre, la capacité de collecter des volumes considérables de données et la connaissance générée par l'analyse de ces données permet de prendre de meilleures décisions dans le monde réel, par exemple : capacité de se concentrer sur le segment de consommateurs le plus rentable, supprimer ou corriger les processus peu efficaces, optimiser les opérations des sites de production, générer des résultats de recherche pertinents, réaliser des analyses prédictives, etc.

Hadoop améliore les bases de données traditionnelles

Hadoop résout deux défis importants des bases de données traditionnelles :

1. Capacité – Hadoop peut stocker de gros volumes de données.

Dans son système de fichiers distribué HDFS (Hadoop Distributed File System), les données sont divisées en datasets de taille réduite (« chunks ») et enregistrées sur des clusters de serveurs standard. Ces serveurs de base étant construits avec des configurations matérielles très simples, ils sont peu coûteux et peuvent évoluer très facilement pour suivre l'augmentation des volumes de données.

2. Vitesse – Avec Hadoop, vous pouvez stocker et récupérer les données plus rapidement.

Hadoop utilise le modèle de programmation fonctionnelle MapReduce pour exécuter un traitement parallèle entre les datasets. Lorsqu'une requête est transmise à la base de données, les jobs (et les données) spécifiés dans cette requête ne sont pas traités séquentiellement, mais répartis et exécutés simultanément sur différents serveurs. À l'issue du traitement, les résultats des différents jobs sont regroupés et renvoyés à l'application, ce qui améliore considérablement la vitesse de traitement.

Cinq avantages de Hadoop pour les big data

Pour l'analytique et les big data, Hadoop est pratiquement une solution miracle. Les données collectées sur les personnes, processus, objets, outils, etc. sont utiles seulement si des tendances significatives émergent de ces données et si, à leur tour, ces tendances peuvent amener à prendre de meilleures décisions. Hadoop vous aide à relever le défi de l'énormité des big data grâce à ses nombreuses qualités :

  1. Résilience – Les données stockées dans un nœud du cluster sont répliquées dans d'autres nœuds, ce qui garantit la tolérance aux incidents de Hadoop. Si un nœud tombe en panne, les autres serveurs du cluster disposent toujours d'une copie de sauvegarde des données.
  2. Évolutivité – Contrairement aux systèmes traditionnels qui ont une capacité de stockage limitée, Hadoop est évolutif car il fonctionne dans un environnement distribué. En cas de besoin, la configuration peut être facilement étendue en installant d'autres serveurs, et la capacité de stockage peut ainsi atteindre plusieurs péta-octets.
  3. Coût modéré – Hadoop étant un framework open source n'exigeant aucune licence, les coûts de cette solution sont nettement inférieurs à ceux des bases de données relationnelles classiques. Par ailleurs, l'utilisation d'un matériel standard peu coûteux joue explique le coût modéré de cette solution.
  4. Vitesse – Le système de fichiers distribué, les traitements concurrents et le modèle MapReduce permettent d'exécuter les requêtes les plus complexes en quelques secondes.
  5. Diversité des données – Le HDFS peut stocker différents formats de données : structurées, non structurées (par exemple, des vidéos) ou semi-structurées (par exemple, des fichiers XML). Lors du stockage des données, il n'est pas nécessaire de valider celles-ci par rapport à un schéma prédéfini : les données peuvent être téléchargées sous n'importe quel format. Lors de leur récupération, les données sont analysées et utilisées en appliquant le ou les schémas requis. Cette souplesse permet de dériver des connaissances différentes à partir des mêmes données.

Écosystème Hadoop – Éléments de base

Hadoop n'est pas seulement une application, c'est surtout une plate-forme dont les différents éléments intégrés permettent le stockage et traitement de données distribuées. L'ensemble de ces éléments forme l'« écosystème » de Hadoop.

L'écosystème Hadoop comporte des éléments de base indispensables au framework, d'autres sont des éléments complémentaires qui ajoutent des fonctionnalités.

Les éléments de base de Hadoop sont les suivants :

HDFS – Système de fichiers distribué

HDFS (Hadoop Distributed File System) est le système de fichiers distribué et l'élément central de Hadoop permettant de stocker et répliquer des données sur plusieurs serveurs.

HDFS utilise un NameNode et un DataNode. Le DataNode est un serveur standard sur lequel les données sont stockées. Le NameNode contient des métadonnées (informations sur les données stockées dans les différents nœuds). L'application interagit uniquement avec le NameNode, et celui-ci communique avec les nœuds de données selon besoin.

YARN – Gestion et planification

YARN est l'abréviation de « Yet Another Resource Negotiator » (plus simplement, un négociateur de ressources). Cet élément assure la gestion et planification des ressources (clusters) Hadoop et décide de ce qui doit se passer dans chaque nœud de données. Le nœud principal central qui gère toutes les demandes de traitement est le « Resource Manager ». Le Resource Manager interagit avec les différents Node Managers : chaque DataNode enfant possède son propre Node Manager pour l'exécution des tâches.

MapReduce

MapReduce est un modèle de programmation qui a d'abord été utilisé par Google pour indexer ses opérations de recherche. Suivant cette logique, cet élément exécute des algorithmes pour décomposer des données en datasets plus petits. MapReduce s'appuie sur deux fonctions : Map() et Reduce(), qui analysent les données rapidement et efficacement.

La fonction Map regroupe, filtre et trie plusieurs datasets en parallèle et génère des tuples (paires key value). La fonction Reduce agrège ensuite les données de ces tuples pour produire le résultat souhaité.

Écosystème Hadoop – Autres éléments

Les paragraphes qui suivent présentent quelques éléments complémentaires utilisés couramment dans l'écosystème Hadoop.

Hive – Data warehousing

Hive est un système de data warehousing qui permet d'interroger les gros datasets présents dans le HDFS. Avant Hive, les développeurs étaient confrontés au défi de créer des tâches MapReduce complexes pour interroger les données Hadoop. Hive utilise la langage HQL (Hive Query Language), dont la syntaxe est semblable à celle de SQL. La plupart des développeurs ayant l'habitude des environnements et du langage SQL, ils sont rapidement à l'aise avec Hive.

L'un des avantages de Hive est que l'interface entre l'application et le HDFS est assurée par un pilote JDBC/ODBC. Ce pilote affiche le système de fichiers Hadoop sous forme de tables et convertit le HQL en travaux MapReduce (et vice-versa). Les développeurs et les administrateurs de bases de données bénéficient ainsi du meilleur des deux mondes : les avantages du traitement par lots des gros datasets et la possibilité de formuler des requêtes simples dans un environnement familier. Développé à l'origine par l'équipe Facebook, Hive est aujourd'hui une technologie open source.

Pig – Réduire les fonctions MapReduce

Pig, développé initialement par Yahoo!, est semblable à Hive : il élimine la nécessité de créer des fonctions MapReduce pour interroger le HDFS. Comme c'est le cas avec HQL, le langage Pig (« Pig Latin ») est très proche du SQL. Pig Latin est une couche de langage pour les flux de données qui repose sur MapReduce.

Pig dispose également d'un environnement d'exécution qui s'interface avec HDFS. Les scripts écrits des langages tels que Java ou Python peuvent également être intégrés dans Pig.

Hive vs Pig

Bien que Pig et Hive soient dotés de fonctionnalités similaires, ils peuvent être plus ou moins efficaces dans différents scénarios.

Pig est utile dans la phase de préparation des données, car il peut exécuter très facilement des jointures et requêtes complexes. Par ailleurs, il fonctionne très bien avec différents formats de données, y compris semi-structurées et non structurées. Le langage Pig Latin est proche du SQL, mais il présente suffisamment de différences pour qu'un temps de formation soit nécessaire.

Hive fonctionne bien avec les données structurées, et il est donc plus efficace pour les opérations de data warehousing. Hive est utilisé côté serveur du cluster.

Les chercheurs et programmeurs ont tendance à utiliser Pig côté client du cluster, alors que les utilisateurs de Business Intelligence (par exemple, les analystes de données) constatent généralement que Hive est mieux adapté.

Flume – Importation des big data

Flume est un outil spécialisé dans l'importation des big data et qui agit comme un « messager » entre différentes sources de données et le HDFS. Il peut collecter, agréger et transmettre en streaming vers le HDFS des volumes considérables de données de logs ou d'événements générés par des applications telles que des sites de médias sociaux, des applications IoT et des portails d'e-commerce.

Flume présente les caractéristiques suivantes :

  • A une architecture distribuée.
  • Assure des transferts de données fiables.
  • Est tolérant aux incidents.
  • Possède la souplesse de collecter les données par lots ou en temps réel.
  • Si nécessaire, peut être mis à l'échelle horizontalement pour gérer plus de trafic.

Les sources de données communiquent avec les agents Flume : chaque agent est associé à une source, un canal et un « sink ». La source collecte les données en provenance d'un expéditeur (sender), le canal stocke les données temporairement et le sink transfère les données à la destination, à savoir un serveur Hadoop.

Sqoop – Importation de données dans les bases relationnelles

Sqoop est également (comme Flume décrit précédemment) un outil pour l'importation des données. Alors que Flume travaille sur des données non structurées ou semi-structurées, Sqoop est utilisé pour exporter et importer des données à partir de bases de données relationnelles. Comme la plupart des données d'entreprise sont stockées dans des bases relationnelles, Sqoop est utilisé pour importer ces données dans Hadoop pour que les analystes puissent les examiner.

Pour exporter et importer des données, les administrateurs et développeurs de bases de données disposent d'une interface en ligne de commande (CLI) très simple. Sqoop convertit les commandes au format MapReduce et les envoie au HDFS via YARN. Tout comme Flume, Sqoop est tolérant aux incidents et peut exécuter des opérations concurrentes.

Zookeeper – Coordination des applications distribuées

Zookeeper est un service qui coordonne les applications distribuées. Dans le framework Hadoop, il agit comme un outil d'administration avec un registre centralisé qui contient des informations sur le cluster de serveurs distribués dont il assure la gestion. Les principales fonctionnalités de Zookeeper sont les suivantes :

  • Gestion des informations de configuration (état partagé des données de configuration)
  • Service de nommage (affectation d'un nom à chaque serveur)
  • Service de synchronisation (gestion des blocages, compétition entre ressources/race condition et incohérences entre données)
  • Élection d'un leader (élit un leader parmi les serveurs par consensus)

Le cluster de serveurs sur lequel tourne le service Zookeeper s'appelle un « ensemble ». L'ensemble élit un chef « chef de cluster », les autres clusters se comportant comme des followers. Toutes les opérations d'écriture des clients doivent transiter par le serveur leader, alors que les opérations de lecture peuvent être transmises directement à n'importe quel autre serveur.

Zookeeper offre d'excellentes qualités de fiabilité et de résilience grâce à la synchronisation en mode dégradé (fail-safe), à l'atomicité des opérations et à la sérialisation des messages.

Kafka – Transferts de données

Kafka est un système distribué de communication inter-processus de type publication-abonnement (publish-subscribe) qui est souvent utilisé avec Hadoop pour accélérer les transferts de données. Un cluster Kafka est constitué d'un groupe de serveurs qui servent d'intermédiaires entre les Producers et les Consumers.

Dans un contexte de big data, un exemple de Producer pourrait être un capteur qui relève des valeurs de température pour les transmettre au serveur. Les Consumers sont en fait les serveurs Hadoop. Les Producers publient un message sur un sujet donné (topic), et les Consumers sélectionnent les messages en « écoutant » leur sujet.

Un sujet donné peut être divisé en plusieurs partitions. Tous les messages affectés de la même clé sont stockés dans la même partition. Un Consumer peut écouter une ou plusieurs partitions.

En regroupant les messages sous une seule clé et en demandant à un Consumer de traiter des partitions spécifiques, plusieurs Consumers peuvent écouter le même sujet en même temps : ce sujet est parallélisé, ce qui augmente le débit du système. Kafka est généralement adopté pour ses qualités de vitesse, évolutivité et réplication performante.

HBase – Base de données non relationnelles

HBase est une base de données non relationnelles en colonnes qui s'installe en surcouche du HDFS. L'un des défis du HDFS est qu'il est limité au traitement par lots. Autrement dit, pour les requêtes interactives simples, les données doivent quand même être traitées par lots, ce qui entraîne une latence élevée.

HBase contourne cette situation en supportant les requêtes portant sur une seule ligne, y compris dans les tables les plus volumineuses, ce qui réduit considérablement les temps de latence. Ce processus fait appel à des tables de hachage en interne ; il est modélisé sur Google BigTable qui permet d'accéder au système de fichiers Google (GFS).

HBase est évolutif, réagit efficacement aux incidents (par exemple, si un nœud tombe en panne) et il peut traiter les données non structurées et les données semi-structurées. C'est donc la solution idéale pour interroger de gros gisements de données à des fins d'analyse.

Défis de Hadoop

Hadoop est généralement considéré comme l'un des principaux facilitateurs des big data, mais il lui reste quelques défis à relever. Ces défis découlent de la nature complexe de son écosystème et de la nécessité pour les opérateurs de maîtriser des connaissances techniques avancées pour exécuter les fonctions Hadoop. Avec la bonne plate-forme et les bons outils d'intégration, la complexité est considérablement réduite et les opérations nettement plus faciles à exécuter.

1. Formation exigeante

Pour interroger le système de fichiers Hadoop, les programmeurs doivent écrire des fonctions MapReduce en Java : ce type d'opération n'est pas simple et exige un certain temps de formation. En outre, l'écosystème Hadoop fait intervenir un grand nombre d'éléments très différents qui exigent un certain temps de découverte et de familiarisation.

2. Différents datasets exigent des approches différentes

Avec Hadoop, il n'existe pas de solution standard. La plupart des éléments complémentaires présentés plus haut ont été conçus pour combler certaines lacunes importantes.

Par exemple, Hive et Pig offrent un moyen plus simple d'interroger les datasets. De leur côté, les outils d'importation de données tels que Flume et Sqoop permettent de collecter des données à partir de différentes sources. L'écosystème comprend de nombreux autres éléments et une certaine expérience est nécessaire pour choisir l'outil le mieux adapté.

3. Limites de MapReduce

MapReduce est un excellent modèle de programmation pour le traitement par lots de datasets volumineux, mais ce modèle présente des limites.

Son approche, qui consiste à traiter un nombre important de fichiers, avec de multiples lectures et écritures, n'est pas adaptée à l'analyse interactive de données en temps réel ou aux tâches itératives. Pour des opérations de ce type, MapReduce n'est pas assez efficace et fait apparaître des temps de latences élevés. Toutefois, il existe des solutions à ce problème ; par exemple, Apache est une alternative qui ne présente pas les lacunes de MapReduce.

4. Sécurité des données

Lorsque les big data sont déplacées vers le cloud, les données sensibles sont transférées vers les serveurs Hadoop, ce qui implique de réfléchir à la sécurité des données. L'écosystème fait intervenir tellement d'outils qu'il est important de s'assurer que chaque outil dispose des droits nécessaires pour accéder aux données. Il est nécessaire de prévoir des mécanismes d'authentification, de provisionnement, de cryptage des données et d'audit régulier. Hadoop a la capacité de relever ces nombreux défis, mais au prix d'une expertise suffisante et d'une exécution méticuleuse.

Bien que la plupart des géants de la technologie aient déjà utilisé les éléments Hadoop présentés dans ce document, Hadoop est encore considéré comme une nouveauté dans le secteur. La plupart des défis de Hadoop résultent de cette récence, mais une plate-forme performante pour l'intégration des big data doit être capable de les résoudre ou les atténuer.

Hadoop vs Apache Spark

Malgré ses nombreux avantages, le modèle MapReduce n'est pas efficace pour les requêtes interactives et le traitement des données en temps réel, dans la mesure où il est dépendant d'une écriture sur disque entre les différentes étapes du traitement.

Spark est un moteur de traitement de données qui résout ce défi en effectuant le stockage des données directement en mémoire RAM (in-memory). Bien qu'il ait commencé son existence comme sous-projet de Hadoop, il dispose de sa propre technologie de cluster.

Spark est souvent utilisé en complément du HDFS pour bénéficier des qualités de stockage de Hadoop. Pour ses algorithmes de traitement, Spark utilise ses propres bibliothèques qui supportent les requêtes SQL, le streaming, le machine learning et les graphiques.

Les data scientists utilisent largement Spark pour sa vitesse fulgurante et ses API élégantes et riches en fonctionnalités, le tout facilitant le traitement des gros datasets.

Bien que Spark semble pouvoir présenter des avantages par rapport à Hadoop, ces deux solutions peuvent fonctionner en tandem. Selon les besoins et le type de dataset à traiter, Hadoop et Spark se complètent mutuellement. Toutefois, Spark ne dispose pas de son propre système de fichiers, et il est donc obligé de dépendre de HDFS (ou autres solutions de ce type) pour ses opérations de stockage.

La seule comparaison qui vaille est en fait entre les algorithmes de traitement de Spark et le modèle MapReduce. Quand la RAM est une contrainte (et pour les travaux de nuit), MapReduce est un bon choix. Pour diffuser des données en streaming, accéder à des bibliothèques de machine learning et exécuter des opérations rapides en temps réel, Spark est le choix idéal.

Un avenir aux possibilités multiples

En moins d'une décennie, Hadoop a su s'imposer dans le secteur de l'IT en facilitant les analyses des données. De l'analyse des visites de sites Web à la détection des fraudes en passant par les solutions bancaires, ses applications sont très diverses.

Avec Talend Open Studio for Big Data, vous pouvez très facilement intégrer votre configuration Hadoop dans l'architecture de données de votre choix. Les solutions Talend proposent plus de connecteurs de données intégrés que toute autre solution de gestion de données, ce qui vous permet de créer des flux de données transparents entre Hadoop et les solutions les plus répandues : formats/types de fichier (CSV, XML, Excel, etc.), bases de données (Oracle, SQL Server, MySQL, etc.), applications d'entreprise (SAP, SugarCRM, etc.), et même les services de données en cloud tels que Salesforce et Force.com.

Dès aujourd'hui, nous vous invitons à consulter des informations complémentaires sur les solutions Talend pour les big data et télécharger Talend Open Studio for Big Data pour commencer à bénéficier des outils open source les plus performants du marché.

Prêt à faire vos premiers pas avec Talend ?