MultitpleOutputFormat - Hadoop



我对map reduce有点陌生,所以如果有人能指导我回答以下问题,那将是一个很棒的

  1. 我使用了多重输出格式来写分离输出文件在地图减少。让我们假设我的输入文件有Fruits和Vegetables,因此将其拆分为两个文件。水果和蔬菜如下。

    水果-00000,蔬菜-00000,零件-00000

    我对将运行多少减速器感到困惑?我知道默认情况下减速器的数量设置为1,由于文件名的数字部分相同,我相信只有一个减速器运行。我的理解正确吗?为什么要创建一个part-r-000000文件?我把所有的输出都写在水果文件或蔬菜文件中。

  2. 如果我有1 GB的数据要处理,我将如何决定要使用的减速器的最佳数量?

one reducer will run ,it has nothing to do with part of file name , no of reducer would be either specified by the user by default it calculated the size of the input file and amount of work which need to be done in reducers .
part-r-00000 : This is related with partitioning, Since we have one reducer so all partitions will point to this file 
Number of reduces in most cases specified by users. It mostly depends on amount of work, which need to be done in reducers. But their number should not be very big, because of algorithm, used by Mapper to distribute data among reducers. Some frameworks, like Hive can calculate number of reducers using empirical 1GB output per reducer.

1.此输出突出了MultipleOutputMultipleOutputFormat之间的一个关键区别。使用MultipleOutputs时,您可以输出到reducer的常规OutputCollector,或输出到命名输出的OutputCollector或同时输出到这两个。这就是您看到part-nnnn文件的原因。

2.您可以根据BenchMarking使用不同数量的减速器来确定减速器的最佳数量。这也取决于数据的处理。

例如,我们将用2个减速器处理1 GB,这只会产生一小部分处理。但对于其他MR工作,我们可能需要为1GB文件设置5个减速器,这会产生某种巨大的处理/计算。因此,最好制定基准。

相关内容

  • 没有找到相关文章