最近,腾讯大数据官方网站 data.qq.com 正式上线,引来业界的猜测和讨论,上线背后的含义是什么、大数据的创新应用模式有哪些、腾讯大数据平台的关键技术是什么......带着这些问题,笔者采访了腾讯数据平台部高级产品经理赵文昊和高级工程师赵伟。
InfoQ:启用data.qq.com这个重量级的二级域名,看起来像是一种战略层面的体现,能否解释其背后的过程和含义?
赵文昊:相比较其他互联网公司,腾讯在大数据方面发声较少,一直非常低调。然而外界对于腾讯大数据一向非常的关心和好奇,data.qq.com的出现就是为了解答外界对腾讯大数据的所有疑惑,并希望借此平台可以对外界分享腾讯相关的信息、技术以及产品,同时促进更多与外部的合作。
腾讯经过10余年的发展,在业务发展的同时,也在数据应用和平台能力方面积累了很多的经验,我们相信这其中会有许多对行业发展十分有益的地方,我们认为现在是一个很好的时机将其中的一部分回馈给行业。从去年开始,我们逐步将腾讯分布式数据仓库(TDW)等对社区进行开源,这是我们整体计划中的一部分。我们希望data.qq.com的上线可以有助于缩短我们与行业领先开发者/平台之间的沟通距离,期待更多具有创新和实际商业价值的合作案例可以延伸开来。
InfoQ:目前腾讯的大数据平台团队规模多大,其负责的业务范围包括哪些?
赵文昊:目前专门支撑该平台的团队规模共有200多人,分别在技术平台建设、数据挖掘算法应用、产品策划运营和质量保障等各领域上努力着。同时,腾讯各BG业务线的产品及技术运营团队也是腾讯大数据平台的一份子,共同为腾讯的大数据战略而战斗着。
InfoQ:现在很多企业的大数据平台都是服务于其核心业务,腾讯大数据官方网站的上线,是不是意味着腾讯的数据平台也逐渐走向前台,以产品的形式服务于更多的客户?
赵文昊:如前所说,我们认为现在是一个很好的时机,将我们多年来在数据领域摸爬滚打沉淀下来的在技术架构、产品应用等各方面经验回馈给行业,也很期待通过data.qq.com建立起与行业、社区的直接联系,催生更紧密、创新且具有商业价值的合作。在大数据应用页面可以看到,目前我们已经有许多基于大数据的应用,并以成熟的产品形态服务着我们外部的客户。未来我们会有更多基于大数据的To B和To C产品来面向外部的客户。
InfoQ:大数据的产品和服务形式未来会有哪些创新和突破?
赵文昊:未来我们希望能够在健康医疗、征信金融、影视娱乐等方面有更多的大数据应用,从而改变目前传统行业粗放、低效的现状。大数据的核心在于海量信息处理带来的精准和预测,因此我们未来的产品一定也会紧紧围绕这两方面的能力去展开。
InfoQ:技术和业务是如何驱动腾讯大数据平台发展的?
赵文昊:从2009年我们开始自研腾讯分布式数据仓库(TDW),2011年正式发布上线到2013年初,TDW完成了对公司内部几乎全业务的覆盖。期间,随着业务对实时数据处理需求的不断增强,我们基于Storm又研发了腾讯实时计算平台TRC。与此同时,在数据接入方面我们研发了实时数据接入和分发系统TDBank,使得业务数据采集延迟从之前的天级别缩短到目前的秒级别。可以说,是腾讯的海量数据和业务不断提升的要求驱动我们成长为今天的规模,达到了8800台单集群服务器,10000亿日接入消息数,8.5PB日扫描数据量等业内引以为傲的体量。可以说我们从离线海量计算平台朝实时海量计算平台的发展是中国互联网行业在数据领域高速发展的一个缩影。
InfoQ:数据平台的技术架构是什么样的?设计思路是什么?
赵伟:数据平台部的技术架构如下图所示:
TDBank为整个平台提供数据接入功能,是数据平台部与其他业务数据交互的接口。TDBank大部分数据输送给了两大基础平台,TDW离线计算平台和TRC实时计算平台。除了TDW和TRC两大基础平台,我们还有tPG、HBase、Hermes这些平台来满足业务多样化的数据处理需求。整个平台还包含统一的集成开发环境,用来进行TDW和TRC上的业务开发;统一任务调度Lhotse,驱动和管理各种工作流;统一服务框架,对外公司内外提供高性能、跨语言、高可靠性的数据服务API。所有这些系统,都是通过Gaia进行资源调度和管理的,目前Gaia也支持Doker管理。
平台的设计思路是平台化、规模化、实时化、服务化。平台化是将业务由共性的需求,抽象出来,做成平台,例如针对业务的离线计算,我们建设了TDW平台;针对实时计算,我们建设了TRC平台。规模化是将我们的系统规模做大,以提升资源共享能力和运营效率。实时化是一个趋势,我们的系统一开始都是离线的,随着规模和稳定性的提升,我们会向准实时、实时演进,为业务带来更快速,时延更小的数据服务。服务化是我们在一个系统成熟时,我们会将它以API服务的方式,暴露给外部,让我们的系统与外部业务整合更容易。
InfoQ:对于海量数据的离线和实时接入和处理,腾讯数据平台分别采用了哪些系统?
赵伟:TDBank主要负责海量数据离线和实时数据接入,它具备高可靠、高一致性、低延迟等特点,解决了异构数据源适配、公网传输、加密、分布式缓存等问题,目前数据平台部的大部分系统都是通过TDBank接入数据的。
我们离线数据处理使用TDW平台。TDW基于Hive、Pig、Hadoop、Spark等研发,支持SQL、Pig Latin、MR、SPARK等编程接口,为业务提供离线服务。
TRC是我们的实时数据处理平台。它基于JStorm,是我们使用Java重写的Storm版本。为了方便业务使用,我们为JStorm开发了SQL和Pig Latin语言接口,并且提供了集成开发环境。
InfoQ:能否详细介绍下几个关键系统的技术点?
赵伟: TDW的关键技术点:
TDW是我们研发时间最长的一个系统,从2009年开始到目前一直在演进。TDW我们使用了Hive+Hadoop的架构,但是在运营过程中,我们做了大量优化。
在Hive方面,我们在功能扩充、易用性、性能、稳定性方面都做了大量优化:
-
在功能扩充方面,目前在Oracle上能找到的常用功能,TDW都已有对应实现。主要包括:1)基于角色的权限管理;2)兼容Oracle分区;3)窗口函数;4)过程语言多维分析;5)共用表达式CTE;6)DML语言扩充;7)入库数据校验。
-
在易用性方面,标准化SQL语法,提供SQL/MED使得TDW与Oracle、PG互联互通。更重要的是,提供非常友好的TDW集成开发环境IDE,目前用户已经接近500人,分布在7大事业群43个部门,每天超过100人使用TDW IDE进行数据开发和数据提取。
-
在性能优化方面,开源Hive支持的文本格式效率比较低,TDW采用二进制存储格式,提升读写效率,并支持lzo压缩。同时,在扩充Hash Join、按行split、orderby+limit等方面进行了大量技术优化。另外,TDW将社区优化补丁引入进来,比如SQL MR并行优化,使得复杂计算效率提升50%。我们还引入了HLLC估值算法,来优化count distinct的性能,获得了良好的效果。在2014年下半年,我们着手了Hive on Spark的研发,目前大部分SQL语法已经可以运行在hive on spark上,并且有明显的性能提升。
-
在稳定性方面,开源Hive很多隐含缺陷在大压力下逐渐凸显,TDW做了大量的优化工作。主要包括:容灾与负载均衡、大结果集获取接口优化、元数据接口优化、内存泄漏检测、服务过载保护和非线程安全容器优化等。
-
除了针对Hive本身优化之外,TDW引入postgresql(BI库)作为辅助,通过其良好的DB特性,来弥补Hadoop天然在update/delete操作上的不足。BI库很好的满足了用户BI展现、维度表更新、小数据集高效分析和Cognos/SAS软件对接等需求,使得用户无需复杂的数据流转,即可以在TDW内完成全套作业。
-
我们改造过的Hive,开源到腾讯外部,可以访问 这里 查看。
在Hadoop方面,我们在稳定性、性能、成本方面做了优化:
-
Hadoop的单点问题的解决,包括NameNode和Jobtracker单点问题。我们是在Hadoop 1.0的基础上解决的这些问题,当时Hadoop 2.0并没有稳定版本发布。解决这些问题,使我们TDW系统在2013年下半年,达到单机群4400台的规模。
-
HDFS RAID 的应用。我们根据运营数据,将数据分级,进行差异化压缩。对于不常用的历史数据,我们做了GZ压缩,并且使用 HDFS RAID 技术,降低存储副本,从而降低存储成本。
-
YARN 的优化。在2013年低,我们引入了 YARN ,在它的基础上,结合我们自研的torca调度系统,研发了Gaia调度系统。Gaia既可以做离线业务资源调度,也可以做在线业务的资源调度,还支持docker的管理。Gaia支持内存软硬limit、磁盘IO、网络IO隔离等,在资源利用率方面相对 YARN 有较大提升。
-
Spark的应用与优化:通过Spark on Gaia的支持,使Spark的扩展性和性能大大提升。目前TDW Spark集群已经突破千台规模。在Spark实践中,相对于MapReduce、SQL/Pig我们获得了超过10倍以上的性能提升。同时我们在Spark的易用性、稳定性和高效等方面进行了大量的特性研发。
TRC的关键技术点包括:
-
Storm on Gaia:开源的Storm并没有资源管理的功能,单个集群的资源不能根据业务的需要动态调整。在容灾方面,也有问题。我们将storm移植到了Gaia上,使业务可以灵活的申请资源。
-
Java改写的JStorm:开源的Storm使用函数式语言,比较小众,影响开发和优化效率。我们最终决定使用Java改写Storm,目前TRC已经稳定运行在JStorm上。
-
Pig/SQL on TRC:在运营推广中,我们发现业务对之前TRC原始的编程模式很不适应,业务的开发调试效率非常低。在做了大量调研后,我们开发了Pig on TRC和SQL on TRC,让用户用更高层次的语言编写业务逻辑。在IDE上,也做了支持。最终让用户的使用效率大大提升。
InfoQ:在大数据系统研发过程中,遇到过哪些难点,有什么解决的经验?
赵伟: 归纳一下,主要有以下三方面的问题:
-
腾讯数据量“大”的问题,腾讯的用户和产品数量都比较多,数据量大,数据分析的复杂度高,对底层技术平台的要求自然很高。如此大量的数据和复杂的分析,每天要高效、稳定的在我们的数据平台上运行,对我们的平台技术有很大挑战。我们在系统的容灾、监控、问题处理与恢复做了大量工作,确保系统出现问题或者我们做重大变更时,对业务的影响尽可能的少。为了达到这个目标,在系统设计时,我们要做到无单点故障,所有的模块都是分布式的,我们现在基本上做到了。
-
开源软件的不可靠的问题,我们的很多系统是基于开源软件研发的。开源软件能快速搭建原型,但是真正在用的时候,会发现很多问题,有的问题可能只有腾讯这样的数据规模遇到。我们过去几年,花费了大量的人力物力,修复开源软件中的bug,优化它的性能,并基于腾讯的业务特点进行定制。
-
成本被挑战的问题,当我们的大数据系统成熟好用时,业务的数据存储和计算需求也开始暴增,由此带来的平台的成本压力也非常大,受到老板的挑战。平台在过去几年做了大量优化成本的工作,包括差异化压缩,使数据相对文本有20倍的压缩比,引入Hadoop Raid技术,使用估值算法代替精确计算节省计算资源等,使整个平台的单位成本,使整个平台的单位成本持续大幅度降低。
-
InfoQ:如何看待大数据技术的未来发展趋势?
赵伟: 大数据技术未来的发展大趋势是处理的数据量更大、处理逻辑更复杂、实时性要求更高、技术更迭更快。例如MapReduce技术虽然前几年很火,但是因为在一些场景下性能不高,使这些业务选择了Spark和DAG计算。相信随着大数据应用的丰富和深入,对基础平台的技术的要求会越来越高。我们也在不断关注和探索相关的大数据技术,持续创新,为大数据技术的进步做出贡献。
编后语
在未来的IT主流趋势中,云计算和大数据是一对双子星。相比云计算,大数据领域总是给人一种看不见摸不着但是用得着的感觉。腾讯大数据官网的上线是一种良好的开端,开发社区可以近距离地观察和理解大数据的实际应用和生态系统,至于如何搭上巨人的顺风车,则是“仁者见仁、智者见智”了。
采访嘉宾
赵文昊,腾讯数据平台部高级产品经理。2011年毕业于浙江大学,获得管理学和文学双学士学位。同年进入美国约翰霍普金斯大学深造,于2013年获得理学硕士学位。2014年加入腾讯,负责腾讯大数据的产品设计和品牌营销。腾讯大数据官网data.qq.com的主导者和负责人,腾讯大数据报告的策划和负责人。
赵伟,腾讯数据平台部高级工程师。2009年毕业于哈尔滨工业大学,同年进入腾讯数据平台部,从事腾讯分布式数据仓库TDW研发工作,先后主导了TDW SQL查询引擎、TDW集成开发环境、tPG等的研发项目 。专注于数据仓库的构建,致力于Hive、Hadoop、PG等在数据仓库中的应用。目前负责TDW平台功能、性能、易用性的规划及研发及分布式PG的研发工作。
CIO之家 www.ciozj.com 公众号:imciow