IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ HadoopConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 78, dernière mise à jour : 10 août 2020  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs et de la traduction de la documentation officielle d'Hadoop.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.

L'équipe Big Data

SommaireGénéralités (17)
précédent sommaire suivant
 

Hadoop est un framework open source, écrit en Java, pour le stockage distribué et le traitement distribué de gros volumes de données structurées ou non structurées. Il intègre des fonctionnalités similaires à celles du système de fichiers distribué Google File System et du modèle de programmation MapReduce. Pour plus de détails, voir le tutoriel d'introduction à Apache Hadoop.

Ses composants de base sont HDFS, MapReduce et YARN. Le terme Hadoop est également utilisé pour désigner un écosystème de projets liés au framework Hadoop, pour le calcul distribué et le traitement de données à grande échelle.

Mis à jour le 10 août 2020 Michael Guilloux Mickael Baron

[Traduction de la FAQ officielle]

  1. Java 1.6.x ou plus, de préférence celle fournie par Oracle (voir HadoopJavaVersions).
  2. Linux et Windows sont les systèmes d'exploitation pris en charge, mais Hadoop fonctionne aussi avec BSD, Mac OS / X (Windows nécessite l'installation de Cygwin).

Mis à jour le 18 août 2014 Lolo78

[Traduction de la FAQ officielle]

Hadoop a été testé avec succès sur des clusters de serveurs atteignant 4000 nœuds. Les performances de tri sur 900 nœuds sont bonnes (le tri de 9 To de données sur 900 nœuds prend environ 1,8 heure) et peuvent être améliorées en utilisant ces valeurs de configuration non standard :

  • dfs.block.size = 134217728 ;
  • dfs.namenode.handler.count = 40 ;
  • mapred.reduce.parallel.copies = 20 ;
  • mapred.child.java.opts = -Xmx512m ;
  • fs.inmemory.size.mb = 200 ;
  • io.sort.factor = 100 ;
  • io.sort.mb = 200 ;
  • io.file.buffer.size = 131072.


Les performances de tri sur 1400 nœuds et 2000 nœuds sont également très honorables : le tri 14 téraoctets de données sur 1400 nœuds prend 2,2 heures ; le tri de 20 téraoctets sur 2000 nœuds prend 2,5 heures. Les valeurs de configuration modifiées sont les suivantes :
  1. mapred.job.tracker.handler.count = 60 ;
  2. mapred.reduce.parallel.copies = 50 ;
  3. tasktracker.http.threads = 50 ;
  4. mapred.child.java.opts = -Xmx1024m.

Mis à jour le 18 août 2014 Lolo78

[Traduction de la FAQ officielle]

Des ordinateurs à doubles processeurs ou doubles cœurs ayant 4 à 8 Go de mémoire vive de type ECC (Error Checking & Correction memory), selon les besoins. Les ordinateurs doivent être des PC de haut de gamme, afin d'obtenir le meilleur rapport performance/prix ; ils coûtent typiquement entre la moitié et les deux tiers d'un serveur de production applicatif habituel, mais ce ne sont pas des ordinateurs de type bureautique. L'ordre de prix se situe entre 2000 et 5000 dollars. Pour plus de détails, voir la page Machinescaling.

Mis à jour le 18 août 2014 Lolo78

[Traduction de la FAQ officielle]

La réponse s'applique également au cas où une machine s'est arrêtée brutalement et a redémarré, et vous voulez qu'elle rejoigne le cluster Hadoop. Il n'y a pas besoin d'arrêter et/ou de redémarrer l'ensemble du cluster.

Il faut d'abord ajouter le nom DNS du nouveau nœud dans le fichier de configuration des esclaves sur le nœud maître.

Ensuite, se connecter au nouveau nœud esclave et exécuter les commandes suivantes :

Code : Sélectionner tout
1
2
3
$ cd path/to/hadoop
$ bin/hadoop-daemon.sh start datanode
$ bin/hadoop-daemon.sh start tasktracker
Si vous utilisez la fonctionnalité dfs.include/mapred.include, il vous faudra encore ajouter le nœud au fichier de configuration dfs.include/mapred.include file et exécuter les commandes de mise à jour hadoop dfsadmin -refreshNodes et hadoop mradmin -refreshNodes, afin que le NameNode et le JobTracker soient informés de l'ajout du nouveau nœud.

Mis à jour le 18 août 2014 Lolo78

[Traduction de la FAQ officielle]

Il existe des interfaces Web pour connaître à la fois l'état d'exécution des Jobs MapReduce (JobTracker) et l'état des données (NameNode). Ces interfaces Web sont accessibles par défaut via les adresses suivantes : http://job.tracker.addr:50030/ et http://name.node.addr:50070/.

La page d'état du JobTracker affichera l'état de tous les nœuds, ainsi que les queues d'exécution et l'état de tous les Jobs et tâches en cours. La page d'état NameNode affichera l'état de tous les nœuds ainsi que la quantité d'espace libre ; elle permet également de parcourir le système de fichiers distribué (DFS) via le Web.

Vous pouvez également consulter les données de base sur l'état de santé du cluster HDFS à l'aide de la commande suivante :

Code : Sélectionner tout
$ bin/hadoop dfsadmin -report

Mis à jour le 18 août 2014

[Traduction de la FAQ officielle]

Tout dépendra du type de traitements que vous exécutez sur le cluster Hadoop. Un calcul approximatif pourrait être quelque chose comme ceci.

60 nœuds au total sur deux baies, soit 30 nœuds par baie. Chaque nœud devrait pouvoir traiter environ 100 Mo/s de données pour un tri dans lequel les données intermédiaires ont la même taille que les données en entrée, ce qui signifie que chaque nœud doit traiter 100 Mo/s de données par seconde. Au total, chaque baie produit approximativement 3 Go/s. Cependant, compte tenu de la réduction (opération de type reduce) à l'intérieur d'une baie, chaque baie devra envoyer 1,5 Go/s de données aux réducteurs fonctionnant sur l'autre baie. Comme la connexion est en "full duplex", cela signifie que vous aurez besoin de 1,5 Go de bande passante entre les châssis pour un traitement théorique. Soit un total de 12 Go/s.

Cependant, les calculs ci-dessus sont probablement quelque peu pessimistes. Une grande partie des traitements ont un taux de réduction de données meilleur durant la phase de Map, par exemple en raison d'un bon niveau de filtration/sélection dans le Mapper, ou en raison d'une utilisation efficace des Combiners. En outre, une compression intermédiaire des données peut réduire considérablement le transfert de données intermédiaires. Enfin, bien que vos disques soient capables de fournir un débit théorique de 100 Mo en continu, il serait plutôt rare de voir une exécution d'un Job MapReduce nécessitant un tel débit. Ainsi, les estimations précédentes sont trop élevées d'au moins un facteur de 2.

En définitive, la réponse est simple : 4-6 Go/s est probablement très bien pour les Jobs les plus courants. Si vous souhaitez plus de sécurité, de nombreux switch's bon marché peuvent fonctionner dans une configuration dite "stacked", où la bande passante entre switch's est essentiellement interne au switch. Ceci pourrait nous amener à 96 nœuds avec une bonne marge de sécurité. De nombreux switch's bon marché ayant des débits de l'ordre du Go ont aussi un ou deux ports 10GigE (Go/s sur un switch Ethernet (fonctionnement en câble de cuivre ou fibre optique)) qui peuvent être utilisés pour se connecter les uns aux autres ou à un noyau de 10 GE (matériel fonctionnant sur du 10 gigaoctets Ethernet par seconde).

Mis à jour le 19 août 2014

[Traduction de la FAQ officielle]

Si vous avez rencontré des difficultés à utiliser Hadoop, et que vous avez trouvé une solution (peut-être à l'aide des listes de diffusion), partagez cette connaissance avec les autres utilisateurs en proposant des entrées à cette FAQ.

Si vous pensez avoir trouvé quelque chose qui pourrait améliorer Hadoop, consultez la page HowtoContribute de façon à proposer un patch.

Mis à jour le 19 août 2014

[Traduction de la FAQ officielle]

Un répertoire dans lequel un utilisateur peut écrire est nécessaire, et ce sans interférer avec les autres utilisateurs. Si le nom de l'utilisateur ne figurait pas dans le chemin, alors différents utilisateurs devraient utiliser le même répertoire tmp. Cela pourrait poser des problèmes d’autorisation ou de privilèges, si le masque des privilèges par défaut d'un utilisateur n'autorise pas les droits en écriture des autres utilisateurs. Cela pose également le problème de conflits entre utilisateurs si, par exemple, deux utilisateurs manipulent le système HDFS en même temps (cas du formatage).

Mis à jour le 19 août 2014

[Traduction de la FAQ officielle]

Hadoop utilisait des scripts (par exemple, start-mapred.sh et start-dfs.sh) s'appuyant sur SSH pour démarrer ou arrêter des services Unix et autres utilitaires. Le framework Hadoop n'a pas besoin de SSH. Les services (e.g. TaskTracker et DataNode) peuvent être démarrés manuellement sur chaque nœud sans l'aide des scripts.

Mis à jour le 25 août 2014

[Traduction de la FAQ officielle]

Un détail de toutes les listes de diffusion est disponible à l'adresse suivante : http://hadoop.apache.org/mailing_lists.html. De manière générale :

  • générale s'intéresse aux aspects administratifs et marketing de Hadoop (par exemple un communiqué de presse) ;
  • user@hadoop.apache.org souhaitant des informations sur les différents composants du framework ;
  • [i]la liste de diffusion de type *-dev s'adresse aux personnes qui contribuent au code du framework. Par hasard, si vous mettez en œuvre un nouveau système de fichiers et avez besoin d'informations sur l'API FileSystem, hdfs-dev, est la liste de diffusion qui vous concerne.

Mis à jour le 29 août 2014

Dans sa version 1.x, Hadoop est principalement composé de deux couches, à savoir HDFS et MapReduce.

HDFS (Hadoop Distributed File System) est la couche de stockage de Hadoop. Il facilite le stockage et la gestion de fichiers volumineux (dans l'ordre du gigabit ou térabit, voire pétabit) en les scindant en plusieurs morceaux (appelés blocks) répartis sur plusieurs machines d'un réseau (on parle de cluster).

MapReduce est un moteur de traitement distribué de données. C'est d'ailleurs le seul moteur pris en charge dans Hadoop 1 où il joue également le rôle de gestionnaire des ressources du cluster : la gestion des ressources et le traitement des données ne sont pas dissociés.

Hadoop 2 introduit une autre couche logicielle appelée YARN (Yet Another Resource Negociator). Comme son nom l'indique, il s'agit d'un autre gestionnaire de ressources. YARN sépare la gestion des ressources du traitement des données. Il remplace donc MapReduce dans sa fonction de gestionnaire de ressources et MapReduce devient juste une option parmi bien d'autres pour le traitement des données. YARN élimine en effet la dépendance d'Hadoop à MapReduce en prenant en charge des moteurs d'exécution supplémentaires (Spark, Storm, Tez, Samza, etc.) que vous pouvez utiliser pour traiter les données stockées sur HDFS, en lieu et place de MapReduce.

Mis à jour le 10 août 2020 Michael Guilloux

La localité des données fait référence à la possibilité de traiter les données localement, c'est-à-dire là où elles sont stockées. Elle s'oppose à l'approche classique dans laquelle les données sont transférées au programme client. Cette dernière approche n'est pas efficace, voire impossible dans un contexte big data. En effet, les performances réseau seront mises à l'épreuve dans le cas de transfert de gros volumes de données.

Mis à jour le 10 août 2020 Michael Guilloux

Dans Hadoop, les blocs de données sont traités indépendamment en parallèle entre les DataNodes. Si vous voulez donc accéder à un fichier depuis n'importe quel DataNode, vous devez le mettre dans le cache distribué, un mécanisme fourni par le framework MapReduce pour rendre des fichiers accessibles à tous les nœuds du cluster. Il peut mettre en cache des fichiers texte en lecture seule, des archives, des fichiers JAR, etc. Une fois qu'un fichier est mis en cache pour un job MapReduce, Hadoop le rendra disponible sur chaque DataNode où les tâches map/reduce sont en cours d'exécution.

Mis à jour le 10 août 2020 Michael Guilloux

Les démons sont des processus qui s'exécutent en arrière-plan. Il existe principalement 5 démons qui sont exécutés dans un cluster Hadoop (version 2 et ultérieure) :

  • le NameNode s'exécute sur le nœud maître pour HDFS. C'est lui qui maintient et gère les blocs de données présents dans les DataNodes ;
  • le DataNode fonctionne sur des nœuds travailleurs pour HDFS. C’est lui qui est chargé de stocker les données sous forme de blocs ;
  • le ResourceManager s'exécute sur le nœud maître pour YARN. Il gère les ressources et planifie l’exécution des tâches sur YARN ;
  • le NodeManager s'exécute sur les nœuds travailleurs pour YARN. Il est responsable de l’exécution des tâches sur les DataNodes ;
  • l’ApplicationMaster est un démon de YARN qui peut être exécuté sur n’importe quel nœud du cluster. Il est chargé de négocier des ressources avec le ResourceManager et travaille avec les NodeManagers pour exécuter et surveiller les tâches.

En dehors de ces démons, il peut en avoir d'autres pour un NameNode secondaire, un NameNode de secours, etc.

Mis à jour le 10 août 2020 Michael Guilloux

Hadoop peut être utilisé en trois modes : autonome, pseudo-distribué et distribué.

Le mode autonome ou local utilise le système de fichiers local pour les opérations d'entrée et de sortie, et ne prend pas en charge HDFS. Il s'agit du mode par défaut et il ne nécessite aucune configuration. Tous les démons s'exécutent dans un seul processus Java. Il n’est recommandé qu’à des fins de tests.

Dans le mode pseudo-distribué, Hadoop fonctionne sur un seul nœud, comme dans le mode local. La différence est que chaque démon s'exécute dans un processus Java distinct et vous devez également configurer Hadoop. Vous pouvez utiliser ce mode si vous êtes en phase de développement ou de test.

Dans le mode distribué, Hadoop fonctionne sur plusieurs machines et chaque démon s'exécute sur un nœud distinct. C’est le mode à utiliser dans un environnement de production.

Mis à jour le 10 août 2020 Michael Guilloux

Les principaux fichiers de configuration dans Hadoop sont les fichiers core-site.xml, hdfs-site.xml, mapred-site.xml et yarn-default.xml.

Le fichier core-site.xml contient les paramètres de configuration pour le noyau Hadoop tels que les paramètres d'entrées/sorties qui sont communs à HDFS et MapReduce. C'est ce fichier qui permet d'indiquer le nom d'hôte (Hostname) et le numéro de port du système HDFS.

Le fichier hdfs-site.xml permet de configurer les démons HDFS (NameNode, DataNode, NameNode secondaire). La configuration se fait grâce aux propriétés suivantes :

  • dfs.name.dir, qui permet d'indiquer l'emplacement où le NameNode va stocker les métadonnées (FsImage et EditLogs) ;
  • dfs.data.dir, qui permet d'indiquer l'emplacement où les DataNodes stockent les données ;
  • fs.checkpoint.dir, qui indique le répertoire dans lequel le NameNode secondaire stocke les images temporaires du système de fichier (FsImage) et les journaux de modification (EditLogs).
Le fichier de configuration hdfs-site.xml permet également de spécifier le facteur de réplication des blocs grâce à la propriété dfs.replication.

Le fichier mapred-site.xml est utilisé pour la configuration de MapReduce, et le fichier yarn-default.xml pour spécifier les paramètres de configuration pour le NodeManager et le ResourceManager.

Mis à jour le 10 août 2020 Michael Guilloux

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2021 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.