hadoop下怎么计算MapReduce过程中需要的缓冲区大小

介绍

本篇内容介绍了“hadoop下怎么计算MapReduce过程中需要的缓冲区大小”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在地图阶段,映射函数会产生中间数据输出并保存在内存缓冲区中(缓冲区大小由io.sort.mb参数指定)。一旦达到占用阈值(默认是80%),缓冲区的内容就会写入本地磁盘,这也就是所谓的溢写(泄漏)。

缓冲区内会存储溢写记录的元数据(每条数据元数据长度为16个字节)和溢写记录。

分配给元数据的空间由参数io.sort.record。百分比指定,默认5%,其余分配给溢写记录使用。

要确定缓冲区所需的内存空间,需要计算溢写记录和元数据分别所占空间大小。

具体计算方法如下:

 hadoop下怎么计算MapReduce过程中需要的缓冲区大小

<李>

记录长度=地图输出字节/地图输出记录=,68022178/472293=144字节

<李>

记录大?洒,洒了记录*记录长度=144 *,472293=,68022178=64

<李>

元数据大?元数据长度=16 * *溢出的记录,7556688 472293=,=7 m

io.sort.record。%=16/(16 + 144)=0.1

io.sort。mb=元数据大小+溢出记录大?64 + 7=71 m

hadoop下怎么计算MapReduce过程中需要的缓冲区大小