hadoop中的块大小

时间:2015-01-25 07:39:27

标签: hadoop mapreduce

我目前正在开发一个四节点多群集。任何人都可以建议我使用适当的块大小来处理22GB的输入文件? 提前谢谢。

以下是我的效果结果: 64M - 32分钟 128M - 19.4分钟 256M - 15分钟

现在,我应该考虑将其大大增加到1GB / 2GB吗?如果这样做,请解释是否有任何问题。

修改  此外,如果性能随着20GB输入文件的块大小的增加而增加,为什么默认块大小为64MB或128MB? Kindly answer similar question over here

2 个答案:

答案 0 :(得分:1)

您将用于处理此文件的分割大小是多少?如果它略大于默认的块大小,那么我建议您将块大小更改为拆分大小值。这应该增加映射器的数据位置的机会,从而提高作业吞吐量。

分割大小由输入格式计算。

    protected long computeSplitSize(long blockSize, long minSize,
                                  long maxSize) {
    return Math.max(minSize, Math.min(maxSize, blockSize));
  }

minSize和maxSize可以使用以下配置参数进行操作,

  

mapreduce.input.fileinputformat.split.minsize

     

mapreduce.input.fileinputformat.split.maxsize

您可以在FileInputFormat类中找到详细的数据流。

答案 1 :(得分:0)

每线处理有多重?如果它只是一种" grep"那么你应该可以将块大小增加到1GB。为什么不简单地尝试一下呢?您的性能数字表示已经增加块大小的正面结果。

如果每条线需要大量的辅助处理,则考虑较小的块大小。但鉴于您已经确定的表现趋势,这是值得怀疑的。