tutorial que para necesito multinodo maquina instalar for español dummies configurar cluster hadoop mapreduce

que - maquina virtual hadoop



¿no se puede ejecutar el ejemplo de cuenta de hadoop? (4)

Estoy ejecutando el ejemplo de cuenta de hadoop en el entorno de un solo nodo en ubuntu 12.04 en vmware. estoy ejecutando el ejemplo de esta manera: -

hadoop@master:~/hadoop$ hadoop jar hadoop-examples-1.0.4.jar wordcount /home/hadoop/gutenberg/ /home/hadoop/gutenberg-output

Tengo un archivo de entrada en la siguiente ubicación:

/home/hadoop/gutenberg

y la ubicación para el archivo de salida es:

/home/hadoop/gutenberg-output

cuando ejecuto el programa de wordcount obtengo los siguientes errores:

13/04/18 06:02:10 INFO mapred.JobClient: Cleaning up the staging area hdfs://localhost:54310/home/hadoop/tmp/mapred/staging/hadoop/.staging/job_201304180554_0001 13/04/18 06:02:10 ERROR security.UserGroupInformation: PriviledgedActionException as:hadoop cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory /home/hadoop/gutenberg-output already exists org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory /home/hadoop/gutenberg-output already exists at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.j ava:137) at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:887) at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:416) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850) at org.apache.hadoop.mapreduce.Job.submit(Job.java:500) at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530) at org.apache.hadoop.examples.WordCount.main(WordCount.java:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68) at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139) at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.apache.hadoop.util.RunJar.main(RunJar.java:156) hadoop@master:~/hadoop$ bin/stop- all.sh Warning: $HADOOP_HOME is deprecated. stopping jobtracker localhost: stopping tasktracker stopping namenode localhost: stopping datanode localhost: stopping secondarynamenode hadoop@master:~/hadoop$


Elimine el archivo de salida que ya existe o salga a un archivo diferente.

(Tengo curiosidad por saber qué otras interpretaciones del mensaje de error has considerado).


Como dijo Dave (y las excepciones), su directorio de salida ya existe. O bien tiene que enviar a un directorio diferente o eliminar el existente primero, usando:

hadoop fs -rmr /home/hadoop/gutenberg-output


compruebe si hay una carpeta ''tmp'' o no.

hadoop fs -ls /

si ve la carpeta de salida o ''tmp'' elimine ambos (considerando que no hay trabajos activos en ejecución)

hadoop fs -rmr / tmp


Si ha creado su propio .jar y está intentando ejecutarlo, preste atención:

Para ejecutar su trabajo, debe haber escrito algo como esto:

hadoop jar <jar-path> <package-path> <input-in-hdfs-path> <output-in-hdfs-path>

Pero si observa más de cerca su código de controlador, verá que ha configurado arg[0] como su entrada y arg[1] como su salida ... Lo mostraré:

FileInputFormart.addInputPath(conf, new Path(args[0])); FileOutFormart.setOutputPath(conf, new Path(args[1]));

Pero, hadoop está tomando arg[0 ] como <package-path> lugar de <input-in-hdfs-path> y arg [1] como <input-in-hdfs-path> lugar de <output-in-hdfs-path>

Entonces, para que funcione, debes usar:

FileInputFormart.addInputPath(conf, new Path(args[1])); FileOutFormart.setOutputPath(conf, new Path(args[2]));

Con arg[1] y arg[2] , ¡así obtendrá las cosas correctas! :) Espero que haya sido de ayuda. Aclamaciones.