折腾近一周,来回调yarn 和map内存
情景描述:
16G4核*4机器搭了一个集群,部署hdfs MR hive zookeeper 等一些组件。欲搭建一个离线数仓。
有4,5年历史数据存在mysql中,欲将mysql导入hdfs。采用sqoop将Mysql数据lzo压缩导入hdfs。
优化过sqoop中sql后,导入速度还是异常缓慢。sql部分已经没法优化了,mysql大表查询慢我认了。
不知是机器性能问题还是什么,sqoop从查询到map过程在执行巨慢。4台机器安装完组件后,yarn可调度节点分别为(5.6G ,8.6G ,11G ,12G)3核 *4 yarn的container 我调整为min 4G max 12G。map所需内存设置成12G.
本来计划写一个sqoop脚本,内部调用所有表查询sql。由于mysql表字段没有自增id,使用sqoop脚本没法-m 和-split-by 。然后将脚本拆开,拆成12个shell脚本。妄图达到并发效果。然后每次跑一天partition ,14~15mins跑完12个脚本。也就是一天追96天数据。太慢了。当我尝试调整yarn 和map ,同样12个脚本所需时间没有更少,已经达到最快。
当我的Map所需内存大于yarn节点支持内存,虽然执行脚本速度快,但是数据不会插入hdfs。
今日记录此问题,期待有缘人能破除此问题。