我 相 信 这 么 优秀 的 你
已 经 置 顶 了 我
作者:王晓伟
从事大数据相关开发,曾经为多个开源框架如Hive、Yarn、Pig、Tez贡献代码。
◇◆◇◆◇
场景
如果某个key下记录数远超其他key,在join或group的时候可能会导致某个reduce任务特别慢。本文分析下join的场景。
本例子SQL如下:查询每个appid打开的次数,需要排除掉作弊的imei。
说明:表cheat_imei,7500万条,无大key,为作弊的imei。表imei_open_app,5亿6526万条,为每个imei打开的appid。该表中存在大key,md5imei=54bc0748b1c0fb46135d117b6d26885e的记录数有2亿3659万条。
◇◆◇◆◇
Hadoop环境
Hadoop 2.6.0-cdh5.8.0
hive-1.1.0-cdh5.8.0
◇◆◇◆◇
会导致的问题
可能会导致下面2个问题
1)某个reduce task,卡在99.9%半天不动。如下
2)任务超时被杀掉
Reduce处理的数据量巨大,在做full gc的时候,stop the world。导致响应超时,超出默认的600秒,任务被杀掉。报错信息
AttemptID:attempt_1498075186313_242232_r_000021_1 Timed outafter 600 secs Container killed by the ApplicationMaster. Container kille