Question

J'explorer les options pour l'exécution d'une application Hadoop sur un système local.

Comme de nombreuses applications les premières versions devraient être en mesure de fonctionner sur un seul noeud, tant que nous pouvons utiliser tous les cœurs de processeur disponibles (Oui, cela est lié à ce question). La limitation actuelle est que sur nos systèmes de production, nous avons Java 1.5 et en tant que tels, nous sommes liés à Hadoop 0.18.3 comme la dernière version (voir cette question ). Donc, malheureusement, nous ne pouvons pas utiliser cette nouvelle fonctionnalité encore .

La première option consiste à exécuter simplement Hadoop en mode pseudo distribué. Pour l'essentiel:. Créer un cluster complet Hadoop avec tout ce qui s'y exécute sur exactement 1 nœud

Le « inconvénient » de ce formulaire est qu'il utilise aussi une HDFS à part entière. Cela signifie que, afin de traiter les données d'entrée présente doit d'abord être « téléchargés » sur la DFS ... qui est stocké localement. Donc, cela prend du temps de transfert supplémentaire de deux données d'entrée et de sortie et utilise l'espace disque supplémentaire. Je voudrais éviter ces deux pendant que nous restons sur une configuration de noeud.

Je Pensais: Est-il possible de passer outre le réglage « fs.hdfs.impl » et changer de « org.apache.hadoop.dfs.DistributedFileSystem » dans (par exemple) « org.apache.hadoop.fs .LocalFileSystem "?

Si cela fonctionne le cluster Hadoop « local » (qui peut seulement consister en un nœud) peut utiliser les fichiers existants sans aucune exigence de stockage supplémentaires et il peut commencer plus rapidement parce qu'il n'y a pas besoin de télécharger les fichiers. Je me attends d'avoir encore un emploi et suivi des tâches et peut-être aussi un NameNode pour contrôler l'ensemble.

Quelqu'un at-il essayé cela avant? Peut-il travailler ou est cette idée beaucoup trop loin l'utilisation prévue?

Ou est-il une meilleure façon d'obtenir le même effet: opération pseudo-sans Distribuée HDFS

Merci pour vos idées.


EDIT 2:

est le I config créé pour Hadoop 0.18.3 conf / Hadoop-site.xml en utilisant la réponse fournie par bajafresh4life.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>file:///</value>
  </property>

  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:33301</value>
  </property>

  <property>
    <name>mapred.job.tracker.http.address</name>
    <value>localhost:33302</value>
    <description>
    The job tracker http server address and port the server will listen on.
    If the port is 0 then the server will start on a free port.
    </description>
  </property>

  <property>
    <name>mapred.task.tracker.http.address</name>
    <value>localhost:33303</value>
    <description>
    The task tracker http server address and port.
    If the port is 0 then the server will start on a free port.
    </description>
  </property>

</configuration>
Était-ce utile?

La solution

Oui, cela est possible, bien que j'utilise 0.19.2. Je ne suis pas trop familier avec 0.18.3, mais je suis sûr qu'il ne devrait pas faire une différence.

Assurez-vous que fs.default.name est réglé sur la valeur par défaut (ce qui est file:///), et mapred.job.tracker est réglé sur le point où votre JobTracker est hébergé. Ensuite, démarrez votre daemons en utilisant bin / start-mapred.sh. Vous n'avez pas besoin pour démarrer le NameNode ou DataNodes. À ce stade, vous devriez être en mesure d'exécuter votre map / reduce des travaux en utilisant bin/hadoop jar ...

Nous avons utilisé cette configuration pour exécuter Hadoop sur un petit groupe de machines utilisant un appareil Netapp monté par NFS.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top