java wordcount Hadoop: modo pseudo distribuido: la ruta de entrada no existe



wordcount hadoop jar (1)

Soy novato en Hadoop. Acabo de ejecutar mi aplicación hadoop en un modo independiente. Funcionó bien. Ahora decidí moverlo al modo pseudo distribuido. Hice los cambios de configuración como se mencionó. Se muestran fragmentos de mis archivos xml:

mi core-site.xml se ve de la siguiente manera:

<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/tmp/hadoop-onur</value>
    <description>A base for other temporary directories.</description>
   </property>

mi hdfs-site.xml es

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

y mi mapred.xml es

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

Ejecuté los scripts para start-dfs.sh y start-mapred.sh y todo comenzó bien

[email protected]-desktop:/home/vissu/Raveesh/Hadoop# start-dfs.sh 
starting namenode, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-namenode-vissu-desktop.out
localhost: starting datanode, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-datanode-vissu-desktop.out
localhost: starting secondarynamenode, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-secondarynamenode-vissu-desktop.out
[email protected]-desktop:/home/vissu/Raveesh/Hadoop# start-mapred.sh 
starting jobtracker, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-jobtracker-vissu-desktop.out
localhost: starting tasktracker, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-tasktracker-vissu-desktop.out
[email protected]-desktop:/home/vissu/Raveesh/Hadoop# 

Ahora traté de ejecutar mi aplicación: pero obtuve el siguiente error.

[email protected]-desktop:/home/vissu/Raveesh/Hadoop/hadoop-0.20.2# hadoop jar ResultAgg_plainjar.jar ProcessInputFile /home/vissu/Raveesh/VotingConfiguration/sample.txt 
ARG 0 obtained = ProcessInputFile
12/07/17 17:43:33 INFO preprocessing.ProcessInputFile: Modified File Name is /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf
Going to process map reduce jobs
12/07/17 17:43:33 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
12/07/17 17:43:34 ERROR preprocessing.ProcessInputFile: Input path does not exist: hdfs://localhost/home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf
[email protected]-desktop:/home/vissu/Raveesh/Hadoop/hadoop-0.20.2#

La aplicación inicialmente toma un archivo de una ruta, luego lo modifica y crea una muestra.txt_modf y este archivo debe ser utilizado por el marco de reducción de mapas. Cuando corría en el modo independiente, había dado el camino absoluto y, por lo tanto, estaba bien. Pero no puedo averiguar cuál es la ruta que debe especificar en la api Path para hadoop .. Si le doy el archivo, agrega el hdfs: // localhost / .. Así que no estoy seguro de cómo dar la ruta en el modo pseudo distribuido ... ¿debería simplemente asegurarme de que el archivo modificado se crea en esa ubicación?

Mi consulta es sobre cómo mencionar el camino ...

El fragmento que contiene la ruta es

        KeyValueTextInputFormat.addInputPath(conf,
                new Path(System.getProperty("user.dir")+File.separator+inputFileofhits.getName()));
        FileOutputFormat.setOutputPath(
                conf,
                new Path(ProcessInputFile.resultAggProps
                        .getProperty("OUTPUT_DIRECTORY")));

Gracias


¿Este archivo existe en HDFS? Parece que proporcionó una ruta de acceso local al archivo (los directorios de usuarios en HDFS generalmente están enrutados en / usuario en lugar de / inicio.

Puede verificar que el archivo exista en HDFS escribiendo:

#> hadoop fs -ls hdfs://localhost/home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf

Si esto no devuelve nada, es decir, el archivo no está en HDFS, puede copiar nuevamente a HDFS usando el comando hadoop fs:

#> hadoop fs -put /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf hdfs://localhost/user/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf

Tenga en cuenta que la ruta en HDFS está enraizada en / user, not / home.