2014-12-05 34 views
0

嗨,我剛剛開始使用Hadoop並運行我的第一個mapreduce作業。我已經使用python來構建地圖並減少腳本,並且我測試了它並且它的工作正常,但是當我嘗試在hadoop上運行它時,它返回錯誤。python mapreduce作業返回錯誤

以下是我在終端

/home/maitreyee/hadoop$ bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar  -mapper /usr/bin/python mapper1.py -reducer /usr/bin/python reducer1.py -input /user/hduser/gutenberg/* -output /user/hduser/gutenberg-output1 

及以下的錯誤輸入的命令出現

Warning: $HADOOP_HOME is deprecated. 
packageJobJar: [/app/hadoop/tmp/hadoop-unjar3238940252334854546/] []  /tmp/streamjob4553487258055690616.jar tmpDir=null 
14/12/05 11:53:29 INFO streaming.StreamJob: Running job: job_201412050953_0004 
14/12/05 11:53:29 INFO streaming.StreamJob: To kill this job, run: 
14/12/05 11:53:29 INFO streaming.StreamJob: /home/maitreyee/hadoop/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:54311 -kill job_201412050953_0004 
14/12/05 11:53:29 INFO streaming.StreamJob: Tracking URL: http://localhost:50030 /jobdetails.jsp?jobid=job_201412050953_0004 
14/12/05 11:53:30 INFO streaming.StreamJob: map 0% reduce 0% 
14/12/05 11:54:54 INFO streaming.StreamJob: map 100% reduce 100% 
14/12/05 11:54:54 INFO streaming.StreamJob: To kill this job, run: 
14/12/05 11:54:54 INFO streaming.StreamJob: /home/maitreyee/hadoop/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:54311 -kill job_201412050953_0004 
14/12/05 11:54:54 INFO streaming.StreamJob: Tracking URL: http://localhost:50030 /jobdetails.jsp?jobid=job_201412050953_0004 
14/12/05 11:54:54 ERROR streaming.StreamJob: Job not successful. Error: # of failed Map   Tasks exceeded allowed limit. FailedCount: 1. LastFailedTask:  task_201412050953_0004_m_000000 
14/12/05 11:54:54 INFO streaming.StreamJob: killJob... 
Streaming Command Failed! 

請提示了什麼錯誤,以及如何能夠得到解決。

回答

0

它感覺只是一個時間問題。在hadoop中運行作業之前,確保hadoop通過jps運行正常,並保持系統更新並檢查ssh連接。然後按照下面的命令編寫命令在hadoop(我使用Ubuntu 12.04 LTS和Hadoop 1.2.1)中運行簡單的python map reduce作業。

[email protected]:~/hadoop$ bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -input /user/hduser/gutenberg/gutenberg/ -output /user/hduser/op4 -mapper /home/hduser/hadoop/mapper1.py -file /home/hduser/hadoop/mapper1.py -reducer /home/hduser/hadoop/reducer1.py -file /home/hduser/hadoop/reducer1.py 

終端命令的上方形成小的解釋: 自一個數據流作業,所以我們先放流的hadoop的jar文件的位置,則該輸入文件的位置,隨後輸出文件的位置(嘗試給出一個唯一的名稱並且應該存在於hdfs中),然後我們告訴hadoop我們想要執行什麼功能,以及它將在哪裏執行(map和reduce tasks),然後是文件屬性來告訴腳本的位置。 (在使用腳本語言的情況下)。

如果還有任何疑問,請讓我知道。