美团的大数据平台架构实践 - 知乎专栏
https://zhuanlan.zhihu.com/p/26359613
本文将介绍美团大数据平台的架构实践,原文是美团大数据构建平台架构师谢语宸在一次大会上的分享。文章分享了构建大数据平台的方法,以及各种各样的技术应用,希望能给大家一些关于大数据方面的启迪。
1.****美团大数据平台的架构
1.1****总体架构
下面我以数据流的架构角度介绍一下整个美团数据平台的架构,最左边首先从业务流到平台,分别到实时计算,离线数据。
数据收集特性:
对于数据收集平台,日志数据是多接口的,可以打到文件里观察文件,也可以更新数据库表。关系型数据库是基于Binlog获取增量的,如果做数据仓库的话有大量的关系型数据库,有一些变更没法发现等情况,可以通过Binlog手段可以解决。通过一个Kafka消息队列集中化分发支持下游,目前支持了850以上的日志类型,峰值每秒有百万介入。
流式计算平台特性:
构建流式计算平台的时候充分考虑了开发的复杂度,基于Storm。有一个在线的开发平台,测试开发过程都在在线平台上做,提供一个相当于对Storm应用场景的封装,有一个拓扑开发框架,因为是流式计算,我们也做了延迟统计和报警,现在支持1100以上的实时拓扑,秒级实时数据流延迟。这上面可以配置公司内部定的某个参数,某个代码,可以在平台上编译有调试。
离线计算平台特性:
目前42P+总存储量,每天有15万个Mapreduce和Spark任务,有2500+节点,支持3机房部署,数据库总共16K个数据表,复杂度还是比较高的。
1.3****数据管理体系
数据管理体系特性:
数据管理体系主要包括自研的调配系统,数据质量的监控,资源管理和任务审核以及开发配置中心等等,之后这些都会整合到整个的数据开放平台。
数据管理体系主要实现了这样几点功能,
第一点是基于SQL解析做了ETL任务之间的自动解析。
基于资源预留的模式做了各业务线成本的核算,整体的资源大体是跑到Yarn上的,每个业务线会有一些承诺资源、保证资源,还可以弹性伸缩,里面会有一些预算。
工作的重点,对于关键性任务会注册SLA保障,并且包括数据内容质量,数据时效性内容都有一定的监控。
1.4****关于BI****产品
在前端分析方面,我们开发了星空展示中心,可以基于前面指标提取结果,配置一系列的饼图、线图、柱状图,去拖拽,最后构建出一个dashboard,功能同市面上的其他BI类似。
2.****平台演进时间线
2.1 ****平台发展
面对这个问题我们做了一个目前来看还算比较好的决策,就是重度依赖SQL。对SQL分装了一些报表工具,对SQL做了etl工具。主要是在SQL层面做一些模板化的工具,支持时间等变量。这个变量会有一些外部的参数传递进来,然后替换到SQL的行为。
在2011下半年,我们引入了整个数据仓库的概念,梳理了所有数据流,设计整个数据体系。做完了数据仓库整体的构建,发现整体的ETL被开发出来了。首先ETL都是有一定的依赖关系的,但是管理起来成本非常高,所以自研了一个系统。另外发现数据量越来越大,原来基于单机MySQL的数据解析是搞不定的,所以2012年上了四台Hadoop机器,后面十几台,到最后的几千台,目前可以支撑各个业务去使用。
2.2 ****最新进展
我们也做了一个非常重要的事就是ETL开发平台,原来都是基于Git仓库管理,管理成本非常高,当时跟个业务线已经开始建立自己数据开发的团队,我们把他们开发的整个流程平台化,各个业务线就可以自建。之后遇到的业务场景需求越来越多,特别是实时应用。2014年启动了实时计算平台,把原来原有关系型数据表全量同步模式,改为Binlog同步模式。我们也是在国内比较早的上了Hadoop2.0 on Yarn的改进版,好处是更好的激起了Spark的发展。另外还有Hadoop集群跨多机房,多集群部署的情况,还有OLAP保障,同步开发工具。
3.****平台化思路总结
3.1****平台的价值
作为一个平台的团队,核心价值其实就三个:
一是对于重复的事情要做精做专;
二是统一化。可以推一些标准,推一些数据管理的模式,减少业务之间的对接成本;
最重要的是为业务整体效率负责,包括开发效率、迭代效率、维护运维数据流程的效率,还有整个资源利用的效率。
3.2****平台的发展
如果才能发展成一个好的平台呢?
我理解的三点:
首先支持业务是第一位的,如果没有业务我们平台其实是没法继续发展的。
第二是与先进业务同行,辅助并沉淀技术。在一个所谓平台化的公司,有多个业务线,甚至各个业务线已经是独立的情况下,必定有一些业务线是先行者,他们有很强的开发能力、调研能力,我们的目标是跟这些先行业务线同行。
第三是设立规范,用积累的技术支撑后发业务。与业务一起前进的过程中,把一些经验、技术、方案、规范慢慢沉淀下来。对于刚刚新建的业务线,或者发展比较慢的业务线,我们基本策略是设置一系列的规范,跟优先先行业务线积累去支撑后续的业务线,以及功能开发的时候也可以借助。保持平台团队对业务的理解。
3.3****关于开源
以上谈到的平台中有很多是开源的直接拿来用的,比如说,zeppelin,Kylin。
我们的策略是持续关注,其实也是帮业务线做前瞻性调研,他们团队每天都在看数据,看新闻,他们会讲新出的一个项目你们怎么推,你们不推我们推了,我们可能需要持续关注,设计一系列的调研方案,帮助这些业务去调研,这样调研这个事情我们也是重复的事情只干一次。
如果有一些共性patch的事情,特别一些bug、问题内部也会有一个表共享,内部有大几十个patch。选择性的重构,最后才会大改,特别在选择的时候我们强调从业务需求出发,理智的进行选型权衡,最终拿出来的方案是靠谱能落地实施的方案。
文章源自公众号「帆软数据应用研究院」,ID: fr_research。关注公众号,回复 “美团” 可获取案例PPT!
往期案例推荐:
链家网大数据平台建设,平台枢纽--工具链
大数据平台在互联网行业的应用
互联网数据分析的底层应用架构