从业务驱动和技术实现角度谈腾讯大数据

jopen 9年前

  最近,腾讯大数据官方网站 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:在大数据系统研发过程中,遇到过哪些难点,有什么解决的经验?

  赵伟:归纳一下,主要有以下三方面的问题:

  1. 腾讯数据量“大”的问题,腾讯的用户和产品数量都比较多,数据量大,数据分析的复杂度高,对底层技术平台的要求自然很高。如此大量的数据和复杂的 分析,每天要高效、稳定的在我们的数据平台上运行,对我们的平台技术有很大挑战。我们在系统的容灾、监控、问题处理与恢复做了大量工作,确保系统出现问题 或者我们做重大变更时,对业务的影响尽可能的少。为了达到这个目标,在系统设计时,我们要做到无单点故障,所有的模块都是分布式的,我们现在基本上做到 了。
  2. 开源软件的不可靠的问题,我们的很多系统是基于开源软件研发的。开源软件能快速搭建原型,但是真正在用的时候,会发现很多问题,有的问题可能只有 腾讯这样的数据规模遇到。我们过去几年,花费了大量的人力物力,修复开源软件中的 bug,优化它的性能,并基于腾讯的业务特点进行定制。
  3. 成本被挑战的问题,当我们的大数据系统成熟好用时,业务的数据存储和计算需求也开始暴增,由此带来的平台的成本压力也非常大,受到老板的挑战。平 台在过去几年做了大量优化成本的工作,包括差异化压缩,使数据相对文本有 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 的研发工作。

来自: InfoQ