您的位置:首页 > 运维架构 > Apache

Apache Pig ObjectSerializer优化

2012-11-18 19:07 267 查看
最近又遇到一次Tasktracker OOM的问题,
分析过程如下:

1. 用MemoryAnalyzer分析heap dump, 如下图:



发现又是大量的String类型的内存占用.

进一步分析String的持有,如下:



发现是JobConf 对象持有了大量的string. 这个已经不奇怪了, hadoop要放很多job相关的配置到JobConf中,很多JobTracker
Tasktracker的OOM都跟这个有关.

继续看String的内容:



却是很多乱七八糟的内容,不像是可读的配置.
根据Entry的key查找pig源代码, 发现是这样的:



原来Pig将很多的对象序列化再编码成字符串存储在了JobConf中!

只有压缩ObjectSerializer的输出再编码了.

改了代码, 上线运行, 没问题!

mailing list里面一吼, 结果发现有人在我前两天提交了一样的功能.....
这个,,这个就怪为嘛我们的系统没有提前3天OOM呢? >.<

官方patch在这里:
PIG-3017

这类型的bug基本上是谁遇到的早,
谁就会有机会fix. 可遇不可求啊.

--
EOF --
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: