【问题标题】:How can I set block size of output files produced by a Hadoop Streaming job?如何设置 Hadoop Streaming 作业生成的输出文件的块大小?
【发布时间】:2011-06-10 22:40:50
【问题描述】:

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

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/contrib/streaming/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=true -D mapred.output.compression.type=BLOCK -input /production/beacon/vbox*/20110609/00/access_log -output /user/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,结果相同。任何想法如何在流式作业中控制它?

【问题讨论】:

    标签: streaming hadoop


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2016-06-10
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      相关资源
      最近更新 更多