我只想验证我对这些参数及其关系的理解,如果我错了,请通知我。
mapreduce.reduce.shuffle.input.buffer.percent告诉分配给reducer的整个洗牌阶段的内存总量。mapreduce.reduce.shuffle.memory.limit.percent告诉最大百分比的内存限制,一次洗牌可以消耗从mapreduce.reduce.shuffle.input.buffer.percent。mapreduce.reduce.shuffle.merge.percent是启动内存中合并的使用阈值,表示为存储内存中映射输出而分配的总内存( mapreduce.reduce.shuffle.input.buffer.percent)的百分比。Hadoop-2.6有一个限制,即mapreduce.reduce.shuffle.merge.percent应该大于mapreduce.reduce.shuffle.memory.limit.percent。这意味着一次洗牌有相同类型的所有键,否则这一限制的目的是什么,这三者之间的关系是什么?发布于 2015-04-27 09:54:23
我想分享我对这些属性的理解,希望能有所帮助。如果有什么不对劲的话,请告诉我。
mapreduce.reduce.shuffle.input.buffer.percent讲述了将为循环缓冲区分配的还原器堆内存的百分比,以存储从多个映射器复制的中间输出。
mapreduce.reduce.shuffle.memory.limit.percent告诉您,单次洗牌(从单个Map任务复制的输出)应该使用的内存缓冲区的最大百分比。洗牌的大小高于此大小将不会复制到内存缓冲区,而是将直接写入减速机的磁盘。
mapreduce.reduce.shuffle.merge.percent根据内存中合并线程将运行的阈值百分比来将内存缓冲区上的可用洗牌内容合并到单个文件中,并立即将合并的文件泄漏到磁盘中。
显然,内存中的合并线程应该要求内存缓冲区中至少有两个洗牌文件才能启动合并。因此,在任何时候,mapreduce.reduce.shuffle.merge.percent都应该高于由mapreduce.reduce.shuffle.memory.limit.percent属性控制的内存中的任何一个混合文件,根据该属性,它要求在合并进程的缓冲区中至少存在一个以上的洗牌文件。
https://stackoverflow.com/questions/29874766
复制相似问题