【问题标题】:dfs.block.size for Local hadoop jobs ?dfs.block.size 用于本地 hadoop 作业?
【发布时间】:2012-03-19 16:26:43
【问题描述】:

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

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

dfs.block.size

我想知道是否有一种方法可以让我的本地文件系统将小部分 m 文件写出,即我的单元测试将模拟包含多个(尽管非常小的)文件的大规模数据的内容。

【问题讨论】:

    标签: java hadoop filesize


    【解决方案1】:

    假设您的输入格式可以处理可拆分文件(请参阅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 代码进行实际“单元”测试?

    【讨论】:

      【解决方案2】:

      尝试这样做会奏效

      hadoop fs -D dfs.block.size=16777216 -put 25090206.P .
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        • 2017-10-31
        • 1970-01-01
        • 2014-01-13
        相关资源
        最近更新 更多