tutoriales example etapas comandos and python hadoop hadoop-streaming

example - python mapreduce



Error de comando de transmisiĆ³n de Hadoop con un error de Python (3)

similiar a los errores que estaba obteniendo -

Primero, en: -file mapper.py -file reducer.py -mapper mapper.py -reducer reducer.py

puede usar rutas totalmente calificadas del sistema local en el ''-file'', y luego relativo en el ''-mapper'', por ejemplo .: -file /aFully/qualified/localSystemPathTo/yourMapper.py -mapper yourMapper.py

luego: recuerde incluir ese "#! / usr / bin / python" en la parte superior de los archivos ''reducer.py'' y ''mapper.py''

finalmente,

en mi mapper.py y reducer.py, puse todas mis importaciones dentro de una función ''setup_call ()'' (vs. en el nivel ''global'' del archivo), y luego envolví eso con:

if __name__== ''__main__'': try: setup_call_andCloseOut() except: import sys, traceback, StringIO fakeeWriteable = StringIO.StringIO() traceback.print_exc(None, file=fakeeWriteable) msg = "" msg +="------------------------------------------------------/n" msg +="----theTraceback: -----------/n" msg += fakeeWriteable.getvalue() + "/n" msg +="------------------------------------------------------/n" sys.stderr.write(msg) #end

en ese punto, pude usar el registro de trabajo web de hadoop (esos enlaces http: // en su mensaje de error) y navegar para ver los mensajes ''stderr'' ... (de la lógica del núcleo real)

Estoy seguro de que hay otras maneras más concisas de hacer todo esto, pero esto fue a la vez semánticamente claro y suficiente para mis necesidades inmediatas

buena suerte..

Soy un recién llegado a Ubuntu, Hadoop y DFS pero he logrado instalar una instancia de hadoop de un nodo en mi máquina ubuntu local siguiendo las instrucciones publicadas en Michael-Noll.com aquí:

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/#copy-local-example-data-to-hdfs

http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/

Actualmente estoy atascado en ejecutar el ejemplo de conteo de palabras básico en Hadoop. No estoy seguro de si el hecho de que he estado ejecutando Hadoop fuera de mi directorio de descargas hace una gran diferencia, pero he intentado explorar mis ubicaciones de archivos para las funciones mapper.py y reducer.py colocándolas en el directorio de trabajo de Hadooop sin éxito. He agotado todas mis investigaciones y todavía no puedo resolver este problema (es decir, usando parámetros de archivos, etc.) Realmente agradezco cualquier ayuda por adelantado y espero enmarcar esta pregunta de una manera que pueda ayudar a otros que recién están comenzando con Python + Hadoop.

Probé mapper.py y reduce.py de forma independiente y ambos funcionan bien cuando se me solicitan datos de texto de juguete del shell bash.

Salida de mi Bash Shell:

hduser@chris-linux:/home/chris/Downloads/hadoop$ bin/hadoop jar /home/chris/Downloads/hadoop/contrib/streaming/hadoop-streaming-1.0.4.jar -file mapper.py -file reducer.py -mapper mapper.py -reducer reducer.py -input /user/hduser/gutenberg/* -output /user/hduser/gutenberg-output3 Warning: $HADOOP_HOME is deprecated. packageJobJar: [mapper.py, reducer.py, /app/hadoop/tmp/hadoop-unjar4681300115516015516/] [] /tmp/streamjob2215860242221125845.jar tmpDir=null 13/03/08 14:43:46 INFO util.NativeCodeLoader: Loaded the native-hadoop library 13/03/08 14:43:46 WARN snappy.LoadSnappy: Snappy native library not loaded 13/03/08 14:43:46 INFO mapred.FileInputFormat: Total input paths to process : 3 13/03/08 14:43:47 INFO streaming.StreamJob: getLocalDirs(): [/app/hadoop/tmp/mapred/local] 13/03/08 14:43:47 INFO streaming.StreamJob: Running job: job_201303081155_0032 13/03/08 14:43:47 INFO streaming.StreamJob: To kill this job, run: 13/03/08 14:43:47 INFO streaming.StreamJob: /home/chris/Downloads/hadoop/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:54311 -kill job_201303081155_0032 13/03/08 14:43:47 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201303081155_0032 13/03/08 14:43:48 INFO streaming.StreamJob: map 0% reduce 0% 13/03/08 14:44:12 INFO streaming.StreamJob: map 100% reduce 100% 13/03/08 14:44:12 INFO streaming.StreamJob: To kill this job, run: 13/03/08 14:44:12 INFO streaming.StreamJob: /home/chris/Downloads/hadoop/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:54311 -kill job_201303081155_0032 13/03/08 14:44:12 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201303081155_0032 13/03/08 14:44:12 ERROR streaming.StreamJob: Job not successful. Error: JobCleanup Task Failure, Task: task_201303081155_0032_m_000003 13/03/08 14:44:12 INFO streaming.StreamJob: killJob... Streaming Command Failed!

Mi HDFS está ubicado en / app / hadoop / tmp que, creo, también es el mismo que mi directorio / user / hduser en mi instancia de hadoop.

Los datos de entrada se encuentran en / user / hduser / gutenberg / * (3 archivos de texto plano UTF) La salida se configura para ser creada en / user / hduser / gutenberg-output


Eche un vistazo a los registros en la siguiente ruta (según la información proporcionada anteriormente):

$HADOOP_HOME$/logs/userlogs/job_201303081155_0032/task_201303081155_0032_m_000003

Esto debería proporcionarle cierta información sobre esa tarea específica.

Los registros suministrados por Hadoop son bastante buenos, solo hace falta investigar un poco para encontrar la información :)


Lo siento por la respuesta tardía.

Debe asegurarse de que sus archivos (asignador y reductor) sean ejecutables por el usuario de hadoop y contengan el Shebang en la primera línea.

Eso resolverá su problema.