shuffle原理和内存溢出原因

博客探讨了在MapReduce中Reduce阶段Shuffle过程中出现的内存溢出错误,详细解析了Shuffle过程、相关参数及其作用。通过分析发现,当Fetcher线程分配内存超出限制时会导致内存溢出。提出两种解决方案:一是调整shuffle内存比例和merge阈值,二是降低shuffle内存比例和单个任务限额,以确保内存使用不超过设定上限。
摘要由CSDN通过智能技术生成

错误异常:Error: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher

Redue Shuffle过程及参数:

先附上一个MR整个过程的大图:

过程:

1.EventFetcher 负责向MRAppMaster获取已经运行完的Map信息,这些信息包括Map编号和运行Map的服务器。
2.ShuffleScheduler负责调度Shuffle任务。
3.各Fetcher线程从ShuffleScheduler取任务,进行实际Map数据获取。默认5个Fetcher线程 。
 

参数:

    mapreduce.reduce.shuffle.input.buffer.percent:
          shuffle使用的内存比例,默认是0.7。Shuffle内存为总内存 * 0.7。
    mapreduce.reduce.shuffle.memory.limit.percent: 
        单个shuffle任务能使用的内存限额,默认是0.25,即为 Shuffle内存 * 0.25。
        低于此值可以输出到内存,否则输出到磁盘。
   mapreduce.reduce.shuffle.merge.percent:默认值为0.9。
       shuffle的数据量到Shuffle内存 * 0.9的时候,启动合并。

他的过程是最多5个Fetcher线程取拿取map

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值