分类: 服务器与存储
2011-05-16 19:34:30
在写 hadoop mapreduce 时 内存需要比较注意的地方 :
我们的配置 mapred-site.xml
mapred.tasktracker.map.tasks.maximum = 6 jvm
mapred.tasktracker.reduce.tasks.maximum = 2 jvm
mapred.child.java.opts = -Xmx2048m -Xms512m
最差情况 8 * 2G = 16G
在 map 两个关键的配置 :
Io.sort.mb / io.sort.spill.percent ,map jvm 一上来 这两个配置就决定 初始大小 。
在 StatBase (10.10.70.85凌晨5点的一个mapreduce 上)
我的 Io.sort.mb / io.sort.spill.percent = 1000 / 0.8 也就是 每台机器 初始: 6*800M
跑一段时间后 内存小的就开始大量使用 swap ,
reduce 上来有 大概在 1.2~1.3G * 8 的内存使用量 swap 4G全部用完
总结: 尽量 配置 io.sort.mb 小于 200m ,这样 每个jvm 大概在在最后 500m 之间.
每台机器 500m*8 应该没问题