Vous avez déjà très certainement tous entendu parler de Big Data. Cela en référence à la quantité astronomique de données disponibles sur le Web. Les ingénieurs en charge de ce projet développent des systèmes toujours plus efficaces afin de pouvoir traiter et stocker ces données efficacement. Aujourd’hui, les données peuvent atteindre plusieurs Petabytes ou exabytes, ce qui n’est plus exceptionnel. Les développeurs disposent de plate-formes logicielles à cet égard. Cela permet de mener à bien des opérations informatiques complexes afin de les partager sur différents nœuds. Pour cela, le logiciel Apache Hadoop est largement apprécié. Ce framework sert de base pour le Big Data.

Qu’est ce que Apache Hadoop ?

Apache Hadoop est un framework logiciel open source créé en 2006.  Il permet de diviser de grands ensembles de données en blocs, répartis sur plusieurs serveurs pour le stockage et le traitement. La force de Hadoop provient d’un réseau de serveurs – connu sous le nom de cluster Hadoop – qui peut traiter les données beaucoup plus rapidement qu’une seule machine. L’Apache Software Foundation à but non lucratif soutient le projet Apache Hadoop open source gratuit, mais les versions commerciales sont devenues très courantes.

 Le cluster Hadoop améliore la capacité de stockage et la redondance des fichiers en répartissant les données sur plusieurs serveurs.

Différentes variantes de ce framework sont disponibles aujourd’hui. En effet, si vous allez chez Cloudera par exemple, il existe une instance Hadoop se nommant “Enterprise ready”. Cette instance est open-source. beaucoup de produits similaires sont également disponible chez d’autres fournisseurs tels que Hortonworks et Teradata.

Structure Hadoop: construction et éléments de base

Lorsque l’on parle de Hadoop, il s’agit souvent de tout l’écosystème du logiciel dont il est question. Ce framework dispose de nombreuses extensions comme Pig, Chkwa et biens d’autres. Cela permet de travailler sur des quantités de données très importantes. Tous ces projets sont soutenus par Apache Software Foundation.

Ce que nous appelons le Core Hadoop est la base de cet écosystème au même titre que le code Debian est la base de l’écosystème Debian. Ces éléments sont présents dans toutes les versions de base Hadoop Common, Hadoop Distributed File System (HDFS) et MapReduce Engine.

Hadoop Common

Le paquet Hadoop Common est considéré comme la base / le noyau du framework. Il fournit des services essentiels et des processus de base tels que l’abstraction du système d’exploitation sous-jacent et de son système de fichiers. Hadoop Common contient également les fichiers Java Archive (JAR) et les scripts nécessaires au démarrage de Hadoop. Le package Hadoop Common fournit également du code source et de la documentation, ainsi qu’une section de contribution qui inclut différents projets de la communauté Hadoop.

Hadoop Distributed File System (HDFS)

HDFS présente de nombreuses similitudes avec d’autres systèmes de fichiers distribués, mais est différent à plusieurs égards. Une différence notable est le modèle HDFS (write-once-read-many) qui assouplit les exigences de contrôle des accès concurrents, simplifie la cohérence des données et permet un accès à haut débit.

Un autre attribut unique de HDFS est le point de vue selon lequel il est généralement préférable de localiser la logique de traitement à proximité des données plutôt que de déplacer les données vers l’espace d’application.

Vous pouvez accéder à HDFS de différentes manières. HDFS fournit une interface de programmation d’application (API) Java ™ native et un wrapper de langage C natif pour l’API Java. En outre, vous pouvez utiliser un navigateur Web pour parcourir les fichiers HDFS.

HDFS est composé de groupes de nœuds interconnectés où résident les fichiers et les répertoires. Un cluster HDFS est constitué d’un seul noeud, appelé NameNode , qui gère l’espace de noms du système de fichiers et régule l’accès des clients aux fichiers. De plus, les nœuds de données ( DataNodes ) stockent les données sous forme de blocs dans les fichiers.

MapReduce Engine

En plus de HDFS, MapReduce fait partie intégrante de Hadoop. Des outils tels que Pig et Hive sont construits sur le moteur MapReduce.Donc, pour apprendre ces outils, il est important d’apprendre d’abord MapReduce.

Les travaux MapReduce sont écrits en Java. Les développeurs ayant des compétences Java pourront comprendre plus rapidement MapReduce que les les développeurs maîtrisant d’autres langages. Les étapes de la soumission de travail MapReduce impliquent: valider les spécifications d’entrée et de sortie du travail MapReduce, calculer les divisions d’entrée pour le travail MapReduce. 

Le traqueur de travaux est un service Hadoop MapReduce qui affecte des tâches MapReduce aux nœuds de données du cluster Hadoop. Le traqueur de travaux s’exécute sur le noeud de nom et contient l’algorithme qui détermine quel noeud de données reçoit quelle partie de traitement du travail MapReduce.

Depuis la sortie de la version 2.3 de Hadoop, MapReduce a été retravaillé. Grâce à cela, le framework offre désormais de nombreuses fonctionnalités supplémentaires.

YARN / MapReduce 2.0

MapReduce a subi une refonte complète et CDH 5 inclut maintenant MapReduce 2.0 (MRv2).L’idée fondamentale de l’architecture YARN de MRv2 est de diviser les deux responsabilités principales de JobTracker – gestion des ressources et ordonnancement des tâches – en démons distincts: un ResourceManager global (RM) et des ApplicationMasters (AM) par application. Avec MRv2, ResourceManager (RM) et NodeManagers (NM) par nœud forment le cadre de calcul des données. Le service ResourceManager remplace efficacement les fonctions de JobTracker et NodeManagers s’exécute sur les nœuds esclaves au lieu des démons TaskTracker. L’ ApplicationMaster par application est, en effet, une bibliothèque spécifique au framework chargé de négocier des ressources depuis le ResourceManager et de travailler avec le (s) NodeManager (s) pour exécuter et surveiller les tâches.

L’écosystème Apache Hadoop : les composants d’extension optionnels

L’écosystème Hadoop prend en charge beaucoup d’extensions dont voici les plus populaires actuellement:

    • Ambari: Gestion Web intuitive et conviviale de Hadoop UI soutenue par ses API RESTful. Apache Ambari a été offert par l’équipe de Hortonworks à l’ASF. C’est une interface puissante pour Hadoop et d’autres applications typiques de l’écosystème Hadoop.
    • Avro: Apache Avro est un framework pour la modélisation, la sérialisation et la réalisation d’appels de procédure distante (RPC). Les données Avro sont décrites par un schéma, et une caractéristique intéressante est que le schéma est stocké dans le même fichier que les données qu’il décrit, donc les fichiers sont auto-descriptifs. Avro ne nécessite pas de génération de code. Ce framework peut rivaliser avec d’autres outils similaires tels que: Apache Thrift, Google Protocol Buffers, ZeroC ICE, etc.
    • Pig: Pig fournit un moteur permettant d’exécuter des flux de données en parallèle sur Hadoop. Il comprend un langage, Pig Latin, pour exprimer ces flux de données.  Le porc fonctionne sur Hadoop. Il utilise à la fois le système de fichiers distribué Hadoop, HDFS et le système de traitement Hadoop, MapReduce. Pig utilise MapReduce pour exécuter tout son traitement de données. Il compile les scripts Pig Latin que les utilisateurs écrivent dans une série d’un ou plusieurs travaux MapReduce qu’il exécute ensuite. Pig Latin est différent de la plupart des langages de programmation que vous avez vus. Il n’y a pas d’instructions “if” ou de boucles dans Latin Pig. En effet, les langages de programmation traditionnels procéduraux et orientés objet décrivent le flux de contrôle et le flux de données est un effet secondaire du programme. Pig Latin se concentre plutôt sur le flux de données.

Hadoop en entrepise

En effet, Hadoop est spécialement conçu pour le Big Data. Beaucoup de grandes entreprises utilisent cela comme par exemple Adobe, AOL, eBay et Facebook pour ne citer qu’eux. Outre le fait de pouvoir stocker facilement de nombreuses données sur des structures décentralisées, Hadoop se démarque par sa fiabilité mais aussi par le nombre d’extensions disponibles