Memory 为TaskTracker子进程配置内存的不同方式(映射器和Reduce任务)

Memory 为TaskTracker子进程配置内存的不同方式(映射器和Reduce任务),memory,hadoop,mapreduce,task,Memory,Hadoop,Mapreduce,Task,设置和使用-Xmx来控制映射程序使用的最大内存和减少任务之间有什么区别?哪个优先?-Xmx指定分配的jvm的最大堆空间。这是为对象分配保留的空间,由管理。另一方面,mapred.job.map.memory.mb指定Hadoop任务子进程允许的最大值。如果超过最大堆大小,JVM将抛出OutOfMemoryException JVM可能会使用比最大堆大小更多的内存,因为它还需要空间来存储对象定义(permgen空间)和堆栈。如果进程使用的虚拟内存多于mapred.job.map.memory.mb

设置和使用-Xmx来控制映射程序使用的最大内存和减少任务之间有什么区别?哪个优先?

-Xmx
指定分配的jvm的最大堆空间。这是为对象分配保留的空间,由管理。另一方面,
mapred.job.map.memory.mb
指定Hadoop任务子进程允许的最大值。如果超过最大堆大小,JVM将抛出OutOfMemoryException

JVM可能会使用比最大堆大小更多的内存,因为它还需要空间来存储对象定义(permgen空间)和堆栈。如果进程使用的虚拟内存多于
mapred.job.map.memory.mb
,它将被hadoop杀死

因此,一个并不优先于另一个(它们测量内存使用的不同方面),但是
-Xmx
是JVM的一个参数,
mapred.job.map.memory.mb
是任务尝试可以使用的虚拟内存的硬上限,由hadoop强制执行


希望这是有帮助的,记忆是复杂的!我现在很困惑,为什么我的JVM进程在中的虚拟内存中使用了几倍的最大堆大小。

Hi。这将如何影响非java自定义映射器/还原器任务?有没有办法限制自定义映射器/还原器脚本的内存分配?