重磅 | 腾讯大数据宣布开源第三代高性能计算平台Angel

AI科技评论按:昨日,腾讯大数据技术峰会暨KDD China技术峰会上在深圳召开,腾讯数据平台部总经理,首席数据专家蒋杰做了腾讯大数据平台Angel即将全面开源的报告,AI科技评论现场摘编如下。

获得Sort benchmark4冠军背后

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

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

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

过去几年,获得冠军的团队,用的基本上都是Hadoop和Spark,其实腾讯的大数据平台,也是始于Hadoop的。我们之所以能获得四项的冠军,是我们经历了几年的打磨,追求极致,我们希望最大限度地压榨机器的性能。

  • 首先,从成本的角度,只有把硬件压榨到极致,成本才会低。我们采用的是OpenPower架构的机器,按节点数计算,我们规模只有去年冠军的六份一,按照今年的硬件价格,我们总的TCO成本远低于去年冠军。
  • 在调度层面,我们对调度算法做了深度优化,使得每台机器的CPU、内存、网络、磁盘IO等每个环节都能发挥到极致。本次比赛的其中两项为MinuteSort,比拼的就是一分钟内的排序数据量,这个时间调度的效率就变得非常重要,而这两项比赛我们比去年提升了5倍,是提升幅度最高的;这也从另一个方面说明了我们在调度效率上的领先性。总结为一句话,就是最大限度地压榨了硬件的性能,才让我们取得这个成绩。
  • 目前我们用于比赛的这个集群,已经在我们的现网中用起来了,在高性能计算、图计算、深度学习等领域支撑腾讯的现网应用。

7年里三代平台

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

  • 2009-2011年是我们的第一代平台,我们的第一代平台,只支持批量计算的场景,主要就是报表,这个过程,我们重点发展了平台的可扩展性,我们不断增大集群的规模,从09年的几十台,发展到现在总规模接近3万台。总结成几个字,第一代就是规模化。
  • 第二代,用三个字总结就是实时化。这是2012年到2014年。主要支持在线分析和实时计算的场景,比如实时报表,实时查询、实时监控等。
  • 第三代是去年到现在,主要建设机器学习平台,支持腾讯各业务数据挖掘的需求。这是从数据分析到数据挖掘的转变,三个字总结就是“智能化“。

第一代

第一代是离线计算的架构,是基于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 聚类算法;这个时候的推荐技术,面对海量的用户群体访问,更多还是基于一种实时查询的服务方式。

第二代

第一代平台解决了量大的痛点,但是在速度方面还有问题,数据是离线的,任务计算是离线的,实时性差。所以,我们建设了第二代的大数据平台。在第一代基础上,集成了Spark,同时,还融合了Storm流式计算的框架。这一代平台的集成,让我们的计算的粒度从原来的小时,发展到分钟,直至秒级。

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

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

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

第二代的平台,实时性和体量方面,都能满足绝大多数业务需求。但随着我们的数据量越来越大,我们的瓶颈很快也出现了。我们在Spark上做数据训练的时候,每一轮的迭代,在更新数据的时候,都会遇到网络方面的瓶颈,因为更新数据的地方是一个单点,如果数据的维度很大,这套框架就无法支撑。

在我们的实际应用中,千万级的维度,都可以run得不错,但是上了亿级,性能就非常低了,甚至跑不出来。

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

第三代-自研平台Angel

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

我们看了当时业内比较流行的几个产品

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

看了一圈,我们决定自研,走自研的路。我们前两代都是基于开源的,第三代则开始了自研的历程。其实在第二代,我们已经尝试自研,我们消息中间件,不论是高性能的,还是高可靠的版本,都是我们自研的。他们经历了腾讯亿万流量的考验,这也给了我们在自研方面很大的信心。因此,第三代整体的计算框架方面,我们也走了自研的道路。第三代的平台,核心是一个叫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上,20多亿文档、几百万个词,3000亿的token,1个小时就跑完了。

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

Angel不仅仅是一个只做并行计算的平台,它更是一个生态。

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

总结

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

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

我们从跟随开源,发展到自研,我们的发展历经了规模化、实时化,以及智能化的变迁。最后,我要借这个机会跟大家公布一个消息,那就是:我们的大数据平台将全面开源。

我们会在明年上半年把Angel以及Angel周边的系统进行开源。我们平台源自开源,我们的发展离不开开源,所以我们会以最大的力度拥抱开源。

其实在开源的道路上,我们一直都在参与:

  • 我们第一代平台的核心,TDW-Hive,已经在2014年就开源了;
  • 我们还在很多社区项目贡献了很多核心代码,培养了好几个committer。
  • 而未来,我们的开源力度只会越来越大。

小结:

在AI科技评论眼里,Angel是腾讯完全自主的大数据平台,按照腾讯的说法无论是在性能还是实用性,Angel比其它平台都有很大的优势,但让业界为之震惊的还是腾讯将其开源,而且开源的力度也是腾讯过去2代计算平台无法比拟的,毋庸置疑,对下游厂商来讲,这是一个利好消息。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2016-12-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

【深解读】什么是数据科学?如何把数据变成产品?

1112
来自专栏PPV课数据科学社区

大数据从小做起—中小企业的Big Data之道

任何一个时代或者模式的兴起,都离不开与之相关的Killer App,比如,C/S时代的SAP ERP,互联网 1.0 时代的门户,以及互联网 2.0时代的搜索和...

3145
来自专栏人工智能头条

学会“投机取巧”——Redis之父九条忠告,如何成为“一打十”的程序员

1373
来自专栏腾讯大讲堂的专栏

《天涯明月刀》引擎技术和技术突破

引言:6.14日“腾讯创新日:科技年技术盛宴”代表腾讯各个事业群技术实力的四级专家、腾讯微创新2016年度创意获奖团队欢聚一堂,一起畅谈AI、系统安全、架构设计...

2865
来自专栏SDNLAB

Arrcus为白盒数据中心基础架构构建网络操作系统

总部设在加利福尼亚州圣何塞的初创公司Arrcus从隐身中脱颖而出,本周一推出了ArcOS系统。这是一个独立的,与硬件无关的网络操作系统,适用于白盒系统,专门针对...

852
来自专栏GopherCoder

『No22: 如何梳理代码逻辑』

在日常工作中,作为初中级程序员,大部分的工作是在实现业务逻辑,但有可能整个项目的代码,你不是第一个接手的,即代码结构不是你设计,前期的需求讨论你也没有参与,最常...

1095
来自专栏SDNLAB

边缘计算的未来:不仅仅是物联网

什么是边缘计算,为什么我们有这样的结论?为此,我们首先需要了解云和SaaS的发展方向。

1043
来自专栏Java架构师学习

一名程序员的2017年末总结

眼看着又一年结束,想想今年过的还真是快,上个画面还是去年年末各种处理故障的场景,一眨眼一年就过去了。既然过了一年,还是得留下些思考和展望,否则就有些太无趣了。 ...

3557
来自专栏灯塔大数据

产品经理究竟应该关注什么数据 由产品特点和生命周期决定

产品这群人啊,真的是三句话不离老本行,之前和部门的产品Mentor一起吃饭的时候,他问了我这么一个问题:“如果你是饿了么的产品经理,那你日常工作的时候应该关注一...

2946
来自专栏架构说

程序员的5种角色(不容易呀)

英文:exceptionnotfound。 译文:伯乐在线 - ashiontang 链接:http://blog.jobbole.com/86900/ 我认为...

2649

扫码关注云+社区