本次的分享内容分成四个部分:

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

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

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

  4. 4.离线计算平台未来规划

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

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秒上下浮动,整个集群的状态非常平稳。

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

1. 分区过多,hive性能慢

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

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

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

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

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

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

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

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

1.解决metastore的问题

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

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

(1) mysql分库分表:无论是垂直分表还是水平分表我们通过metastore 查询mysql都需要修改大量的逻辑,如果使用这种方案改动较大,成本比较高。

(2)mysq切换成tidb:其他大厂也有实现过,但是通过测试发现需要关闭metastore事务等问题,对于tidb没有足够的信息,我们认为这个应该从架构层来解决,即使以后出现问题,所有的设计我们都清楚,能够快速解决问题。

(3)waggle-dance:这个方案滴滴有使用,汽车之家的hadoop平台是基于kerberos做的认证,这个组件没有kerberos认证所以这个也不太适合。

汽车之家解决方案:

在客户端与metastore之间建立统一的路由层,以hive的DB为粒度,不同的库转发到对应的metastore上,通过这种方式解决hive分区量过大的问题。

这种方式有两个优点:1、支持横向扩展,出现性能瓶颈时,只需要把大库拆分下来即可,并且对业务几乎无感知;2、支持多集群,因为我们要建立海外站,我们可以将海外站和国内的metastore关联起来进行查询

上图是我们的架构图,我们的开发机客户端和hiveserver2通过代理来连接到metastore,通过metastore来查询底层的分区信息。这种方案需要注意一个问题,由于集群里有认证,一个客户端可能会访问不同的metastore,后来调研社区方案发现在metastore层面是可以共享托管的,将所有的metastore通过zookeper托管来解决客户端认证的问题。

2.viewfs升级到RBF服务

我们之前用的是viewfs,在使用viewfs遇到很多问题,我们总结主要有以下4个问题:

1、非集中式管理,配置都存放到客户端以及部分系统中,造成管理不便

2、挂载表信息更新时部分服务无法热加载,需要手动重新启动服务;比如metastore

3、无法跨挂载点移动数据

4、不支持多重挂载,比如我们的集群所有的application日志保存到hdfs上,存放到一个单独的namespace上,但是应用程序日志比较多时对应的hdfs rpc队列经常被打满,如果支持多重挂载,我们就可以均衡这种数据

RBF优点:

1、集中式管理,不需要将所有的配置都下发到客户端

2、支持热加载无需重启服务

3、支持跨集群的mv,rename操作等(在社区基础上自研功能)

4、配合不同的策略可以使用多重挂载

但是在从viewfs升级到RBF的过程中我们遇到了很多问题,修复了80+bug,也增加了很多功能:

跨挂载点删除数据需要走distcp,我们改造成直接把数据删除到对应的namespace上这样可以避免走distcp缩短删除数据时间

跨挂载点移动数据的时候对于超过10G大文件或者文件比较多的话走dsctcp拷贝任务,对于单个文件或者1G以下的文件直接走客户端拷贝

增加了rbf balance失败的时候一键重置的功能

3. 利用大数据治理大数据平台

用户在使用过程中会有很多不规范的行为,最初是由平台来兜底进行解决问题。刚开始工作量不大,平台还能承受。发展到后期我们筋疲力尽。最终经过讨论我们通过制定规范来规范用户的行为,建立系统来监管用户行为以纠正不规范的行为,通过各个规范的评分来评估客户使用是否合理,通过大数据的方式来治理大数据平台。

主要分为三个步骤:

(1) 制定规范

(2)建立系统

(3) 共识目标

制定规范:

1.存储规范:包括团队的容量,inode配额,小文件的定义以及冷数据的界定等

2.队列使用规范:核心队列,base队列,开发队列,测试队列

3.库表规范:包括库的命名,表的命名,路径信息及建库表的权限等

建立系统:

1.对于存储、计算、任务按照一定的规则计算一个团队的分值,通过综合得分评估集市的健康度;进一步根据集市健康度评估团队使用平台是否合理

2.提供各类明细数据以及治理建议

3.提供便捷的自助工具帮助业务治理每一个团队的各种问题:比如治理小文件工具,自动压缩数据的工具等

共识目标:

1.之家的平台运营人员,运维人员与业务方充分沟通达成共识

2.系统级别进行强限制,比如集市得分满足条件才能进行资源扩容

如图这是我们自己建立的系统,上面有各项得分以及综合评分,最近30天集市健康评分,存储计算,集市健康度分析,我们提供了冷数据占比,小文件占比,未压缩数据占比以及建议等,我们还提供了基于库表的分析,包括基于这些库表查询的分区数文件数等,用户可以基于这些进行快速治理。

4. 提升离线资源提高资源利用率

通过长时间的观察,我们发现离线计算有两个特点:

(1) Yarn的资源申请和实际物理机使用不匹配

(2) 潮汐性

进一步的分析发现根源一个是使用的问题,这个可以通过大数据监控平台通过使用人员的调整或者资源超配来解决;另一个是业务属性问题,离线业务都是在夜间跑,白天主要做一些及时查询,我们的解决方案混部。

针对离线资源使用的问题,之家有两种解决方案:

(1) 超配 (2)离在线混部

超配+Cgroup优化

hadoop可以设置虚拟资源和实际物理机资源的一个比例,通过超配可以增加集群的资源量,提高container的并行度。但是我们当时使用的是Cgroup严格资源模式,如果超配达到30%的话,集群的每个continer算力会下降。通过将Cgroup改成share模式,整个集群的cpu使用峰值由原来的82%提高到92%,container计算量也会增加很多,全天的task数据也增加很多,平均运行时间也提高了很多。

离在线混部

离线计算具有潮汐性,通过部分在线业务迁移到离线计算来提高资源利用率,用离线资源来提供算力。

目前解决了两个核心问题:

1.离线资源定时自动扩容,晚上11点之后可以定时回收在线资源并对离线资源进行扩容,满足离线计算资源需求

2.实现continer实时/优雅两种模式的资源回收功能

通过图中可以看到混部之后的效果;当然我们还在开发其他更高级的功能。

▌未来规划

目前集群有两个版本2.7.2和3.2.1接下来我们会将集群全部升级到3.2.1

Namenode读写分离

离在线混部高级功能,比如离在线资源隔离。

Ai on Hadoop:主要想将ai的部分训练迁移到离线集群

问答环节

1、Hiveserver2经常OOM的问题,这个问题怎么解决的。Hiveserver2是水平业务部署的吗,如果是怎么使用高可用。

目前我们的业务很少使用hiveserver2,基本上没有使用所以没有遇到过这种问题。

2、Cgroup对于业务使用上有什么影响,是否显示指定资源,这个对于用户是不是有改造成本。

这个对于用户是无感知的,不需要用户单独设置配置信息。我们线上用的Cgroup模式根据业务情况有所不同,离线节点采用超配的方式,为了提高效率采用share模式;实时业务采用严格隔离模式。

3、Ai on hadoop方案和其他方案的对比

人工智能的训练任务主要有两种:cpu训练和gpu训练,有些业务用的cpu比较多gpu比较少,我们做Ai on hadoop主要是先替换这种类型的训练任务提升资源的利用率

4、Hadoop集群是可以不停机升级,你们是滚动升级的吗

我们目前还没有进行升级,其实我们可以在线升级,但是这样还是有风险的;我们rbf功能上线了之后我们会逐步迁移数据来升级,这样比较稳定,对业务没有影响,风险比较低。

嘉宾介绍:

陈天明 汽车之家离线计算平台负责人。2015年加入汽车之家,主导之家离线计算平台的建设;目前专注离线计算相关技术栈研究,对大规模集群的建设和管理有丰富的技术和实战经验。

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

离线计算平台在汽车之家的演进之路相关推荐

  1. OPPO大数据离线计算平台架构演进

    1 前言 OPPO的大数据离线计算发展,经历了哪些阶段?在生产中遇到哪些经典的大数据问题?我们是怎么解决的,从中有哪些架构上的升级演进?未来的OPPO离线平台有哪些方向规划?今天会给大家一一揭秘. 2 ...

  2. 基于Hadoop的58同城离线计算平台设计与实践

    作者:余意,来自:DataFun 导读:58离线计算平台基于 Hadoop 生态体系打造,单集群4000+台服务器,数百 PB 存储,日40万计算任务,面临挑战极大.58大数据平台的定位主要是服务数据 ...

  3. 基于 Hadoop 的58同城离线计算平台设计与实践

    导读:58离线计算平台基于 Hadoop 生态体系打造,单集群4000+台服务器,数百 PB 存储,日40万计算任务,面临挑战极大.58大数据平台的定位主要是服务数据业务开发人员,提高数据开发效率,提 ...

  4. 58同城离线计算平台设计与实践

    分享嘉宾:余意 58同城 高级架构师 编辑整理:史士博 内容来源:58大数据系列直播 出品平台:DataFun 导读:58离线计算平台基于 Hadoop 生态体系打造,单集群4000+台服务器,数百 ...

  5. 58同城离线计算平台设计与实践(大数据进阶)

    编者荐语: 58离线计算平台基于 Hadoop 生态体系打造,单集群4000+台服务器,数百 PB 存储,日40万计算任务,面临挑战极大.本次分享将聚焦大数据平台离线计算和大家一起系统的探讨58在离线 ...

  6. 京东京麦商家开放平台的消息推送架构演进之路

    1.前言 京麦实时消息推送是京东的京麦商家开放平台的核心组成部分.从消息源到消息中心再到触达用户,以及最终根据消息协议呼起操作页面,京麦实时消息推送是一个完整且健康的生态闭环.下面我会详细的介绍下京麦 ...

  7. 京东零售数仓:从离线、实时到流批一体的演进之路

    第一阶段 21世纪的第一个10年,企业级数据仓库从萌芽到发展,"IOTteradata" 占据了大部分市场,提供数据仓库建设从硬件.软件到实施的整体方案. 第二阶段 2010年-2 ...

  8. 从汽车之家效能平台建设看汽车行业研发数字化之路

    在促消费优惠政策.新能源汽车产品日臻成熟等多方利好下,国内汽车行业正处于持续增长:截至2022年9月底,全国机动车保有量达4.12亿辆,其中汽车3.15亿辆,连续三个月新增量超200万辆,每月汽车产销 ...

  9. 阿里巴巴大数据计算平台MaxCompute(原名ODPS)全套攻略(持续更新20171127)

    概况介绍 大数据计算服务(MaxCompute,原名ODPS,产品地址:https://www.aliyun.com/product/odps)是一种快速.完全托管的TB/PB级数据仓库解决方案.Ma ...

最新文章

  1. Sunrun2016年Q3财务业绩强劲 冲刺全年目标
  2. Asp.Net 2.0中的客户端脚本
  3. centos7 elk7.1.1安装
  4. Java 并发编程必须知道的七种锁类型以及应用
  5. 数学建模三大模型以及十大算法
  6. c语言实验报告函数及其应用,2020c语言实验报告函数总结心得.docx
  7. BLDC无刷直流电机的原理及驱动基础
  8. 人生就是一场与自己的较量,社科院杜兰金融硕士项目引领你走得更远
  9. 卡尔曼滤波器的理解,C代码实现,和opencv里面KalmanFilter 的使用
  10. 算法珠玑算法总结(转)
  11. 基于 TMS320F2812 的直流无刷电机(BLDCM)的开环控制系统
  12. VUE中fetch结合支付宝API验证银行卡号
  13. 转:我在淘宝这7年(四)
  14. 吴恩达机器学习(一)—— 简介
  15. Failed to load ‘D:\note\笔记\javaweb\webpack\webpack.config.js‘ config
  16. 导致计算机科学硕士和计算机科学理学硕士,诺丁汉大学计算机科学理学硕士研究生offer一枚...
  17. 数据库------MYSQL
  18. 洛谷 P2404 自然数的拆分问题C语言
  19. csapp-lad1
  20. 马斯克中止推特收购,分手费10亿美元

热门文章

  1. 发那科程序全部输出_发那科工业机器人该如何备份程序?
  2. 手机端二维码遮罩层加弹窗显示
  3. itunes无法识别iphone的解决方法
  4. 【R】程序注释乱码怎么办
  5. 高调创业者和成功创业者有什么区别?
  6. catia打开后拖动工具栏有残影_Catia恢复工具栏布局的操作方法
  7. python之父国籍中文名字_如何通过外国人的名字看出家族历史或者国籍?
  8. IDEA加载大文件时报错:The file size exceeds configured limit
  9. 如何用construct2来实现类似mario吃蘑菇进化的效果
  10. c语言实现udp 聊天程序代码,C语言用UDP 实现局域网聊天程序源码.doc