腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

演讲主题:Sort Benchmark夺冠背后

演讲人:蒋杰 腾讯数据平台部总经理

今年11月,腾讯云大数据联合团队在有“计算奥运会”之称的Sort Benchmark排序竞赛中,用时不到99秒完成100TB的数据排序,在测试大规模分布式系统软硬件架构能力和平台计算效率的GraySort和MinuteSort两项排序竞赛中夺得4个冠军,将去年冠军的纪录分别提高二到五倍。冠军的背后是腾讯大数据多年的积累,而Angel更是腾讯大数据下一代的核心计算平台。

以下为演讲全文:

大家好,很多人已经知道腾讯获得了今年的Sort benchmark的排序的4项冠军,很多朋友来问我,腾讯是怎么做到的,背后支撑的究竟是什么样的技术?今天,我借这个机会,跟大伙来讲讲背后的一些故事。

相信很多人看过我们在很多城市机场投放的这个广告,这个广告里面画的是一个赛跑的选手,排序比赛,就跟奥运会的百米赛跑一样,都要很快。但我想说的是,其实我们更像一个长跑选手,我们在跑马拉松,这场马拉松,我们跑了7年。

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

回顾过去几年的比赛的成绩,几年前冠军都是被美国企业垄断的,最近三年则是BAT拿了冠军。应该说,这几年,国内互联网的发展速度不比美国慢,与此同时,以BAT为代表的国内互联网企业的计算能力也不落后于美国。

过去几年,获得冠军的团队,用的基本上都是Hadoop和Spark,其实腾讯的大数据平台,也是始于Hadoop的。

我们之所以能获得四项的冠军,是我们经历了几年的打磨,追求极致,我们希望最大限度地压榨机器的性能。

首先,从成本的角度,只有把硬件压榨到极致,成本才会低。我们采用的是OpenPower架构的机器,按节点数计算,我们规模只有去年冠军的六份一,按照今年的硬件价格,我们总的TCO成本远低于去年冠军。

在调度层面,我们对调度算法做了深度优化,使得每台机器的CPU、内存、网络、磁盘IO等每个环节都能发挥到极致。本次比赛的其中两项为MinuteSort,比拼的就是一分钟内的排序数据量,这个时间调度的效率就变得非常重要,而这两项比赛我们比去年提升了5倍,是提升幅度最高的;这也从另一个方面说明了我们在调度效率上的领先性。总结为一句话,就是最大限度地压榨了硬件的性能,才让我们取得这个成绩。

目前我们用于比赛的这个集群,已经在我们的现网中用起来了,在高性能计算、图计算、深度学习等领域支撑腾讯的现网应用。

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

回顾我们走过的7年,我们是2009年1月开始基于Hadoop来开发我们的大数据平台,七年的征程,我们历经了3代平台的发展。

2009-2011年是我们的第一代平台,我们的第一代平台,只支持批量计算的场景,主要就是报表,这个过程,我们重点发展了平台的可扩展性,我们不断增大集群的规模,从09年的几十台,发展到现在总规模接近3万台。总结成几个字,第一代就是规模化。

第二代,用三个字总结就是实时化。这是2012年到2014年。主要支持在线分析和实时计算的场景,比如实时报表,实时查询、实时监控等。

第三代是去年到现在,主要建设机器学习平台,支持腾讯各业务数据挖掘的需求。这是从数据分析到数据挖掘的转变,三个字总结就是“智能化“。

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

第一代是离线计算的架构,是基于Hadoop开发的, 我们起名叫TDW,腾讯分布式数据仓库的意思。

社区的Hadoop迭代慢,单一集群规模小,稳定性和易用性都很差,不能达到腾讯的要求,因此我们按腾讯的业务运营标准,做了深度定制开发,我们着重发展集群的规模,解决Master单点瓶颈不能扩展的问题,我们优化了调度策略来提高Job的并发性,也加强HA容灾建设,还有很关键的一点的是,我们丰富了Hadoop的周边生态,建设了配套的工具和产品来降低用户的使用门槛,语法上,我们兼容Oracle的语法,方便腾讯各产品部门做程序的迁移,Hadoop大数据的性能很强,但是小数据分析的效率很差,我们就集成了PostgreSQL来提升小数据的分析性能,打通Hadoop和PG的访问界限。

就这样,我们从最开始的几十台、到几百台、到几千台,几年以后,在2013年单一集群达到4400台,2014年单一集群突破8800台,处于业界领先的水平。目前我们的总规模接近3万台。

TDW的建成,解决了我们内部三大业务痛点:

第一,它使我们具备了T/P级的数据处理能力,几十亿、百亿级的数据量,基本上30分钟就能算出来。

第二,它的成本很低,我们可以使用很普通的PC Server,就能达到以前小型机一样的效果;

第三,容灾方面,原来只要有机器宕机,业务的数据肯定就有影响,各种报表、数据查询,都出不来。现在TDW的机器宕机,业务完全无感知,系统会自动做切换、数据备份等等的事情。

正是解决了业务的这些痛点,业务部门都愿意把计算迁移到TDW。到2012年底,我们把所有原来在Oracle和mysql上跑的报表都切换到TDW。

TDW的建成,让我们具备了融合所有产品平台的数据的能力。

以前的各产品的数据都是分散在各自的DB里面的,是一个个数据孤岛,现在,我们以用户为中心,建成了十亿用户量级、每个用户万维特征的用户画像体系。

以前的用户画像,只有十几个维度主要就是用户的一些基础属性,比如年龄、性别、地域等,以前构建一次要耗费很多天,数据都是按月更新,有了TDW,我们每天更新一次。

这个用户画像,应用在腾讯所有跟精准推荐相关的产品里面。

再举个推荐的例子。推荐相信大家现在都耳熟能详,但是放在6年前,这还是一个刚刚新兴起的应用;TDW 为我们提供了一个快速切入快速支撑的能力。通过 MapReduce 的编程范式,基于 TDW 的平台,我们可以专注于各种推荐算法逻辑本身的实现,比如大家常见的 CF,MF,LR 这些算法,以及各种 hash 聚类算法;这个时候的推荐技术,面对海量的用户群体访问,更多还是基于一种实时查询的服务方式。

第一代平台解决了量大的痛点,但是在速度方面还有问题,数据是离线的,任务计算是离线的,实时性差。所以,我们建设了第二代的大数据平台。

在第一代基础上,集成了Hadoop的第二代——Spark,同时,还融合了Storm流式计算的框架。这一代平台的集成,让我们的计算的粒度从原来的小时,发展到分钟,直至秒级。

数据采集方面,我们构建了TDBank,让原来通过接口机传文件的方式,T+1的粒度,变成了毫秒级的实时采集。在这个采集平台里面,我们自研的消息中间件,每天采集的消息条数超过6.5万亿,可以说是世界上消息量最大的消息中间件。同时,我们还有高可靠版本的消息中间件,能支持像金融、计费等高一致性的需求,保证消息不丢。

在资源调度层面,我们基于Yarn,发展了我们的Gaia调度平台,Yarn只支持CPU和内存的维度,而我们的Gaia还支持网络以及磁盘IO的维度,Yarn只支撑离线计算,Gaia能支持在线的场景,另外,我们还Docker,我们平台现在每天有1.5个container。

再拿刚才提到的推荐例子,基于第一代平台的推荐应用会碰到2个问题,一个是随着用户量,访问量的增多,产生的数据会越来越多,多到在有限的时间根本不可能批处理的计算完,还有一点是用户的行为模式变化很快,需要更快的去更新各种维度的用户画像;数据的实时采集让用户行为,实时画像的计算成为可能,这构成了流式计算的 数据流,分布式的流式计算实时更新各个维度的统计量,进一步形成了推荐算法的实时训练数据,从而把上一代的 offline 的推荐系统变成了 online 的实时推荐系统。在广告的推荐应用上,我们可以看到每一次的实时加快,都带来了更大的点击率提升。

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

第二代的平台,实时性和体量方面,都能满足绝大多数业务需求。但随着我们的数据量越来越大,我们的瓶颈很快也出现了。

我们在Spark上做数据训练的时候,每一轮的迭代,在更新数据的时候,都会遇到网络方面的瓶颈,因为更新数据的地方是一个单点,如果数据的维度很大,这套框架就无法支撑。在我们的实际应用中,千万级的维度,都可以run得不错,但是上了亿级,性能就非常低了,甚至跑不出来。

所以,我们必须要建设一个能支持超大规模数据集的一套系统,能满足billion级别的维度的数据训练,而且,这个系统必须能满足我们现网应用需求的一个工业级的系统。它能解决big data,以及big model的需求,它既能做数据并行,也能做模型并行。

有两种思路。

一个是基于第二代平台的基础上做演进,解决大规模参数交换的问题。另外一个,就是新建设一个高性能的计算框架。

我们看了当时业内比较流行的几个产品,GraphLab,主要做图模型,容错差;Google的Distbelief,还没开源;还有CMU Eric Xing的Petuum,当时很火,不过它更多是一个实验室的产品,易用性和稳定性达不到我们的要求。

看了一圈,我们决定自研,走自研的路。我们前两代都是基于开源的,第三代则开始了自研的历程。其实在第二代,我们已经尝试自研,我们消息中间件,不论是高性能的,还是高可靠的版本,都是我们自研的。他们经历了腾讯亿万流量的考验,这也给了我们在自研方面很大的信心。

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

因此,第三代整体的计算框架方面,我们也走了自研的道路。第三代的平台,核心是一个叫Angel的高性能计算平台。

我们聚焦在高性能的计算框架方面,同时,也是我们往机器学习、深度学习演进的一个路线。

相比第二代,第三代的计算框架,可以支持10亿级维度的算法训练,由以前的数据并行,到可以支持模型并行。

同时,我们第三代的平台,还支持GPU深度学习,支持文本、语音、图像等非结构化的数据。

Angel是基于参数服务器的一个架构,它跑在我们的Gaia平台上面的。

它支持BSP、SSP、ASP三种计算模式;支持数据并行以及工业界更看重的模型并行,因为我们主要碰到的还是模型大的问题;

另外,在网络上我们有个原创的尝试,我们用了港科大杨老师的团队做的诸葛弩来做网络调度,ParameterServer优先服务较慢的Worker,当模型较大时,能明显降低等待时间,任务总体耗时下降5%~15%。

Angel提供很丰富的算法,支持LR、SVM、LDA、GDBT等等,并且集成了非常丰富的数学函数库,另外,还提供非常友好的编程界面,能跟Spark、MR对接,你能像用MR、Spark一样编程。

Angel跟其他平台相比,比如Petuum,和spark等,就我们的测试结果,在同等量级下,Angel的性能要优于其他平台。比如我们用Netflix的数据跑的SGD算法,大家看一下这个图的对比。

同时,Angel更适合超大规模的数据训练。目前Angel支持了很多腾讯内部的现网业务。

这里举两个例子,比如,在构建用户画像方面,以前都是基于Hadoop和Spark来做,跑一次模型要1天甚至几天,话题只有1k;而在Angel上,200多亿文档、几百万个词,3000亿的token,1个小时就跑完了。以前Spark能跑的,现在Angel快几十倍;以前Spark跑不了的,Angel也能轻松跑出来。

再看一个case,视频的点击预测,同等数据量下,Angel的性能是Spark的44倍以上。用了Angel以后,我们维度从千万扩展到亿,训练时间从天缩短到半小时,而准确度也有不小的提升。

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

Angel不仅仅是一个只做并行计算的平台,它更是一个生态,我们围绕Angel,建立了一个小生态圈,它支持Spark之上的MLLib,支持上亿的维度的训练;我们也支持更复杂的图计算模型;同时支持Caffe、TensorFlow、Torch等深度学习框架,实现这些框架的多机多卡的应用场景。

各位,临近尾声了,我想总结一下腾讯大数据平台发展的三个阶段:

我们从离线计算起步,经过实时计算阶段,进入了机器学习的时代。

我们从跟随开源,发展到自研,我们的发展历经了规模化、实时化,以及智能化的变迁。

腾讯腾讯数据平台部总经理蒋杰:腾讯大数据发展之路和Sort Benchmark夺冠背后

最后,我要借这个机会跟大家公布一个消息,那就是:我们的大数据平台将全面开源。

我们会在明年上半年把Angel以及Angel周边的系统进行开源。

我们平台源自开源,我们的发展离不开开源,所以我们会以最大的力度拥抱开源。

其实在开源的道路上,我们一直都在参与:我们第一代平台的核心,TDW-Hive,已经在2014年就开源了;我们还在很多社区项目贡献了很多核心代码,培养了好几个committer。

而未来,我们的开源力度只会越来越大。

谢谢大家。

End.

随意打赏

腾讯直播平台腾讯手游平台腾讯开放平台腾讯公众平台腾讯媒体平台腾讯腾讯
提交建议
微信扫一扫,分享给好友吧。