我通過hadoop-streaming
Hadoop的流:減速似乎並沒有被運行時,mapred.reduce.tasks = 1
運行的基本Map Reduce
程序的Map
看起來像
import sys
index = int(sys.argv[1])
max = 0
for line in sys.stdin:
fields = line.strip().split(",")
if fields[index].isdigit():
val = int(fields[index])
if val > max:
max = val
else:
print max
我運行作爲
hadoop jar /usr/local/Cellar/hadoop/1.0.3/libexec/contrib/streaming/hadoop-streaming-1.0.3.jar -D mapred.reduce.tasks=1 -input input -output output -mapper '/Users/hhimanshu/code/p/java/hadoop-programs/hadoop-programs/src/main/python_scripts/AttributeMax.py 8' -file /Users/me/code/p/java/hadoop-programs/hadoop-programs/src/main/python_scripts/AttributeMax.py
我Hadoop in Action閱讀,mapred.reduce.tasks=1
是
由於我們沒有指定任何特定的縮減器,它將使用默認的IdentityReducer的 。顧名思義,IdentityReducer將其輸入直接通過 輸出。
當我看到我的控制檯,我看到
12/07/30 16:01:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
12/07/30 16:01:33 WARN snappy.LoadSnappy: Snappy native library not loaded
12/07/30 16:01:33 INFO mapred.FileInputFormat: Total input paths to process : 1
12/07/30 16:01:34 INFO streaming.StreamJob: getLocalDirs(): [/Users/me/app/hadoop/tmp/mapred/local]
12/07/30 16:01:34 INFO streaming.StreamJob: Running job: job_201207291003_0037
12/07/30 16:01:34 INFO streaming.StreamJob: To kill this job, run:
12/07/30 16:01:34 INFO streaming.StreamJob: /usr/local/Cellar/hadoop/1.0.3/libexec/bin/../bin/hadoop job -Dmapred.job.tracker=localhost:9001 -kill job_201207291003_0037
12/07/30 16:01:34 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201207291003_0037
12/07/30 16:01:35 INFO streaming.StreamJob: map 0% reduce 0%
12/07/30 16:01:51 INFO streaming.StreamJob: map 100% reduce 0%
但這並沒有取得任何進展,只是在後臺繼續運行。它似乎不工作,我該如何解決這個問題?
UPDATE
當
D mapred.reduce.tasks=0
我看到兩個文件part-00000
和part-00001
文件既有一行0時
D mapred.reduce.tasks=1
和-reduce 'cat'
行爲是一樣的,如果減少是不做任何事當我運行
cat file | python AttibuteMax.py 8
我得到868
這意味着D mapred.reduce.tasks=0
和cat file | python AttributeMax.py 8
也不會產生相同的輸出(但他們應該吧?)
的會是什麼行爲會造成的差異當輸入數據也是一樣的?
UPDATE 1
- 當
D mapred.reduce.tasks=0
我看到4個文件part-00000
,part-00001
,part-00002
和part-00002
使用單線268,706,348,868分別 - 和當我運行
$ cat ~/Downloads/hadoop/input/apat63_99.txt | python ../../../src/main/python_scripts/AttributeMax.py 8 | cat
我看到所需的輸出爲868
@保羅你好,我想你說的是什麼,併發布了更新,讓我知道你認爲會導致這個問題?非常感謝 – daydreamer 2012-07-31 13:00:22
嗯......你確定你的本地磁盤上的「文件」與你傳遞給流式作業的輸入相同嗎?如果你做了像「hadoop fs -text | python AttributeMax.py 8」 –
2012-07-31 13:07:11
我剛加了'UPDATE 1',好像地圖工作正常現在 – daydreamer 2012-07-31 13:09:48