为什么io.sort.record.percent被删除了?

gev0vcfq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(367)

为什么 io.sort.record.percent 属性是否已从Hadoop1.x以后的版本中删除?

ca1c2owp

ca1c2owp1#

io.sort.record.percent是应用于io.sort.mb(旧名称)的百分比。
Map输出数据放在内存缓冲区中。当缓冲区填满时,框架对其进行排序,然后溢出到磁盘。一个单独的线程将磁盘上的已排序文件合并为一个较大的已排序文件。缓冲区由两部分组成:一部分包含连续的原始输出数据,另一部分包含原始数据部分中每个记录的指针的元数据部分。在mr1中,这些节的大小是固定的,由io.sort.record.percent控制,它表示有多少io.sort.mb空间用于元数据节。这意味着,如果没有对这个参数进行适当的调整,那么如果一个作业有许多小记录,那么元数据部分的填充速度可能比原始数据部分快得多。缓冲区将在完全填满之前溢出到磁盘。这会影响性能。
mapreduce-64在mr2中修复了这个问题,它允许两个部分共享相同的空间并改变大小。因此,不再需要io.sort.record.percent来最小化mr2中的溢出数量。这就是为什么这个财产被移走了

bkhjykvo

bkhjykvo2#

它出现在2.x中,但唯一的区别是它的名称已更改:
mapreduce.task.io.sort.mb:排序文件时要使用的缓冲区内存总量(mb)。默认情况下,为每个合并流提供1mb,这将最小化查找。
默认值仍然是100 mb。请在此链接上查找更多信息。

相关问题