腾讯云平台部总经理陈磊:大数据背后的技术支撑

image.png
  • 大数据似乎在一夜之间迅速走红,它势不可挡地冲击着金融、零售等各个行业。云计算将如何改变计算的世界?未来将有怎样的应用前景?如何解决“信息孤岛”的问题?大数据又将如何提高我们决策的准确性,帮助我们更准确地预测未来?
  • 在2014年7月25日腾讯互联网与社会研究院主办的“大数据连接的未来——2014腾讯互联网与社会研究院高峰论坛”上,腾讯公司云平台部总经理陈磊分享了《大数据背后的技术支撑》。

腾讯公司云平台部总经理陈磊

大数据背后的技术支撑

我今天重点讲讲大数据背后所采用的技术。

腾讯这家公司天生在跟大量的数据打交道。在QQ业务高速的发展过程中,公司一直在利用数据,当时还没有“大数据”这个词,去分析用户的行为,去理解我怎么样能够让用户更喜欢我的产品。包括每一个聊天窗打开的方式,我们产品的每一步演进背后都有很多的数据分析在起作用。这个实际上就是互联网公司普遍采用的产品研发方式。

腾讯云生来就是在这样一个先天条件非常好的大数据环境里创造大数据技术,包括我们之前提到的广点通的广告业务,也是在这个土壤非常肥沃的环境里生长。因为我们有幸为这么多用户服务,所以我们能够通过对这海量数据的分析,来更好地服务于用户的需求。

刚才James She教授讲的后半部分的内容让我想起我们在做的广告业务已经把里面很多技术用到实践中去了。大家在打开腾讯产品时看到的广告,实际上是通过大数据的分析推送的用户最有可能关注的产品。我们跟很多硬件厂商在合作,比如有一个创业的公司,它对广告机做了一个变革和创新,我们看到酒店门口就有广告机,它是一个大的落地屏幕,上面会有广告。

我们现在让这个广告机跟广点通发生联系,这样我们就能够通过用户的QQ和微信的身份去给他展示更适合他的广告,或者更能够得到他关注的广告。所以,很多James教授讲的内容在腾讯已经变成了现实的产品在使用。

我不想讲太多大数据的应用,而想讲我们去做大数据,实际上面临哪些挑战,特别在腾讯这样一个环境里做大数据我们面临的挑战是什么。这些挑战里首先发生的,我们认为是安全的挑战,因为我们这个平台有那么多用户的行为,有那么多用户的数据,所以,我们有这种社会责任,就是去保护这些数据的安全,同时也要保证这些数据的准确。

今天行业里大量的互联网产品都有上面讲的这些问题。我们对90个要求用户用信用卡或者银行卡去做支付的电商网站或者微信公共帐号做了安全扫描分析,我们看到90个用户中有60多个都或多或少有这五类问题。其中有20多个产品是有非常严重的问题的,包括盗取用户的身份、恶意地替用户消费。所以,今天我住这个酒店的时候,酒店如果让我把信用卡信息留下,我是会非常焦虑的,因为今天我们接触的互联网产品里的安全问题非常多。

这里讲一些比较具体的案例。我们发现移动电商网站有严重的漏洞,可能会造成密码的泄漏。现在银行的所有操作都要通过短信验证,这本来是一个很好的安全手段,但是我们发现一些大银行的网站,实际上黑客是可以绕过手机短信的安全认证,让手机短信的安全认证无效的。

要做好大数据的服务,我们首先要解决的是信息安全的问题。腾讯做了这么久的互联网服务,做了这么多大数据的服务,我们基本上没有让黑客利用安全漏洞去侵害我们的用户。因为我们有一整套完备的安全防护措施,今天我们把所有的这些安全防护措施都免费拿出来给行业使用。我们希望贡献一些绵薄之力,改善整个互联网行业,特别是在大数据领域里,的安全环境。

现在讲一下我们的安全防护系统,从运营商的网络出发,我们有一个很强的DDOS防护Layer,后面我们通过系统去加固用户的服务器,包括我们的WAF外部应用的防火墙,帮助用户解决他的安全问题。刚才讲到的所有这些安全问题,举的这些例子都是可以用这样的方法去保护的。

在大数据的采集和产生的所有的点上,都是有可能会发生安全的问题的。我们通过很多技术手段去保障安全。

在有了安全的保障之后,我们拿到数据的时候,发现我们面对海量数据处理的挑战。我们看到光是广告业务所要分析的数据,每天新增的就有200TB之多,我们每天机器学习处理上百亿的用户行为反馈,分析的信息的属性和类别也会越来越多,也是百万级的,甚至我们觉得这个百万级的各种数据项还不够多,很有可能在很短的时间里我们会达到亿级的规模。

首先,这给我们带来的挑战,是怎么能够快速地把这么大量的数据集中起来,所有的这些数据发生在终端上,发生在移动终端上,发生在网页上,发生在用户使用我们服务的产品里。怎么能够让它尽快地进入到我们的分析体系里,即使它是通过网页跟我们的服务器进行交互,我们的服务器也是遍布全国的,我们在全国有三百多个网络节点,所以,我们面临一个相当大的实时数据收集的挑战。这里的解决方案,除了要去做实时同步数据的系统,我们还有几个很核心的系统,例如一个叫做Virtual IDC Connector的系统,也叫桥头堡系统,能够有效地、实时地保证所有的IDC之间数据的准确性和数据传输不丢失。

同时,除了这些软件服务能力本身之外,还要去布设整个网络基础架构,在网络的基础架构上下工夫,我们知道全国有三百多个网络节点,这三百多个网络节点的互联互通是不可能靠公网保证的。因为中国的公网有很多问题,如三网不通等等这些问题。我们在运营商网络架构的基础上搭建了完整的网络架构来解决这样的问题。

数据都采集到同一个机房之后,它面临的问题是什么呢?是我怎么去把上百万个需要计算的job能够很好地计算出来,因为数据到达的时间不一定是很确定的,我们要做实时的回流和同步,每个数据到达的时候我们希望它等最短的时间就能进入到处理阶段。我们做了一个叫“落子”的数据任务调度的体系,它是一个高度分布的体系。随着数据不断地到达,它就会产生相应的计算job,在这个过程中我们还要考虑对资源的合理使用,不希望浪费太多我们手上的资源。

我们对开源的产品Hive和Hadoop做了很多深入的修改和调整,提升它的性能,这里举了两个非常简单的例子,就不赘述了。

这里讲的是我们做的一些比较有效的优化。我们在过去的几年里对开源系统做了相当多的优化和改进。除了使用开源的产品之外,腾讯也建设了自己的叫做“腾讯数据魔方”的一个产品,实际上它要解决的问题是,我们在拿到这些原始的数据之后,能够分析出大量的结果,海量的结果,但是这些结果因为使用场景不同,需要采用不同的方式去累加。比如,有的时候我们要看的是过去三个小时的情况,过去三个小时的情况会随着时间的推移,它切出来的数据片是不一样的。我们所采用的方法就是用空间去换取时间,因为你每次重新累加过去三个小时的情况是非常痛苦的一件事情,数据量太大了。所以,我们需要去做有效的缓存,让这个有效的缓存非常聪明,能够用非常有限的空间去换取实时性,去换取非常好的实时的效果,这是“腾讯数据魔方”所起到的作用。

所以,我们要处理大规模的数据,如200T的数据来了,我们要做数据的学习,以前都是采用“T+1”的方式,“T+1”的方式在我们做广告业务的过程中太慢了,特别是腾讯的广点通的广告是展示广告,展示广告的Half Life非常短,大概一个广告图片的Half Life就只有三天,过了三天之后效果会相差很多,在这三天中它有一个非常快的衰变过程,所以,没办法用昨天用户的行为指导今天广告的投放,这个问题是实践中非常棘手的一个问题。昨天所有用户的行为,如果你认为那是准确的,用来指导今天的广告投放,你会发现效果非常差。所以,我们必须做实时的处理,这个过程中我们要去进行流式MapReduce计算Cumulative Learning,把学出来的所有参数随着新的数据进来进行微调,一开始我们是调参数,后来我们也可以调整个方程的结构,包括我们怎么有效地降维,让这个事情算得更快,加速它的收敛。经常我们会在一条路上探索的时候,用一些很苛刻的条件快速地让它停止,如果发现这个事情是不太靠谱的,要尽快让它停止,改变我们学习的方向。

刚才讲的是海量数据给我们带来的挑战。除了海量数据的挑战之外,我们会看到其实有这么大量的数据,那么怎么能够保证这些数据真的是准确的,怎么保证这个数据的结果是准确的,这是非常非常难的。同时,这么多的数据里,真正有效的数据,或者说效果最好的数据到底在哪儿,其实这些都是一个需要我们去思考的问题。

我们在这里面有一些小手段,首先用户输入的数据本身未必是准确的,我们有很多用户注册的年龄可能是0岁或者4岁,我们的整个用户的年龄段会看到0到10岁可能是一个鼓包,后面就平了,然后到二十来岁变成一个大鼓,那个鼓包是一个正态分布,但是0—10岁之间有很多是用户数据的问题。怎么能真的去找到,虽然用户没有给我们准确的数据,我们怎么能知道到底用户的实际年龄可能是多少?我们可以通过关系链的分析,通过他的一些社交的行为去一步一步地找到真实的数据。这里面讲到的例子,首先我们看到他的注册年龄是4岁,但是他的好友可能是分布在80后,甚至我们可以看到他加入的班级群,包括他在微博上follow的名人可能是某一个年龄段喜欢follow的名人,等等,各种各样的猜测,最后我们发现原来是一个40岁的中年人。

在这整个的过程中,每一步可能还是不准确的。比如他加入的班级群也未必跟他的年龄是吻合的,我们也有很多用户加入别人的班级群,比如他可能是辅导员,但是对所有的数据进行相关分析的话就能把这个问题的真相找到,就能知道这个用户原来是40岁这样一个情况。

在这里面我们当然要考虑各种各样不同的关系链,通过不同的关系链条对我们的数据进行优化和分析,保证数据的准确性。

讲到广告的算法,大家都是专家,我就不讲太多了。但是我们可以看到腾讯是通过各种各样不同的数据去分析用户可能的兴趣是在什么地方。这个数据从上到下,实际上代表了什么?代表了数据的有效性。我们越来越发现实时的或准实时的行为才是最有效的,我们分析出来很多的人口属性和我们通过他的互联网行为分析出来的兴趣特征往往反而不一定是那么准确的,或者不一定代表用户此时此刻的兴趣点。也许他有一些长期的兴趣,但那些长期的兴趣并不一定能够帮助我们决定他此时此刻关注什么,对什么感兴趣。

在我们做社交广告的过程中,我们看到实时的数据给我们带来的价值是非常大的。比如我们最早的时候采用的是“T+1”的算法,这表述的是广告系统计算的流程。首先投放系统把用户的行为数据通过海纳系统收集进来,然后通过我们的平台进行计算,算出模型,最后回馈,实时查询的系统是利用这个模型去提交广告给投放系统。

早期的时候,我们做到了数据延迟一小时。但是到了第二个阶段我们延迟15分钟的时候,我们发现我们点击率提升了22%,整体的ECPM提升了30%。这是在比较小的范围里的尝试,这里的流量看起来数很大,实际上是我们很小一部分的用户流量。在这个阶段我们采用的是流式计算的方法,采用分布式cache,把部分的计算结果cache起来,然后实时查询。这个cache里面包含部分活跃用户他可能感兴趣的广告是什么,其实也是为了优化最终用户看到的体验。

从一小时变成15分钟之后的效果是非常明显的。后面我们做了更多的优化之后,我们发现从15分钟变成秒级以后,这个效果又得到了很大的提升。

实际上从一小时到15分钟再到实时计算,实时分析在2012年广点通业务高速发展中起到最关键的和最大的作用。所以,腾讯的大数据技术是去解决安全、海量、精准和实时这几个问题。在流量采集、处理、建模、投放、应用等环节都去追求准确性,追求实时性的话,最后做出来的这样一个数据体系就有一个精准和符合用户预期的效果。