Qu’est-ce qu’Hadoop?

Hadoop est un framework open source, basé sur Java, utilisé pour le stockage et le traitement des big data. Les données sont stockées sur des serveurs de commodité peu coûteux qui fonctionnent en clusters. Son système de fichiers distribué permet le traitement simultané et la tolérance aux pannes. Développé par Doug Cutting et Michael J. Cafarella, Hadoop utilise le modèle de programmation MapReduce pour un stockage et une récupération plus rapides des données à partir de ses nœuds. Le cadre est géré par l’Apache Software Foundation et fait l’objet d’une licence Apache 2.0.

Pendant des années, alors que la puissance de traitement des serveurs d’applications a augmenté de façon considérable, les bases de données sont restées à la traîne en raison de leur capacité et de leur vitesse limitées. Cependant, aujourd’hui, alors que de nombreuses applications génèrent des données volumineuses à traiter, Hadoop joue un rôle important en apportant un renouveau indispensable au monde des bases de données.

Télécharger Hadoop et les lacs de données maintenant.
Lire maintenant

D’un point de vue commercial également, il existe des avantages directs et indirects. En utilisant une technologie open-source sur des serveurs peu coûteux qui sont pour la plupart dans le cloud (et parfois sur site), les organisations réalisent d’importantes économies.

En outre, la capacité de collecter des données massives, et les idées dérivées du croquage de ces données, se traduisent par de meilleures décisions commerciales dans le monde réel – comme la capacité de se concentrer sur le bon segment de consommateurs, d’éliminer ou de corriger les processus erronés, d’optimiser les opérations au sol, de fournir des résultats de recherche pertinents, d’effectuer des analyses prédictives, etc.

Comment Hadoop améliore les bases de données traditionnelles

Hadoop résout deux défis clés avec les bases de données traditionnelles:

Capacité : Hadoop stocke de grands volumes de données.

En utilisant un système de fichiers distribué appelé HDFS (Hadoop Distributed File System), les données sont divisées en morceaux et sauvegardées sur des grappes de serveurs de commodité. Comme ces serveurs de commodité sont construits avec des configurations matérielles simples, ceux-ci sont économiques et facilement évolutifs au fur et à mesure que les données augmentent.

Vitesse : Hadoop stocke et récupère les données plus rapidement.

Hadoop utilise le modèle de programmation fonctionnelle MapReduce pour effectuer des traitements parallèles sur des ensembles de données. Ainsi, lorsqu’une requête est envoyée à la base de données, au lieu de traiter les données de manière séquentielle, les tâches sont divisées et exécutées simultanément sur des serveurs distribués. Enfin, le résultat de toutes les tâches est rassemblé et renvoyé à l’application, ce qui améliore considérablement la vitesse de traitement.

5 avantages d’Hadoop pour le big data

Pour le big data et l’analytique, Hadoop est un sauveur de vie. Les données recueillies sur les personnes, les processus, les objets, les outils, etc. ne sont utiles que lorsque des modèles significatifs émergent qui, à leur tour, aboutissent à de meilleures décisions. Hadoop aide à surmonter le défi de l’immensité des big data :

  1. Résilience – Les données stockées dans un nœud sont également répliquées dans les autres nœuds du cluster. Cela permet d’assurer la tolérance aux pannes. Si un nœud tombe en panne, il y a toujours une sauvegarde des données disponibles dans le cluster.
  2. Évolutivité – Contrairement aux systèmes traditionnels qui ont une limitation du stockage des données, Hadoop est évolutif car il fonctionne dans un environnement distribué. Au fur et à mesure que le besoin s’en fait sentir, la configuration peut être facilement étendue pour inclure plus de serveurs pouvant stocker jusqu’à plusieurs pétaoctets de données.
  3. Faible coût – Hadoop étant un framework open-source, sans licence à acquérir, les coûts sont nettement inférieurs à ceux des systèmes de bases de données relationnelles. L’utilisation de matériel de base peu coûteux joue également en sa faveur pour que la solution reste économique.
  4. Vitesse – Le système de fichiers distribué d’Hadoop, le traitement simultané et le modèle MapReduce permettent d’exécuter des requêtes complexes en quelques secondes.
  5. Diversité des données – HDFS a la capacité de stocker différents formats de données tels que non structurés (par exemple, des vidéos), semi-structurés (par exemple, des fichiers XML) et structurés. Lors du stockage des données, il n’est pas nécessaire de les valider par rapport à un schéma prédéfini. Au contraire, les données peuvent être déversées dans n’importe quel format. Plus tard, lorsqu’elles sont récupérées, les données sont analysées et adaptées à n’importe quel schéma, selon les besoins. Cela donne la flexibilité de dériver différents aperçus en utilisant les mêmes données.

Télécharger le rapport O’Reilly : Moving Hadoop to the Cloud maintenant.
Lire maintenant

L’écosystème Hadoop : Composants de base

Hadoop n’est pas seulement une application, c’est plutôt une plateforme avec divers composants intégraux qui permettent le stockage et le traitement de données distribuées. Ces composants forment ensemble l’écosystème Hadoop.

Certains d’entre eux sont des composants centraux, qui constituent la base du cadre, tandis que d’autres sont des composants supplémentaires qui apportent des fonctionnalités complémentaires dans le monde Hadoop.

Les composants centraux d’Hadoop sont :

HDFS : maintenir le système de fichiers distribué

HDFS est le pilier d’Hadoop qui maintient le système de fichiers distribué. Il permet de stocker et de répliquer les données sur plusieurs serveurs.

HDFS possède un NameNode et un DataNode. Les DataNodes sont les serveurs de commodité où les données sont réellement stockées. Le NameNode, quant à lui, contient des métadonnées avec des informations sur les données stockées dans les différents nœuds. L’application interagit uniquement avec le NameNode, qui communique avec les nœuds de données selon les besoins.

YARN : Yet Another Resource Negotiator

YARN est l’abréviation de Yet Another Resource Negotiator. Il gère et planifie les ressources, et décide de ce qui doit se passer dans chaque nœud de données. Le nœud maître central qui gère toutes les demandes de traitement s’appelle le gestionnaire de ressources. Le gestionnaire de ressources interagit avec les gestionnaires de nœuds ; chaque nœud de données esclave possède son propre gestionnaire de nœuds pour exécuter les 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. Il s’agit de la logique utilisée pour diviser les données en ensembles plus petits. Il fonctionne sur la base de deux fonctions – Map() et Reduce() – qui analysent les données de manière rapide et efficace.

D’abord, la fonction Map regroupe, filtre et trie plusieurs ensembles de données en parallèle pour produire des tuples (paires clé, valeur). Ensuite, la fonction Reduce agrège les données de ces tuples pour produire le résultat souhaité.

L’écosystème Hadoop : Composants supplémentaires

Voici quelques composants supplémentaires qui sont largement utilisés dans l’écosystème Hadoop.

Hive : Entreposage de données

Hive est un système d’entreposage de données qui aide à interroger de grands ensembles de données 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 HQL (Hive Query Language), qui ressemble à la syntaxe de SQL. Comme la plupart des développeurs viennent d’un environnement SQL, Hive est plus facile à embarquer.

L’avantage de Hive est qu’un pilote JDBC/ODBC agit comme une interface entre l’application et le HDFS. Il expose le système de fichiers Hadoop sous forme de tables, convertit HQL en tâches MapReduce, et vice-versa. Ainsi, si les développeurs et les administrateurs de bases de données bénéficient du traitement par lots de grands ensembles de données, ils peuvent utiliser des requêtes simples et familières pour y parvenir. Développé à l’origine par l’équipe de Facebook, Hive est désormais une technologie open source.

Pig : Reduce MapReduce Functions

Pig, initialement développé par Yahoo !, est similaire à Hive en ce qu’il élimine le besoin de créer des fonctions MapReduce pour interroger le HDFS. Similaire à HQL, le langage utilisé – ici, appelé « Pig Latin » – est plus proche de SQL. « Pig Latin » est une couche de langage de flux de données de haut niveau au-dessus de MapReduce.

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

Hive versus Pig

Bien que Pig et Hive aient des fonctions similaires, l’un peut être plus efficace que l’autre dans différents scénarios.

Pig est utile dans l’étape de préparation des données, car il peut effectuer des jointures et des requêtes complexes facilement. Il fonctionne également bien avec différents formats de données, notamment semi-structurées et non structurées. Pig Latin est plus proche de SQL, mais il en diffère aussi suffisamment pour avoir une courbe d’apprentissage.

Hive, en revanche, fonctionne bien avec les données structurées et est donc plus efficace lors du stockage de données. Il est utilisé du côté serveur du cluster.

Les chercheurs et les programmeurs ont tendance à utiliser Pig du côté client d’un cluster, tandis que les utilisateurs de business intelligence tels que les analystes de données trouvent que Hive est la bonne solution.

Flume : Ingestion de big data

Flume est un outil d’ingestion de big data qui agit comme un service de messagerie entre plusieurs sources de données et le HDFS. Il collecte, agrège et envoie d’énormes quantités de données en continu (par exemple, des fichiers journaux, des événements) générées par des applications telles que des sites de médias sociaux, des applications IoT et des portails de commerce électronique dans le HDFS.

Flume est riche en fonctionnalités, il :

  • A une architecture distribuée.
  • Assure un transfert de données fiable.
  • Est tolérant aux pannes.
  • A la flexibilité de collecter des données par lots ou en temps réel.
  • Peut être mis à l’échelle horizontalement pour gérer plus de trafic, selon les besoins.

Les sources de données communiquent avec les agents Flume – chaque agent a une source, un canal et un puits. La source collecte les données de l’expéditeur, le canal stocke temporairement les données, et enfin, le puits transfère les données vers la destination, qui est un serveur Hadoop.

Sqoop : Ingestion de données pour les bases de données relationnelles

Sqoop ( » SQL « , pour Hadoop) est un autre outil d’ingestion de données comme Flume. Alors que Flume travaille sur des données non structurées ou semi-structurées, Sqoop est utilisé pour exporter des données depuis et importer des données dans des bases de données relationnelles. Comme la plupart des données d’entreprise sont stockées dans des bases de données relationnelles, Sqoop est utilisé pour importer ces données dans Hadoop afin que les analystes puissent les examiner.

Les administrateurs de bases de données et les développeurs peuvent utiliser une interface de ligne de commande simple pour exporter et importer des données. Sqoop convertit ces commandes au format MapReduce et les envoie au HDFS en utilisant YARN. Sqoop est également tolérant aux pannes et effectue des opérations simultanées comme Flume.

Zookeeper : Coordination des applications distribuées

Zookeeper est un service qui coordonne les applications distribuées. Dans le cadre d’Hadoop, il agit comme un outil d’administration avec un registre centralisé qui possède des informations sur le cluster de serveurs distribués qu’il gère. Certaines de ses fonctions clés sont :

  • Maintien des informations de configuration (état partagé des données de configuration)
  • Service de nommage (attribution d’un nom à chaque serveur)
  • Service de synchronisation (gère les blocages, les conditions de course et l’incohérence des données)
  • Élection du leader (élit un leader parmi les serveurs par consensus)

La grappe de serveurs sur laquelle le service Zookeeper s’exécute est appelée un « ensemble ». L’ensemble élit un leader parmi le groupe, les autres se comportant comme des suiveurs. Toutes les opérations d’écriture des clients doivent être acheminées par le leader, tandis que les opérations de lecture peuvent aller directement à n’importe quel serveur.

Zookeeper offre une fiabilité et une résilience élevées grâce à la synchronisation à sécurité intégrée, l’atomicité et la sérialisation des messages.

Kafka : Transferts de données plus rapides

Kafka est un système de messagerie distribué de type publish-subscribe qui est souvent utilisé avec Hadoop pour des transferts de données plus rapides. Un cluster Kafka est constitué d’un groupe de serveurs qui jouent le rôle d’intermédiaire entre les producteurs et les consommateurs.

Dans le contexte du big data, un exemple de producteur pourrait être un capteur collectant des données de température à relayer au serveur. Les consommateurs sont les serveurs Hadoop. Les producteurs publient des messages sur un sujet et les consommateurs tirent des messages en écoutant le sujet.

Un seul sujet peut être encore divisé en partitions. Tous les messages avec la même clé arrivent à une partition spécifique. Un consommateur peut écouter une ou plusieurs partitions.

En regroupant les messages sous une même clé et en faisant en sorte qu’un consommateur s’occupe de partitions spécifiques, de nombreux consommateurs peuvent écouter le même topic en même temps. Ainsi, un sujet est parallélisé, ce qui augmente le débit du système. Kafka est largement adopté pour sa vitesse, son évolutivité et sa réplication robuste.

HBase : Base de données non relationnelle

HBase est une base de données non relationnelle orientée colonnes qui se trouve au-dessus de HDFS. L’un des défis de HDFS est qu’il ne peut effectuer que des traitements par lots. Ainsi, pour les requêtes interactives simples, les données doivent encore être traitées par lots, ce qui entraîne une latence élevée.

HBase résout ce défi en permettant des requêtes pour des lignes uniques sur d’énormes tables avec une faible latence. Il y parvient en utilisant en interne des tables de hachage. Il est modélisé sur le modèle de Google BigTable qui aide à accéder au système de fichiers de Google (GFS).

HBase est évolutif, dispose d’une prise en charge des pannes lorsqu’un nœud tombe en panne, et est bon avec les données non structurées ainsi que semi-structurées. Par conséquent, il est idéal pour interroger les magasins de données volumineuses à des fins analytiques.

Télécharger le rapport O’Reilly : Moving Hadoop to the Cloud maintenant.
Lire maintenant

Défis d’Hadoop

Bien qu’Hadoop ait été largement considéré comme un facilitateur clé du big data, il y a encore quelques défis à considérer. Ces défis découlent de la nature de son écosystème complexe et de la nécessité de disposer de connaissances techniques avancées pour exécuter les fonctions d’Hadoop. Cependant, avec la bonne plateforme d’intégration et les bons outils, la complexité est réduite de manière significative et donc, rend le travail avec elle plus facile également.

Steep Learning Curve

Pour interroger le système de fichiers Hadoop, les programmeurs doivent écrire des fonctions MapReduce en Java. Cela n’est pas simple et implique une courbe d’apprentissage abrupte. De plus, il y a trop de composants qui composent l’écosystème, et il faut du temps pour se familiariser avec eux.

Des ensembles de données différents nécessitent des approches différentes

Il n’existe pas de solution  » taille unique  » dans Hadoop. La plupart des composants supplémentaires évoqués ci-dessus ont été construits en réponse à une lacune qu’il fallait combler.

Par exemple, Hive et Pig offrent un moyen plus simple d’interroger les ensembles de données. De plus, les outils d’ingestion de données tels que Flume et Sqoop aident à rassembler des données provenant de sources multiples. Il existe également de nombreux autres composants et il faut de l’expérience pour faire le bon choix.

Limitations de MapReduce

MapReduce est un excellent modèle de programmation pour traiter par lots des ensembles de données volumineux. Cependant, il a ses limites.

Son approche intensive en fichiers, avec de multiples lectures et écritures, n’est pas bien adaptée aux analyses de données interactives en temps réel ou aux tâches itératives. Pour de telles opérations, MapReduce n’est pas assez efficace et entraîne des latences élevées. (Il existe des solutions de contournement à ce problème. Apache est une alternative qui comble le vide de MapReduce.)

Sécurité des données

Au fur et à mesure que le big data est déplacé vers le cloud, des données sensibles sont déversées dans les serveurs Hadoop, créant ainsi le besoin d’assurer la sécurité des données. Le vaste écosystème compte tellement d’outils qu’il est important de s’assurer que chaque outil dispose des droits d’accès corrects aux données. L’authentification, le provisionnement, le cryptage des données et les audits fréquents doivent être appropriés. Hadoop a la capacité de relever ce défi, mais il s’agit d’avoir l’expertise et d’être méticuleux dans l’exécution.

Bien que de nombreux géants de la tech aient utilisé les composants d’Hadoop discutés ici, il est encore relativement nouveau dans l’industrie. La plupart des défis découlent de cette nascence, mais une plateforme d’intégration big data robuste peut les résoudre ou les faciliter tous.

Hadoop vs Apache Spark

Le modèle MapReduce, malgré ses nombreux avantages, n’est pas efficace pour les requêtes interactives et le traitement des données en temps réel, car il repose sur les écritures sur disque entre chaque étape du traitement.

Spark est un moteur de traitement des données qui résout ce défi en utilisant le stockage des données en mémoire. Bien qu’il ait commencé comme un sous-projet d’Hadoop, il dispose de sa propre technologie de cluster.

Souvent, Spark est utilisé au-dessus de HDFS pour tirer parti uniquement de l’aspect stockage d’Hadoop. Pour l’algorithme de traitement, il utilise ses propres bibliothèques qui prennent en charge les requêtes SQL, le streaming, l’apprentissage automatique et les graphiques.

Les data scientists utilisent largement Spark pour sa vitesse fulgurante et ses API élégantes et riches en fonctionnalités qui facilitent le travail avec de grands ensembles de données.

Bien que Spark puisse sembler avoir un avantage sur Hadoop, les deux peuvent fonctionner en tandem. Selon les besoins et le type d’ensembles de données, Hadoop et Spark se complètent. Spark ne dispose pas de son propre système de fichiers, il doit donc dépendre de HDFS, ou d’autres solutions de ce type, pour son stockage.

La véritable comparaison se fait en fait entre la logique de traitement de Spark et le modèle MapReduce. Lorsque la mémoire vive est une contrainte, et pour les travaux de nuit, MapReduce est une bonne solution. En revanche, pour diffuser des données en continu, accéder à des bibliothèques d’apprentissage automatique et pour des opérations rapides en temps réel, Spark est le choix idéal.

Un avenir aux multiples possibilités

En seulement une décennie, Hadoop s’est imposé de manière importante dans l’industrie informatique. En effet, il a finalement rendu réelle la possibilité d’analyser des données. De l’analyse des visites de sites à la détection des fraudes en passant par les applications bancaires, ses applications sont diverses.

Avec Talend Open Studio for Big Data, il est facile d’intégrer votre configuration Hadoop dans n’importe quelle architecture de données. Talend fournit plus de connecteurs de données intégrés que n’importe quelle autre solution de gestion de données, ce qui vous permet de créer des flux de données transparents entre Hadoop et les principaux formats de fichiers (CSV, XML, Excel, etc.), systèmes de bases de données (Oracle, SQL Server, MySQL, etc.), applications d’entreprise packagées (SAP, SugarCRM, etc.), et même services de données en nuage comme Salesforce et Force.com.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.