dfs.block.size for local hadoop jobs?

时间:2012-03-19 16:26:43

标签: java hadoop filesize

我想使用本地文件系统模式运行hadoop单元测试...我希望看到写入磁盘的几个part-m- *文件(而不仅仅是1)。但是,由于它只是一个测试,我不想处理64M的数据(默认大小是每块大约64megs,我相信)。

在分布式模式下,我们可以使用

进行设置
dfs.block.size

我想知道有没有办法可以让我的本地文件系统写出小的部分m文件,即我的单元测试将模拟大型数据的内容与几个(虽然非常小)的文件。

2 个答案:

答案 0 :(得分:3)

假设您的输入格式可以处理可拆分文件(请参阅org.apache.hadoop.mapreduce.lib.input.FileInputFormat.isSplitable(JobContext, Path)方法),您可以修改输入拆分大小以使用多个映射器处理较小的文件(我将假设您正在使用新的API mapreduce包):

例如,如果您使用TextInputFormat(或大多数扩展FileInputFormat的输入格式),则可以调用静态util方法:

  • FileInputFormat.setMaxInputSplitSize(Job, long)
  • FileInputFormat.setMinInputSplitSize(Job, long)

long参数是以字节为单位的分割大小,因此只需设置为所需大小

在幕后,这些方法设置了以下作业配置属性:

  • mapred.min.split.size
  • mapred.max.split.size

最后请注意,某些输入格式可能会覆盖FileInputFormat.getFormatMinSplitSize()方法(默认为FileInputFormat的1个字节),所以如果你设置了一个值并且hadoop似乎忽略了它,那就好了。

最后一点 - 您是否考虑过MRUnit http://incubator.apache.org/mrunit/对MR代码的实际“单位”测试?

答案 1 :(得分:0)

尝试这样做会起作用

"Hello, this is my string, exclude thisis!"