小编推荐:长文预警,干货预警,技术部分术语众多可能比较难理解,但本着探秘腾讯大数据的心来看,了解一下也不错,有看不懂的地方可以暂时收藏,干货难得噻~
腾讯业务产品线众多,拥有海量的活跃用户,每天线上产生的数据超乎想象,必然会成为数据大户,为了保证公司各业务产品能够使用更丰富优质的数据服务,腾讯的大数据平台做了那些工作?具备哪些能力?
大数据,这个词越来越热,很多人都在谈大数据,其实很多张口闭口大数据的人,或许都不知道数据是如何产生、传递、存储、运算到应用的。其实我一直感觉大数据这个东西有时候真的不是一般企业可以玩的溜的,特别是随着传统业务增长放缓,以及移动互联网时代的精细化运营,对于大数据分析和挖掘的重视程度高于以往任何时候,如何从大数据中获取高价值,已经成为大家关心的焦点问题。
腾讯业务产品线众多,拥有海量的活跃用户,每天线上产生的数据超乎想象,必然会成为数据大户,为了保证公司各业务产品能够使用更丰富优质的数据服务,腾讯的大数据平台做了那些工作?具备哪些能力?记者采访到了腾讯数据平台总经理蒋杰先生,他将给大家揭秘腾讯的大数据平台!
建设专业数据平台、持续提升处理能力、贴身满足业务需求、挖掘创造数据价值———蒋杰(腾讯大数据团队使命)
问: 首先还是请蒋总介绍一下自己和你的职业生涯。
蒋杰:我是蒋杰,目前是腾讯数据平台部的负责人。我的第一份工作其实并非在互联网行业,而是在传统IT行业工作了五年。随着互联网在中国的爆发,我也从传统IT行业转移到了阿里巴巴,在那里的五年也是我在互联网行业起步和成长的五年。之后有机会与腾讯结缘,对我来说也是进一步提升和发挥的机会,于是就举家由杭州南迁到深圳工作至今了!
十多年的职业生涯,转换过公司也转换了工作生活的城市,但一直不变的是我的工作始终围绕着“数据”展开,无论是在传统IT行业,还是之后的互联网行业,“数据”始终是我工作的核心内容,而我自己最大的职业追求也离不开“数据”,我想可能未来十年到二十年之内我的工作还是会围绕着“数据”,因为我热爱大数据的技术,也在不断发掘数据中蕴藏的巨大价值,并相信数据在不断地改变着我们的生活!
问: 可否介绍一下目前腾讯数据平台部的技术团队规模和结构是怎样的?
蒋杰:目前我们数据平台部共有200多人。整个数据平台是按照基础平台、核心应用、产品包装和质量监控的思路分为四部分:
产品中心,负责大数据产品的策划和运营;
质量中心,负责我们的质量监控与保障。
蒋杰:要说腾讯的数据情况,得从不同的业务说起。其中主要包括以下5种:
QQ:月活跃用户超8亿,最高同时在线1.9亿;在线人际关系链超1000亿;
微信:月活跃超3.5亿;日均消息量超50亿;
空间:月活跃用户超6亿;日均相册上传超过4亿;日写操作总数过10亿;
游戏:腾讯游戏月活跃用户4.5亿;手机游戏月活跃用户近2亿;
网站:日均浏览量PC侧超17亿,手机侧近13亿;日访问用户量PC侧近1.3亿;手机侧近8千万;
从这些数据可以看到,腾讯每天的数据量是一个天文的数字,目前最高日接入消息条数8000亿 ,日接入数据量200TB,并发分拣业务接口10000个。
问: 能不能详细介绍一下这个平台架构的架构设计思路?
蒋杰:其实这些你都可以从腾讯目前的发展看出来,主要考虑的是数据开放、专业化、成本三点。
数据开放:使得公司数据集中形成数据开放,在保障数据安全性的前提下,提供自助化服务平台,从人肉服务模式转向平台自动化服务方式,帮助BG数据分析人员通过自助服务的方式,降低人工成本,满足快速增长的需求。
专业化:从提供大量独立的系统/工具转变向提供集成、一体化、自动化数据开发平台服务。来源各个业务块数据进行整合和深入挖掘产生用户画像,为业务提供有价值的服务,并且快速孵化更多的数据应用。
成本与性能:优化平台存储和计算方案、优化的数据模型和算法、去除重复计算和存储;通过建设大规模集群,形成规模效应,提升平台能力并降低成本;随着平台上的数据量、用户数、任务数不断增长,每个新用户/新任务带来的新增成本不断降低,成本优势可以不断放大。
问: 能不能详细介绍一下这个平台架构的构建过程?
蒋杰:腾讯大数据平台现在主要从离线和实时两个方向支撑海量数据接入和处理,核心的系统包括TDW、TRC和TDbank。
数据平台部服务介绍
TDW是我们从2009年开始自研的腾讯分布式数据仓库,我们基于开源的hadoop+hive架构做了大量优化,包括兼容商业数据库语法和hadoop单点消除及可扩展性提升等。从2011年正式发布上线到2013 年初,TDW完成了对腾讯公司内部几乎全业务的覆盖,成为腾讯最大的离线处理平台,目前接入的数据量已达到百P级别,并伴随业务的发展和新业务的出现不断快速增长。
2010年起,随着业务对实时数据处理需求的增强,我们开始进行新的平台规划与建设:我们基于storm研发了腾讯实时计算平台TRC,我们将社区的storm用java重新改写以提升稳定性和效率,并且使它运行在我们的统一资源管理平台GAIA上,进一步提升集群效率和扩展能力;为了方便用户使用,我们为TRC开发了SQL和Pig用户接口,并且在此基础之上进一步提供了可视化拖拽式开发环境,使业务开发实时计算逻辑更加方便;目前TRC每天提供几万亿次实时计算能力,在以效果广告为代表的趋势预测、交叉分析、实时统计等领域的应用上取得了非常好的效果。
与此同时我们在数据接入方面研发了实时数据接入和分发系统TDbank,这个系统使业务数据采集延迟从之前的天级别,缩短到当前的秒级别;我们主要对TDbank做了异构数据源适配,跨城公网传输,数据高一致性保证,分布式消息队列等;目前TDBank每天收集的数据量接近10000亿条,这些数据主要输送给TDW和TRC,分别作离线分析和实时计算,可以说,这是我们成功支撑海量实时和离线处理的前提。
问: 能不能和我们详细的介绍腾讯大数据平台具体模块的底层如何实现以及它们的作用?
蒋杰:刚才说到了腾讯大数据平台有如下核心模块:TDW、TRC、TDBank、TPR和Gaia。简单来说,TDW用来做批量的离线计算,TRC负责做流式的实时计算,TPR负责精准推荐,TDBank则作为统一的数据采集入口,而底层的Gaia则负责整个集群的资源调度和管理。
Gaia
Gaia的目标是实现更高效的资源调度, 基于Yarn的通用资源调度平台,提供高并发任务调度和资源管理,实现集群资源共享、可伸缩性和可靠性,不仅可以为MR等离线业务提供服务,还可以支持实时计算,甚至在线service业务。
Gaia 技术特点:
强扩展性:支持单cluster万台规模 (已达到6000节点,14w+核,1250个pool)
高调度吞吐:毫秒级的下发效率(App并发3.5k,Container匹配时间0.2ms)
弹性内存管理:hardlimit+softlimit相结合充分利用整机资源
多维度资源管理:新增Network IO、Disk IO等资源管理维度,提升了隔离性
丰富的用户api:为业务提供更便捷的容灾、扩容、缩容和升级等方式
建立“on Gaia”生态圈:支持storm、spark、MR等各种应用
Gaia-应用情况:
上层业务包括MR 、Hive、PIG、Strom 、Spark等
为业务提供自动的容灾、资源管理与调度、权限管理、自动扩容缩容支持等
单集群8800节点,业内最大集群
TDBank
TDBank是从业务数据源端实时采集数据,进行预处理和分布式消息缓存后,按照消息订阅的方式,分发给后端的离线和在线处理系统。
TDBank构建数据源和数据处理系统间的桥梁,将数据处理系统同数据源解耦,为离线计算TDW和在线计算TRC平台提供数据支持。目前通过不断的改进,将以前Linux+HDFS的模式,转变为集群+分布式消息队列的模式,将以前一天才能处理的消息量缩短到2秒钟!
从架构上来看,TBank可以划分为前端采集、消息接入、消息存储和消息分拣等模块。前端模块主要针对各种数据形式(普通文件,DB增量/全量,Socket消息,共享内存等)提供实时采集组件,提供了主动且实时的数据获取方式。中间模块则是具备日接入量万亿级的基于“发布——订阅”模型的分布式消息中间件,它起到了很好的缓存和缓冲作用,避免了因后端系统繁忙或故障从而导致的处理阻塞或消息丢失。针对不同的应用场景,TDBank提供数据主动订阅模式,以及不同的数据分发支持(分发到TDW数据仓库,文件,DB,HBase,Socket等)。整个数据通路透明化,只需简单配置,即可实现一点接入,整个大数据平台可用。
TDW
腾讯分布式数据仓库。它支持百PB级数据的离线存储和计算,为业务提供海量、高效、稳定的大数据平台支撑和决策支持。基于开源软件Hadoop和Hive进行构建,并且根据公司数据量大、计算复杂等特定情况进行了大量优化和改造。
目前单集群最大规模达到6000台、CPU(14万核)、内存(380 TB)、磁盘( 7.2万块)、存储容量(100 PB);每天Job数 100万+、每天扫描数据量6.5 PB、存储利用率85%、CPU利用率90%+、网络利用率90%+。
同时为了满足挖掘分析与交互式实时查询的计算需求,腾讯大数据使用了Spark平台来支持挖掘分析类计算、交互式实时查询计算以及允许误差范围的快速查询计算,目前腾讯大数据拥有超过200台的Spark集群,并独立维护Spark和Shark分支。
TRC
基于在线消息流的实时计算模型,对海量数据进行实时采集、流式计算、实时存储、实时展示的全流程实时计算体系。
TRC是基于开源的Storm深度定制的流式处理引擎,用JAVA重写了Storm的核心代码。为了解决资源利用率和集群规模的问题,重构了底层调度模块,实现了任务级别的权限管理、资源分配、资源隔离,通过和Gaia这样的资源管理框架相结合,做到了根据线上业务实际利用资源的状况,动态扩容&缩容,单集群轻松超过1000台规模。为了提高平台的易用性和可运维性,提供了类SQL和Piglatin这样的过程化语言扩展,方便用户提交业务,提升接入效率,同时提供系统级的指标度量,支持用户代码对其扩展,实时监控整个系统运营环节。另外将TRC的功能服务化,通过REST API提供PAAS级别的开放,用户无需了解底层实现细节就能方便的申请权限、资源和提交任务。
核心技术:
Java for Storm
纯java语言实现,更好的可维护性
功能扩充:解决nimbus单点、度量(Metrics)、安全/权限增加、动态升级
Storm on Gaia
任务间资源隔离
灵活的权限控制策略
更优异的容灾能力
自动扩缩容
PigLatin/SQL on Storm
过程化类SQL编程接口
降低实时计算业务技术门槛
提升业务开发效率
应用场景:
•精准推荐
•广点通广告推荐
•新闻推荐
•视频推荐
•游戏道具推荐
•实时分析
•微信运营数据门户
•效果统计
•订单画像分析
•实时监控
•实时监控平台
•游戏内接口调用
TPR
以人为核心的数据挖掘,提供“海量、精准、实时”的个性化推荐服务。
实现从天到分钟的转变
计算模式演进
应用场景:
用户画像的建立是精准推荐的基础
虚拟用户现实化,人口属性的建立
长期兴趣+短期兴趣
定制化定向人群
以效果广告为代表的精准营销
推荐周期短,实时性要求高
用户短期兴趣和即时行为影响力大
投放场景上下文和访问人群特性
以视频推荐为代表的内容推荐
长期兴趣的累积影响力大
时段和热点事件
多维度内容相关性很重要
以电商推荐为代表的购物推荐
长期+短期兴趣+即时行为综合
最贴近现实,季节与用户生活信息很关键
追求下单与成交,支付相关
问: 以上都是腾讯大数据平台的架构,能不能和我们分享一下具体的产品?
蒋杰:简单说说TOD和MTA吧。TOD,Tencent Open Data,基于腾讯在业界领先的大规模计算集群,提供数据采集、自助加工、任务调度等能力的云端大数据解决方案。它的优势是:
不用采购任何物理设备,即开即用。
不用担心数据量膨胀的时候无法扩展。
只需要开发业务逻辑,其他部署、运行、监控都交给TOD
MTA是腾讯云分析是专业的移动应用数据运营平台,支持iOS和Android。开发者可以方便地通过嵌入统计SDK,实现对移动应用的全面监测,实时掌握产品表现,准确洞察用户行为。腾讯云分析的优势:
实时多维:多维度交叉分析,运营有的放矢
用户画像:用户的兴趣,年龄,性别,职业尽在掌握
云发布:一键发布数十个Android应用市场
秒级实时:秒级实时,即时捕捉瞬息万变
运维监控:实时监控耗时,错误,放心运维
游戏模型:针对手游玩家的生命周期分析
问: 开发中遇到了那些坑,你是怎么迈过去的?使用什么样的硬件资源支撑了这个平台?
蒋杰:坑确实有不少,影响最大的主要有三个:
1、腾讯数据量“大”的坑:腾讯的用户和产品数量都比较多,数据量大,数据分析的复杂度高,对底层技术平台的要求自然很高。如此大量的数据和复杂分析,每天要高效、稳定的在我们的数据平台上运行,对我们的平台技术提出了很大挑战。我们在系统的容灾、监控、问题处理与恢复方面做了大量工作,以确保系统不会出现问题,或者是在做重大变更时,对业务的影响要尽可能的少。为了达到这个目标,在设计系统时,我们要做到无单点故障,所有的模块都是分布式的,我们现在基本上都做到了。
2、开源软件的坑:为了构建多样化的平台,我们也积极吸收开源软件进行快速原型搭建,但是真正在用的时候,会发现很多问题,有的问题可能只有腾讯这样的数据规模才能遇到。我们过去几年,花费了大量的人力物力,修复开源软件中的bug,优化它的性能,并基于腾讯的业务特点进行定制。
3、成本的坑:当我们的大数据系统逐渐成熟好用时,业务的数据存储和计算需求也开始暴增,随之而来的平台的成本压力也非常大。平台在过去几年做了大量优化成本的工作,包括差异化压缩、使数据相对文本有20倍的压缩比、引入Hadoop Raid技术、使用估值算法代替精确计算节省计算资源等,使整个平台的单位成本大幅度下降。
我们的硬件采用公司定制的PC Server,规模超过8000台。每台配备2T*12 STAT硬盘、64GB内存和双路32核CPU。需要提到的是,我们硬件资源是通过GAIA调度系统管理的,TDW、TRC等系统不直接申请硬件机器资源,而是向GIAI申请需要的CPU、内存等资源。
问:对你们来说,目前面对的最大挑战是什么?