分享嘉宾:陈天明 汽车之家

编辑整理:徐焱森 中经惠众

出品平台:DataFunTalk

导读: 本文主要介绍汽车之家离线计算平台的建设过程,如何应对集群大规模增长带来的性能和稳定性的挑战,如何解决多租户情况下集群面临的运维难题以及如何提升服务器资源利用率问题等问题。

01 汽车之家离线计算平台现状

1. 汽车之家离线计算平台发展历程

2013年的时候汽车之家集群的规模大概50台左右,主要是广告部门用于离线数据分析使用。

2018年底集群规模大概有800台,面向之家所有的业务团队全面开放,用户大概有200个,日均处理作业8万左右。

2019年底集群规模1300台;由于集群规模越来越大,用户越来越多以及不规范的使用,单一namenode无法承受压力,namenode扩展为6组namenode,日均作业15万,日均处理数据量3PB。

2020年底规模2200台,日均作业23万,日均处理数据量5PB;metastore federation正式上线,解决由于分区数多导致的查询性能问题;大数据智慧运营系统上线,主要是用大数据的理念来治理大数据平台;引入hadoop EC技术解决冷数据存储问题,提升存储利用效率。

2021年集群规模3050台,日均作业35万,日均处理量7PB,Cgroup软隔离落地进一步提升集群的性能,由hdfs viewfs切换到hdfs RBF ,hdfs RBF上线,离在线混部提高集群的利用率,经过这几年的发展,集群性能越来越强大,服务越来越稳定。

2. 集群当前运行状态

从这个图中可以看出目前数据仓库的核心任务基本上提前一个小时完成;集群小文件占比逐步降低,目前百分之四十多;集群所有MR任务,平均作业运行时长在100秒上下浮动,整个集群的状态非常平稳。

02 平台构建过程中遇到的问题

1. 分区过多,hive性能慢

随着平台的发展数据量越来越多,分区数也越来越多,去年初整个分区数在5000万左右每天还在2万左右的增加,如果有业务上线批量刷数会造成hive查询非常慢。

2. 大量小文件,用户使用不规范

平台在开放的过程中会有很多问题,最典型的例子我们单个namenode文件和块数大概有4亿左右,这样会造成很多问题,比如namenode响应时间非常长,namenode rpc 队列经常被打满,主节点重启用时较长(超过30分钟);另外用户使用不规范的问题,比如队列资源之类的滥用比较多,MR任务申请的内存过大问题

3. 业务急剧增长导致计算资源不足

汽车之家业务的急剧增长导致计算资源不足,任务有延迟,核心任务SLA无法保证等问题;这个需要我们进行优化提高资源的利用率。

4. 离线计算资源总体利用率低

通过分析发现离线计算资源具有潮汐性:夜间利用率比较高,白天利用率比较低。怎么样提升资源使用率,是我们当下需要解决的问题。

03 基于构建过程中问题的解决方案

1. 解决metastore的问题

2020年初集群大概有5000万左右分区,每天2万+的速度在增长导致平台的压力比较大,有新业务上线的时候需要批量更新数据,hive查询比较慢。

业界解决方案主要有以下几种:

  • mysql分库分表:无论是垂直分表还是水平分表我们通过metastore 查询mysql都需要修改大量的逻辑,如果使