Sto esplorando le opzioni per l'esecuzione di un'applicazione hadoop su un sistema locale.È possibile eseguire Hadoop in operazioni Pseudo-Distribuite senza HDFS?
Come con molte applicazioni, le prime versioni dovrebbero essere in grado di essere eseguite su un singolo nodo, purché sia possibile utilizzare tutti i nuclei della CPU disponibili (Sì, questo è correlato a this question). La limitazione attuale è che nei nostri sistemi di produzione abbiamo Java 1.5 e come tale siamo vincolati a Hadoop 0.18.3 come ultima versione (Vedi this question). Quindi, sfortunatamente non possiamo ancora usare this new feature.
La prima opzione è eseguire semplicemente hadoop in modalità pseudo distribuita. In sostanza: crea un cluster hadoop completo con tutto ciò che viene eseguito su esattamente 1 nodo.
Lo "svantaggio" di questo modulo è che utilizza anche un completo HDFS. Ciò significa che per elaborare i dati di input, questo deve prima essere "caricato" sul DFS ... che viene memorizzato localmente. Pertanto, questo richiede un tempo di trasferimento aggiuntivo sia per i dati di input che di output e utilizza ulteriore spazio su disco. Vorrei evitare entrambi mentre restiamo su una configurazione a nodo singolo.
Quindi stavo pensando: è possibile sovrascrivere l'impostazione "fs.hdfs.impl" e cambiarla da "org.apache.hadoop.dfs.DistributedFileSystem" in (ad esempio) "org.apache.hadoop. fs.LocalFileSystem "?
Se funziona, il cluster hadoop "locale" (che può essere costituito SOLO da un nodo) può utilizzare i file esistenti senza requisiti di archiviazione aggiuntivi e può essere avviato più rapidamente perché non è necessario caricare i file. Mi aspetto di avere ancora un job tracker e forse anche un namenode per controllare tutto.
Qualcuno ha provato prima? Può funzionare o è un'idea troppo lontana dall'uso previsto?
Oppure c'è un modo migliore per ottenere lo stesso effetto: operazione Pseudo-Distributed senza HDFS?
Grazie per i vostri approfondimenti.
EDIT 2:
Questa è la configurazione che ho creato per Hadoop 0.18.3 conf/Hadoop-site.xml con la risposta fornita da 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>
Sì, grazie. Funziona alla grande. Pubblicherò la mia configurazione dopo aver effettuato ulteriori test. –