2011-06-10 84 views
5

看起來像這樣應該很簡單;我在我們的集羣上有一組文件,集羣默認塊大小爲128MB。我有一個處理它們的流式作業,我希望流式作業創建的輸出文件使用不同的塊大小,特別是16MB。我想下面將工作:如何設置Hadoop Streaming作業生成的輸出文件的塊大小?

$ HADOOP_HOME /斌/ Hadoop的罐子$ HADOOP_HOME /的contrib /流/類Hadoop 0.20.1 + 152-streaming.jar -D dfs.block.size = 16777216 -D mapred .job.name ='Log Processor'-D mapred.reduce.tasks = 5 -D mapred.output.compress = true -D mapred.output.compression.type = BLOCK -input/production/beacon/vbox */20110609/00 /訪問日誌 - 輸出/用戶/我/ logprocess/20110609/00 /訪問日誌-mapper /斌/貓-outputformat org.apache.hadoop.mapred.SequenceFileOutputFormat

沒有愛情,在生成的文件/用戶/ me/logprocess/20110609/00/access_log全部使用128MB羣集的默認塊大小。我試過用命令中的fs.local.block.size替換dfs.block.size,結果也是一樣。任何想法如何在流式作業中控制這一點?

回答

-1

它不會是一個「確切」的塊大小,但你可以做的是設置減少的數量。這是如何工作的,即每個reducer輸出一個文件,所以如果你知道你的OUTPUT文件是128MB(輸入無關緊要),並且你希望每個輸出文件不超過16K,你可以分配8個reducer(128/16)。注:文件將可能是大致 16K每個,並且不能保證所有文件將是< 16K。

相關問題