您的位置:首页 > 其它

Hive 调整inputsplit size来增加MAP数

2013-09-18 11:45 92 查看
http://boylook.itpub.net/post/43144/531420

线上一个Hive(CDH4.2.0)的清洗Job出错,查看日志发现其中一个MAP OOME:



查看了日志这个HQL是2个表进行Join,splits=2即开了2个MAP进行分别处理,其中一个大表123MB(<dfs.block.size=128MB),500W行左右,应该是数据量超过了MAP的内存了,通过对比前一天的日志可以确认:

由于是临时表,设置了mapred.reduce.tasks=20重跑新生成临时表,Join清洗成功:

由于MR的inputsplit size=min{minsplitsize,max{maxsplitsize,blocksize}},因此想是否可以通过设置mapred.max.split.size=32MB来起多个MAP这种方式解决呢,尝试后发现仍然是2个MAP;以为是BugMAPREDUCE-2046,但是CDH4.2已经merge进来,看了一圈由于sequencefileinputformat是老的mapreduce api接口,修改一下hive.input.format然后通过设置mapred.map.tasks增加果然起了预期的MAP数;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hive