Hadoop MR job优化经验谈

思寇特牌搬砖工 2019-09-12 10:36:34

最近对我们team的一堆离线job做了些优化,最终效果还不错,把经验记录下。

起因是Q2我们的数据量忽然暴涨,但是机器资源并没有办法相应增加,因为老板们要压缩机器成本,不得已只能考虑如何挖潜,让现有资源利用得更好。

业务角度出发,进行重构

  1. 减少job,审视job是否必要,减少读入,减少输出,减少计算,论资源代价 全天 > 小时 > 实时。
  2. 某些文件是不是可以不读,例如maxlog-builder去掉读.x。
  3. 利用profile(perf, asyncprofiler)工具,找出程序热点,做出针对性的优化。

均衡性

  1. 利用集群空闲时间,比如晚上9点后,但是有T+2的可能性。
  2. data-skew的解法,利用小时以及实时任务发现热数据,全天shuffle时做针对性处理。

读取原始日志的优化

  1. 尽量使用hive。
数据读取成本 mysql < cube-hive < ods-hive < parque log < thrift lzo。
  1. 尽量使用parquet。
  2. hourly生成combined index,全天时使用,可以大大缩短切split时间。

job的水平切分

  1. 多个小job要优于一个大job,可以进行水平的切分,比如按pc/mobile,先后启动,更合理的利用集群container资源。

MR job本身的优化

  1. GC参数的选择
cgroup下,CPU变成紧缺资源,需要尽量减少CPU消耗,因此从优化throughput的角度出发,parallelGC占用CPU低,优于G1,控制编译和GC的线程数目。
  1. AM的配置
对于大job,而且counter特别多的,需要适当增加AM的资源,配置yarn.app.mapreduce.am.resource.mb和yarn.app.mapreduce.am.resource.cpu-vcores,AM本身也用parallel GC也可以。
  1. 关键参数
io.file.buffer.size 效果立竿见影,128k is a safe option。 mapreduce.job.reduce.slowstart.completedmaps, 集群默认0.8,大部分比较小的job都是适合的,对于map比较重的大job,这个值可以适当调大,比如0.9。
  1. 合理的map/reduce数
map数不要超过集群vcore数,可以增大split的size,利用MapReduceUtil的combine函数合并split,因为太频繁的资源申请释放浪费RM。同时相对于reduce,map重跑的可能性更大,所以也不能使得map重跑的代价太大,我们的环境下,一个map读入512M是比较合适的。
如果shuffle是瓶颈,map端最好不要发生数据的体积膨胀,尽量在map端只做filter和project,减少shuffle的输入。parallelCopy thread数也要合适,小job可以增加,大job太大反而不行。
reduce数目非常关键,无论多大的job,不要超过8k,超过会造成map端fetch failed,然后下游reduce大面积kill重跑,大大增加job运行时间。对于绝大部分job,5k以下比较合理。一个标准是shuffle时间和reduce时间对比,如果shuffle时间大大多于reduce的时间,并map有too many fetch fail,就可以考虑减少reduce数目。另外,设置reduce的下限是每个reduce至少处理1G的输入。
  1. streaming job
streaming job需要尽量压缩JVM的资源,把资源留给真正执行的程序。
增加container资源,但是减小JVM资源,2G heap使用serial GC即可。

pipeline的优化

减少dependency,尽量并行

集群异常机器

可以观察到,对于某些大job,可以观察到fail map反复出现在某些特定的机器上,这些机器的特点是uptime超过300天,而且是CentOS 6.5的。

重启机器后这台机器就不再经常出现fail map了,怀疑是2.6.32的kernel有泄漏

hdfs usage的影响

hdfs usage在60% ~ 70%之间时,集群是比较健康的,超过这个数后,写入hdfs会变得特别慢,syslog上有warn log,报slow read processor。另外,集群健康度还有个指标是 node usage 的中位数, 这个到 85%以上的时候, 一样容易报slow read processor。

思寇特牌搬砖工
作者思寇特牌搬砖工
12日记 12相册

全部回应 0 条

添加回应

思寇特牌搬砖工的热门日记

豆瓣
免费下载 iOS / Android 版客户端