腾讯业务产品线众多,拥有海量的活跃用户,每天线上产生的数据超乎想象,必然会成为数据大户,为了保证公司各业务产品能够使用更丰富优质的数据服务,腾讯的大数据平台做了哪些工作?
目前腾讯数据平台部的技术团队规模和结构是怎样的?
目前我们数据平台部共有200多人。整个数据平台是按照基础平台、核心应用、产品包装和质量监控的思路分为四部分:
-
数据中心,负责建设管理腾讯大数据基础平台;
-
精准推荐中心,负责研发落地以数据挖掘为核心的大数据应用;
-
产品中心,负责大数据产品的策划和运营;
-
质量中心,负责我们的质量监控与保障。
能简单说说腾讯目前的数据情况么?
腾讯的数据情况,得从不同的业务说起。其中主要包括以下5种:
-
即时通信QQ活跃帐户数达到8.29亿;QQ智能终端月活跃帐户数5.21亿
-
即时通信QQ最高同时在线帐户数达到2.06亿
-
“微信和WeChat”合并月活跃帐户数达到4.38亿
-
“QQ空间”月活跃帐户数达到6.45亿;QQ空间智能终端月活跃帐户数4.97亿
-
增值服务付费注册帐户数为8800万
从这些数据可以看到,腾讯每天的数据量是一个天文的数字,目前最高日接入消息条数10000亿 ,日接入数据量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语言实现,更好的可维护性
功能扩充:解决nimbus单点、度量(Metrics)、安全/权限增加、动态升级
任务间资源隔离
灵活的权限控制策略
更优异的容灾能力
自动扩缩容
过程化类SQL编程接口
降低实时计算业务技术门槛
提升业务开发效率
应用场景:
•精准推荐
•广点通广告推荐
•新闻推荐
•视频推荐
•游戏道具推荐
•实时分析
•微信运营数据门户
•效果统计
•订单画像分析
•实时监控
•实时监控平台
•游戏内接口调用
TPR
以人为核心的数据挖掘,提供“海量、精准、实时”的个性化推荐服务。
应用场景:
虚拟用户现实化,人口属性的建立
长期兴趣+短期兴趣
定制化定向人群
推荐周期短,实时性要求高
用户短期兴趣和即时行为影响力大
投放场景上下文和访问人群特性
长期兴趣的累积影响力大
时段和热点事件
多维度内容相关性很重要
长期+短期兴趣+即时行为综合
最贴近现实,季节与用户生活信息很关键
追求下单与成交,支付相关
CSDN: 以上都是腾讯大数据平台的架构,能不能和我们分享一下具体的产品?
蒋杰:简单说说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、内存等资源。
对你们来说,目前面对的最大挑战是什么?
对我们来说最大的挑战更多的是在技术层面,我们必须快速跟上,还要力争引领技术的更新和换代,以应对互联网业务的飞速变化,还有对于大数据日渐深入的应用带来的更高要求,未来相信大数据的技术能力对于业务发展的影响会越来越大。
我们的定位始终是以支持公司内部的业务为主,但逐步把我们的大数据能力开放给社会服务于更多的人也是我们的责任,所以在市场方面我们的挑战其实不是来自于商业层面,而是如何能让开放的覆盖面更广,让更多人分享我们提供的大数据服务,所以如何找到更多用户的痛点,如何让我们的服务更好地适配更多的用户需求,这是我们持续面对的一项挑战!
另外随着大数据在社会各行各业的影响越来越广泛深入,国家也开始对于大数据的相关政策给予更多的关注,我们一方面会在这些政策制定的过程中贡献自己的经验和建议,同时也会积极响应和配合国家一些相关政策进行落地执行。目前来看政策的制定只是让大数据发展的步伐走得更稳健更安全,短期来看也许会让我们在应用大数据的产品模式上放慢一些探索的步伐,长期来说相信不会对大数据的发展带来太大的挑战。
本文作者:蒋杰 来源:CSDN
CIO之家 www.ciozj.com 微信公众号:imciow