错误异常: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