MapReduce中Map数量的控制

InputFormat这个类是用来处理Map的输入数据的,任务开始时,InputFormat先将HDFS里所有输入文件里的数据分割成逻辑上的InputSpilt对象

这里的split是HDFS中block的部分或者一整块或几个快中的数据的逻辑分割,一个split对应于一个Map,所以Map的数量是由split的数量决定的。

那么怎样去确定InputSpilt的个数呢,下面列出于split个数相关的配置参数:

numSplits:来自job.getNumMapTasks(),即在job启动时用org.apache.hadoop.mapred.JobConf.setNumMapTasks(int n)设置的值,给M-R框架的Map数量的提示。

minSplitSize:默认为1,可由子类复写函数protected void setMinSplitSize(long minSplitSize) 重新设置。一般情况下,都为1,特殊情况除外

blockSize:HDFS的块大小,默认为64M,一般大的HDFS都设置成128M。

 

long goalSize = totalSize / (numSplits == 0 ? 1 : numSplits);
long minSize = Math.max(
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MapReduce的partition的作用是将Map阶段输出的键值对按照键进行分区,将相同键的键值对分配到同一个Reducer进行处理,以便实现数据的并行处理和分布式计算。通过partition,可以将大规模数据的处理任务分解成多个小任务,提高计算效率和性能。同时,partition还可以控制Reducer的数量,以便更好地利用计算资源,提高系统的可扩展性和容错性。 ### 回答2: MapReduce是一种分布式计算模型,在这个模型数据被分为不同的区域,每个区域都由不同的节点来处理。而区域的分配是通过Partitioner(分区器)来完成的。在MapReduce,Partitioner的作用是把Map过程输出的键值对按照键的值进行分区,使具有相同键的键值对都被分到同一个partition进行处理。 Partitioner通过对Map输出的键值对进行哈希,根据哈希值将它们放入不同的partition。这样可以确保具有相同键的键值对都被放在同一个partition,因此可以使具有相同键的键值对被分配到同一个reduce任务,最终输出到同一个文件。 Partitioner的另一个重要作用是负载均衡。通过桶排序的方式将键值对分配到不同的partition,可以避免某一个reduce任务需要处理过多或者过少的键值对。如果某一个reduce任务处理的键值对太多,就会导致其运行时间过长,从而影响整个MapReduce任务的执行效率。而如果某一个reduce任务处理的键值对太少,就会使其他的reduce任务处于空闲状态,浪费系统资源。 总之,Partitioner在MapReduce的作用是将Map过程输出的键值对进行分区,保证具有相同键的键值对被分配到同一个reduce任务,最终输出到同一个文件,并且实现负载均衡,提高整个MapReduce任务的执行效率。 ### 回答3: MapReduce是一种基于互联网云端的计算框架,它实现了数据的并行处理和分布式计算。而MapReduce的Partition则是该框架的一个非常重要的组成部分,它在每个计算节点上完成将计算后的产生的键值对进行分类和整合的主要功能。 计算时,Map负责将数据映射成键值对,Reduce则负责对键值对进行计算。Partition的主要作用是将一个映射得到的键值对经过划分后,分配到不同的处理节点上进行计算。它的作用是在映射和处理阶段之间进行间结果的存储,将一个Map产生的所有间结果分配到多个Reduce Task进行计算。在数据量极大的情况下,将间结果存储在磁盘上,以减小内存的容量需求。 举一个简单例子,假设有一份文字文档需要进行词频统计,我们可以把文档分为若干份,由多台计算机共同处理。每台计算机读入一部分文档内容后,将其拆分为不同的单词,并记录每个单词的出现次数,并将其作为一个键值对存入MapReduce的 Partition,在Partition 完成分配任务的操作。最后,所有计算机将其处理后的结果再进行整合,得到整个文档的词频结果。 通过Partition的设计,MapReduce能够避免大量数据的网络传输,提高处理速度,同时使整个计算过程更加可靠。因此,Partition已经成为大规模分布式计算的标准组件之一,被广泛应用于海量数据处理和分布式计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值