如何设置Hadoop Streaming作业生成的输出文件的块大小?

时间:2011-06-10 22:40:50

标签: streaming hadoop

似乎这应该很简单;我的集群上有一组文件,其集群默认块大小为128MB。我有一个流处理作业来处理它们,我希望流作业创建的输出文件使用不同的块大小,特别是16MB。我认为以下内容可行:

  

$ HADOOP_HOME / bin中/罐的hadoop $ HADOOP_HOME /了contrib /流/ Hadoop的0.20.1 + 152-streaming.jar -D dfs.block.size = 16777216 -D mapred.job.name = '日志处理器' - d mapred.reduce.tasks = 5 -D mapred.output.compress =真-D mapred.output.compression.type = BLOCK - 输入/生产/信标/ VBOX * / 20110609/00 /的access_log -output /用户/ ME / logprocess / 20110609/00 / access_log -mapper / bin / cat -outputformat org.apache.hadoop.mapred.SequenceFileOutputFormat

不爱,/ user / me / logprocess / 20110609/00 / access_log中生成的文件都使用128MB群集的默认块大小。我也尝试在命令中用fs.local.block.size替换dfs.block.size,结果相同。有任何想法如何在流媒体工作中控制它?

1 个答案:

答案 0 :(得分:-1)

它不是一个“精确”的块大小,但你可以做的是设置减少器的数量。这是如何工作的,每个reducer输出一个文件,所以如果你知道你的OUTPUT文件是128MB(输入是无关紧要的),并且你希望每个输出文件不超过16K,你可以分配8个reducer(128/16)。注意:文件可能每个大约 16K,并且不能保证所有文件都是< 16K。