小编Sel*_*elf的帖子

Mapreduce 中的中间数据溢出(缓冲存储器)

我在 Hadoop 2.6.0 中运行了一个字数统计作业,我看到地图输出有几个溢出。

我有以下配置:

mapreduce.task.io.sort.mb = 100
mapreduce.map.sort.spill.percent = 0.80
Run Code Online (Sandbox Code Playgroud)

运行作业后,Map 输出字节数 = 222660096。通过查看下面的容器日志,缓冲区大小似乎接近 31055173 字节而不是 100MB。

在第一个溢出到磁盘之前查看参数值 bufstart = 0; bufend = 31055173; bufvoid = 104857600

并将 Map 输出(以字节为单位)除以 bufend(222660096/31055173 = 7.17(= 8 次溢出))。

为什么会这样?缓冲区大小应该是 80MB(软限制),所以我认为我应该只有 3 次溢出。另外,任何人都可以对bufstart,bufendbufvoid?

2016-03-04 20:38:16,678 INFO [main] org.apache.hadoop.mapred.MapTask: Processing split: hdfs://hmaster:9000/input/Input-128M:0+134217728
2016-03-04 20:38:16,842 INFO [main] org.apache.hadoop.mapred.MapTask (EQUATOR) 0 kvi 26214396(104857584)
2016-03-04 20:38:16,842 INFO [main] org.apache.hadoop.mapred.MapTask: mapreduce.task.io.sort.mb: 100
2016-03-04 20:38:16,842 INFO [main] org.apache.hadoop.mapred.MapTask: soft limit at 83886080
2016-03-04 …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce hadoop-yarn

5
推荐指数
1
解决办法
1778
查看次数

标签 统计

hadoop ×1

hadoop-yarn ×1

mapreduce ×1