千家信息网

hadoop1.x MapReduce工作原理

发表于:2024-12-03 作者:千家信息网编辑
千家信息网最后更新 2024年12月03日,MapReduce 如何解决负载均衡和数据倾斜:阶段主要出在Map作业结束后,shuffer(洗牌)过程中,如何将map处理后的结果分成多少份,交由Reduce作业,使得每部分reduce作业尽可能均
千家信息网最后更新 2024年12月03日hadoop1.x MapReduce工作原理

MapReduce 如何解决负载均衡和数据倾斜:

阶段主要出在Map作业结束后,shuffer(洗牌)过程中,如何将map处理后的结果分成多少份,交由Reduce作业,使得每部分reduce作业尽可能均衡处理数据计算。

系统默认将partitions 按照Hash模运算分割(存储对象的hash值与reduce的个数取模),这样很容易出现数据倾斜,导致其中一个reduce作业分得大量数据计算,另一个ruduce作业基本上没有任何数据处理。如何,解决的这种事情,就需要靠程序控制partitions的值

Sort:默认排序是按照字典排序的(按ASCII

Shuffer阶段比较的操作要执行两次,一次是map task之后的sort另一次是在从本次磁盘将partition数据拷贝到指定reduce 之前的合并,将符合统一范围的key的数据归并



面试:

1.partition:将map输出的数据,按照某种规则将数据划分,分给哪一个reduce,默认使用hash模运算执行

2.spill

过程:map的内存缓存区数据填满时,启动一个单独的线程,将数据按照一定比例写入本地磁盘。

Sort:将数据按照大小排序(可自定义)默认字典排序

Combiner:(可有可无)将相同的K_V中的value加起来,减少溢写磁盘的数据

Shuffer的后半过程:

map处理后放入map节点的本地磁盘的数据拷贝到rudece节点的内存中 去,数据量少的话,直接交由reduce处理。数据量大的时候,同样需要溢写到磁盘中,按照K值相同的方法进行merge,然后在交由指定的reduce执行



修改默认hdfsblock大小:

这个需要修改hdfs-site.conf配置文件,增加全局参数dfs.block.size

如下:

修改后参数,

把配置同步到其它节点,并重启hdfs



0