mapreduce.reduce.shuffle.memory.limit.percent、mapreduce.reduce.shuffle.input.buffer.percent 和 mapreduce.reduce.shuffle.merge.percent
mapreduce.reduce.shuffle.memory.limit.percent, mapreduce.reduce.shuffle.input.buffer.percent and mapreduce.reduce.shuffle.merge.percent
我只是想验证我对这些参数及其关系的理解,如果我错了请通知我。
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
。这意味着单个洗牌具有相同类型的所有键否则此限制的目的是什么以及这三个之间的关系是什么?
我想分享一下我对这些属性的理解,希望对您有所帮助。如果有什么不对的地方请告诉我。
mapreduce.reduce.shuffle.input.buffer.percent
表示为循环缓冲区分配的 reducer 堆内存的百分比,用于存储从多个映射器复制的中间输出。
mapreduce.reduce.shuffle.memory.limit.percent
说明单个随机播放(从单个 Map 任务复制的输出)应该占用的上述内存缓冲区的最大百分比。超过此大小的shuffle不会复制到内存缓冲区,而是直接写入reducer的磁盘。
mapreduce.reduce.shuffle.merge.percent
说明内存合并线程将 运行 将内存缓冲区上的可用洗牌内容合并到单个文件中的阈值百分比,并立即将合并后的文件溢出到磁盘。
很明显,内存合并线程应该要求内存缓冲区中至少有 2 个随机播放文件才能启动合并。所以在任何时候 mapreduce.reduce.shuffle.merge.percent
都应该高于内存中由 mapreduce.reduce.shuffle.memory.limit.percent
属性 控制的任何单个洗牌文件,它要求至少应该有一个以上的洗牌文件存在于合并过程的缓冲区中。
我只是想验证我对这些参数及其关系的理解,如果我错了请通知我。
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
。这意味着单个洗牌具有相同类型的所有键否则此限制的目的是什么以及这三个之间的关系是什么?
我想分享一下我对这些属性的理解,希望对您有所帮助。如果有什么不对的地方请告诉我。
mapreduce.reduce.shuffle.input.buffer.percent
表示为循环缓冲区分配的 reducer 堆内存的百分比,用于存储从多个映射器复制的中间输出。
mapreduce.reduce.shuffle.memory.limit.percent
说明单个随机播放(从单个 Map 任务复制的输出)应该占用的上述内存缓冲区的最大百分比。超过此大小的shuffle不会复制到内存缓冲区,而是直接写入reducer的磁盘。
mapreduce.reduce.shuffle.merge.percent
说明内存合并线程将 运行 将内存缓冲区上的可用洗牌内容合并到单个文件中的阈值百分比,并立即将合并后的文件溢出到磁盘。
很明显,内存合并线程应该要求内存缓冲区中至少有 2 个随机播放文件才能启动合并。所以在任何时候 mapreduce.reduce.shuffle.merge.percent
都应该高于内存中由 mapreduce.reduce.shuffle.memory.limit.percent
属性 控制的任何单个洗牌文件,它要求至少应该有一个以上的洗牌文件存在于合并过程的缓冲区中。