Mapreduce中Mapper、Partition、Reducer数目的确定与关系

Mapper:由客户端分片情况决定,客户端获取到输入路径的所有文件,依次对每个文件执行分片,分片大小通过最大分片大小、最小分片大小、hdfs的blocksize综合确定,分片结果写入job.split提交给yarn,对每个分片分配一个Mapper,即确定了数目。

Partition:由PartitionerClass中的逻辑确定,默认情况下使用的HashPartitioner中使用了hash值与reducerNum的余数,即由reducerNum决定,等于Reducer数目。如果自定义的PartitionerClass中有其他逻辑比如固定了,也可以与Reducer数目无关,但注意这种情况下,如果reducerNum小于分区数则会报错,如果大于则会产生无任务的reduecer但不会影响结果。但是如果reducerNum只有1个,则不会报错而是所有分区都交给唯一的reducer。

Reducer:通过job.setNumReduceTasks手动设置决定

你可能感兴趣的:(hadoop)