Le logiciel Apache Hadoop est un framework Open Source qui permet le traitement et le stockage distribués de grands ensembles de données par des clusters d'ordinateurs à l'aide de modèles de programmation simples. Hadoop est conçu pour passer d'un seul ordinateur à des milliers d'ordinateurs en cluster, où chaque machine fournit localement des ressources de calcul et de stockage. Hadoop peut ainsi stocker et traiter efficacement de grands ensembles de données, dont la taille peut aller de quelques gigaoctets à plusieurs pétaoctets.
Découvrez comment utiliser Dataproc pour exécuter des clusters Apache Hadoop sur Google Cloud de manière plus simple, plus économique et intégrée.
Hadoop trouve ses origines au début du World Wide Web. Alors que le Web comptait des millions, puis des milliards de pages, la recherche et l'affichage des résultats de recherche sont devenus l'un des défis les plus importants. Des start-up comme Google, Yahoo et AltaVista ont commencé à créer des frameworks pour automatiser les résultats de recherche. Un projet appelé Nutch a été conçu par les informaticiens Doug Cutting et Mike Cafarella, sur la base des premiers travaux de Google sur MapReduce (plus d'informations à ce sujet plus loin) et Google File System. Nutch a finalement été transféré vers la base logicielle Open Source Apache, avant d'être réparti entre Nutch et Hadoop. Yahoo!, où Cutting a débuté en 2006, a mis Hadoop en Open Source en 2008.
Bien que Hadoop soit parfois appelé l'acronyme de « High Availability Distributed Object Oriented Platform » (plate-forme orientée objets distribuée à haute disponibilité), il tire son nom du jouet éléphant du fils de Cutting.
Hadoop est un framework Open Source basé sur Java, qui gère le stockage et le traitement de grandes quantités de données pour les applications. Hadoop utilise un stockage distribué et un traitement parallèle pour gérer les tâches de big data et d'analyse. Il divise les charges de travail en charges de travail plus petites qui peuvent être exécutées en même temps.
Le framework Hadoop principal comprend quatre modules qui fonctionnent ensemble pour former l'écosystème Hadoop:
HDFS (Hadoop Distributed File System): composant principal de l'écosystème Hadoop, HDFS est un système de fichiers distribué dans lequel les nœuds Hadoop individuels opèrent sur des données stockées dans leur stockage local. Cela supprime la latence du réseau, en fournissant un accès à haut débit aux données d'application. De plus, les administrateurs n'ont pas besoin de définir des schémas à l'avance.
Yet Another Resource Negotiator (YARN): YARN est une plate-forme qui permet de gérer les ressources de calcul dans les clusters et de les utiliser pour planifier les applications des utilisateurs. Elle assure la planification et l'allocation des ressources sur le système Hadoop.
MapReduce: MapReduce est un modèle de programmation qui permet de traiter de grands volumes de données. Dans le modèle MapReduce, les sous-ensembles d'ensembles de données plus volumineux et les instructions de traitement sont distribués à plusieurs nœuds différents, où chaque sous-ensemble est traité par un nœud en parallèle avec d'autres tâches de traitement. Après le traitement des résultats, les sous-ensembles individuels sont combinés en un ensemble de données plus petit et plus facile à gérer.
Hadoop Common: Hadoop Common inclut les utilitaires et les bibliothèques utilisés et partagés par les autres modules Hadoop.
Outre HDFS, YARN et MapReduce, l'ensemble de l'écosystème Open Source de Hadoop ne cesse d'évoluer et inclut de nombreux outils et applications qui facilitent la collecte, le stockage, le traitement, l'analyse et la gestion du big data. On y trouve Apache Pig, Apache Hive, Apache HBase, Apache Spark, Presto et Apache Zeppelin.
Hadoop permet la distribution d'ensembles de données sur un cluster de matériel basique. Le traitement s'effectue en parallèle sur plusieurs serveurs simultanément.
Les clients logiciels saisissent des données dans Hadoop. HDFS gère les métadonnées et le système de fichiers distribué. MapReduce traite et convertit ensuite les données. Enfin, YARN répartit les tâches entre le cluster de calcul.
Tous les modules Hadoop sont conçus en partant du principe de base que les défaillances matérielles de machines individuelles ou de racks de machines sont courantes et qu'elles devraient être gérées automatiquement dans le logiciel par le framework.
Évolutivité
Hadoop est un des principaux outils permettant de stocker et de traiter rapidement d'énormes quantités de données. Pour ce faire, il utilise un modèle de calcul distribué qui permet de traiter rapidement des données qui peuvent évoluer rapidement en ajoutant des nœuds de calcul.
Faible coût
En tant que framework Open Source pouvant s'exécuter sur du matériel standard et doté d'un vaste écosystème d'outils, Hadoop est une option économique pour le stockage et la gestion du big data.
Flexibilité
Hadoop offre une grande flexibilité pour le stockage des données, car celles-ci ne nécessitent pas de prétraitement avant de les stocker, ce qui signifie qu'une entreprise peut stocker autant de données qu'elle le souhaite et les utiliser ultérieurement.
Résilience
En tant que modèle de calcul distribué, Hadoop offre une tolérance aux pannes et la résilience du système. Ainsi, si l'un des nœuds matériels tombe en panne, les tâches sont redirigées vers d'autres nœuds. Les données stockées dans un cluster Hadoop sont répliquées sur les autres nœuds du système afin de contrer les éventuelles défaillances matérielles ou logicielles.
En tant que système utilisant beaucoup de fichiers, MapReduce peut s'avérer un outil difficile à utiliser pour des tâches complexes, telles que des tâches analytiques interactives. Les fonctions MapReduce doivent également être écrites en Java et nécessiter une courbe d'apprentissage intensive. L'écosystème MapReduce est assez vaste, avec de nombreux composants pour différentes fonctions, ce qui peut compliquer le choix des outils à utiliser.
La sensibilité et la protection des données peuvent poser problème quand Hadoop gère des ensembles de données aussi volumineux. Un écosystème d'outils d'authentification, de chiffrement, d'audit et de provisionnement a vu le jour afin d'aider les développeurs à sécuriser les données dans Hadoop.
Hadoop ne dispose pas de nombreux outils robustes pour la gestion et la gouvernance des données, ni pour la qualité et la standardisation des données.
Comme de nombreux domaines de la programmation, Hadoop a un pénurie de talents reconnue. Il n'est pas toujours facile de trouver des développeurs disposant des compétences Java requises pour programmer MapReduce, les systèmes d'exploitation et le matériel. En outre, MapReduce nécessite une phase d'apprentissage abrupte, ce qui rend difficile l'apprentissage rapide des nouveaux programmeurs quant aux bonnes pratiques et à l'écosystème.
Le cabinet d'études IDC a estimé que 62,4 zettaoctets de données avaient été créés ou répliqués en 2020 grâce à l'Internet des objets, aux réseaux sociaux, à l'edge computing et aux données créées dans le cloud. L’entreprise a prévu que la croissance des données de 2020 à 2025 était attendue à 23 % par an. Si toutes ces données ne sont pas enregistrées (elles sont soit supprimées après consommation, soit écrasées), les besoins en données du monde ne cessent de croître.
Hadoop dispose d'un vaste écosystème d'outils Open Source permettant d'améliorer et d'étendre les capacités du module principal. Voici quelques-uns des principaux outils logiciels utilisés avec Hadoop :
Apache Hive: entrepôt de données qui permet aux programmeurs de travailler avec des données dans HDFS à l'aide d'un langage de requête appelé HiveQL, semblable à SQL.
Apache HBase: base de données non relationnelle distribuée Open Source, souvent associée à Hadoop
Apache Pig: outil utilisé comme couche d'abstraction sur MapReduce pour analyser de grands ensembles de données et activer des fonctions telles que filtrer, trier, charger et joindre
Apache Impala: moteur de requêtes SQL Open Source à traitement massivement parallèle, souvent utilisé avec Hadoop
Apache Sqoop: application d'interface de ligne de commande permettant de transférer efficacement des données groupées entre des bases de données relationnelles et Hadoop
Apache ZooKeeper: serveur Open Source qui assure une coordination distribuée de manière fiable dans Hadoop; un service permettant "de conserver les informations de configuration, d'attribuer des noms, d'assurer une synchronisation distribuée et de fournir des services de groupe"
Apache Oozie: planificateur de workflow pour les tâches Hadoop
Voici quelques cas d'utilisation courants d'Apache Hadoop :
Analyse et big data
Une grande variété d'entreprises et d'organisations utilisent Hadoop pour la recherche, le traitement de données de production et l'analyse qui impliquent le traitement de téraoctets ou pétaoctets de données, le stockage de divers ensembles de données et le traitement de données en parallèle.
Stockage et archivage de données
Hadoop permet un stockage de masse sur du matériel standard. Il constitue donc une option de stockage à faible coût pour tous les types de données, telles que les transactions, les flux de clics ou les données de capteurs et de machines.
Lacs de données
Hadoop pouvant aider à stocker des données sans prétraitement, il peut être utilisé en complément des lacs de données, où de grandes quantités de données brutes sont stockées.
Analyse marketing
Les services marketing utilisent souvent Hadoop pour stocker et analyser des données de gestion de la relation client (CRM).
Gestion des risques
Des banques, des compagnies d'assurance et d'autres sociétés de services financiers utilisent Hadoop pour créer des modèles d'analyse et de gestion des risques.
IA et machine learning
Les écosystèmes Hadoop facilitent le traitement des données et les opérations d'entraînement de modèle pour les applications de machine learning.
Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.