MapReduce 默认分区介绍

简介: MapReduce 默认分区介绍

在 Hadoop 的 MapReduce 过程中,每个 MapTask 处理完数据后,如果存在自定义的 Combiner 类,会先进行一次本地的 Reduce 操作,然后把数据发送到 Partitioner,由 Partitioner 来决定每条记录应该送往哪个 Reduce 节点,默认使用的是 **HashPartitioner**,其核心代码如下:

publicclassHashPartitioner<K, V>extendsPartitioner<K, V> {
/** Use {@link Object#hashCode()} to partition. */publicintgetPartition(Kkey, Vvalue,
intnumReduceTasks) {
return (key.hashCode() &Integer.MAX_VALUE) %numReduceTasks;
  }
}

 **`getPartition()`函数的作用:**


 (1)获取 key 的哈希值


 (2)默认的分发规则为:根据 **key 的 hashcode%reducetask 数**来分发


 (3)这样做的目的是可以把`<key,value>`对**均匀地分发**到各个对应编号的 ReduceTask 节点上,达到 ReduceTask 节点的负载均衡。

相关文章
|
6月前
|
分布式计算 Hadoop Java
MapReduce编程:自定义分区和自定义计数器
MapReduce编程:自定义分区和自定义计数器
82 0
|
分布式计算
29 MAPREDUCE中的分区Partitioner
29 MAPREDUCE中的分区Partitioner
76 0
|
3月前
|
分布式计算 负载均衡 Hadoop
MapReduce 分区器的作用与重要性
【8月更文挑战第31天】
45 1
|
6月前
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之在DataWorks中,在MapReduce作业中指定两个表的所有分区如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
76 0
|
12月前
|
分布式计算 DataWorks
DataWorks想在mapreduce中指定两个表的所有分区
DataWorks想在mapreduce中指定两个表的所有分区,
44 1
|
6月前
|
分布式计算
MapReduce【自定义分区Partitioner】
MapReduce【自定义分区Partitioner】
|
分布式计算
MapReduce【自定义分区Partitioner】
实际开发中我们可能根据需求需要将MapReduce的运行结果生成多个不同的文件,比如上一个案例【MapReduce计算广州2022年每月最高温度】,我们需要将前半年和后半年的数据分开写到两个文件中。
|
存储 分布式计算 Hadoop
Hadoop中的MapReduce框架原理、Shuffle机制、Partition分区、自定义Partitioner步骤、在Job驱动中,设置自定义Partitioner、Partition 分区案例
Hadoop中的MapReduce框架原理、Shuffle机制、Partition分区、自定义Partitioner步骤、在Job驱动中,设置自定义Partitioner、Partition 分区案例
Hadoop中的MapReduce框架原理、Shuffle机制、Partition分区、自定义Partitioner步骤、在Job驱动中,设置自定义Partitioner、Partition 分区案例
|
分布式计算
MapReduce自定义分区
MapReduce自定义分区
|
分布式计算 Hadoop
MapReduce之分区器(Partitioner)
Partitioner 组件可以对 MapTask后的数据按Key进行分区,从而将不同分区的Key交由不同的Reduce处理。这个也是我们经常会用到的功能
MapReduce之分区器(Partitioner)