Apache Pig ObjectSerializer优化

最近又遇到一次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 --


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值