写点什么

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

2014 年 11 月 25 日

最近,腾讯大数据官方网站 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 的研发工作。

2014 年 11 月 25 日 05:324924
用户头像

发布了 501 篇内容, 共 211.4 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
  • 聚焦技术发展及开源生态 腾讯全面揭秘大数据平台演进之路

    开源是希望更好的回馈社区,希望开源生态能有更大的繁荣,腾讯的大数据将全面开源。

  • 我应该选择哪种 Kafka?

    清晰地了解Kafka的发展脉络和生态圈现状,对于指导我们选择合适的Kafka版本大有裨益。

    2019 年 6 月 11 日

  • 虚拟座谈会:大数据一栈式方案 Spark

    Spark正在占据越来越多的大数据新闻的重要位置,除了性能优异,Spark到底具备了那些特性,让学术界和工业界对其充满了兴趣?同时,Spark还处在快速发展的阶段,开发者和用户不得不解决不稳定和bug,Scala语言也有较高的学习门槛,这些也会成为Spark普及的障碍。当然,尽管Spark提供了一栈式的大数据方案,但并不意味着他适合任何场景。本期虚拟座谈会将讨论Spark的优势和不足,分享在国内领先的Spark开发者遇到的挑战和瓶颈。

  • 魅族数据平台的设计哲学和核心架构

    由最初的纯设备生产厂商渐渐发展为今天的智能设备设计商和互联网服务提供商,“魅族”转眼间已经历了十年的成长,其Flyme系统也在逐渐走向成熟。而依托于Flyme的魅族互联网服务也逐渐发展起来,随之而来的大数据需求也日渐增多。

  • Spark 简介及生态介绍

    2020 年 11 月 2 日

  • 一份算力提升 117%,资源使用下降 50% 的集群优化指南

    本文介绍美图大数据集群优化的实践经验。

  • 专访朱诗雄:Apache Spark 中的全新流式引擎 Structured Streaming

    Apache Spark在2016年的时候启动了Structured Streaming项目,一个基于Spark SQL的全新流计算引擎Structured Streaming,让用户像编写批处理程序一样简单地编写高性能的流处理程序。经过一年多的改进和完善,目前Structured Streaming已经在Databricks内部和客户广泛使用,InfoQ采访了Structured Streaming的核心开发朱诗雄来具体了解这个项目。

  • 国内首家!主导 Apache Hadoop 新版本发布的,是腾讯云这位小哥哥

    近日,腾讯主导的Apache Hadoop2.8.4最新版本发布,为国内科技公司在国际开源领域的探索迈出重要一步。

  • 类似“点击流”这样的海量数据应该如何存储?

    对于海量原始数据的存储系统,我们要求的是超高的写入和读取性能,和近乎无限的容量,对于数据的查询能力要求不高。

    2020 年 4 月 14 日

  • 大数据架构变革进行时:为什么腾讯看好 Apache Iceberg?

    在基础软件开源化的趋势下,国内企业在数据湖技术点上的探索与跟进并不比国外企业落后太多

  • 电商搜索系统质量保障体系建设

    演讲嘉宾李友科,京东 商城搜索与推荐平台部架构师内容介绍背景:电商搜索的主要对象是商品,目标是用户精确找到商品,卖家有机会曝光商品,商城构建良好的生态。围绕这个三个核心业务指标,系统稳定、结果精确、研发效率、排序效果,既是电商搜索系统研发的目标,也是挑战。几个具体的例子,从规模上,有30多个搜索系统,服务3亿+活跃用户;数据量上,商品量数十亿;人员上,开发和测试比 12:1,北京、深圳和硅谷多地协调。实施后效果:质量保障体系建设起来后,200+研发团队协同开发,平均每周上线40多个功能,平均迭代速度5-6天;其中算法ab,每天多次上线。快速把业务需求转化成收益,同时保证系统的稳定、业务的 KPI 和用户体验。解决方案选型:质量保障体系有几个特点:服务化、自动化、智能化。服务化,解决是 测试/开发占比低、异地协同的问题。自动化,主要是提高研发、测试和部署速度。智能化,主要是对搜索结果精确、排序效果的评估,发现业务 KPI 异常、badcase。方案介绍: 服务化(platform as a service),提供自助部署 All-in-one min 集群的服务、code review 服务、性能压测服务、diff 评估服务、搜索效果评估服务、个性化评估服务。 自动化:完整的持续集成流水线,包括:precomit、component、deploy、test;为了提高部署效率,对AB集群搭建持续部署流水线。智能化:是把人工标注的、用户投诉和反馈的体验问题,转化为人工智能识别的特征与标注类别,最终通过监督学习的方法进行模型训练,把训练好的模型用来检测搜索效果问题,最终人工对人工智能预测出的效果问题进行二次评价和处理,并反馈给模型持续训练。 另外,强调2点:一个是流程规范,一个是可运维和可运营。流程规范就是把研发有序组织起来研发和交付,是形成意识培养文化,服务化、自动化和智能化是帮助流程规范落地;整个质量保障体系,能否落地关键是可运维和可运营。内容大纲 质量保障体系 电商搜索业务场景和问题挑战 电商搜索质量保障体系实践 3.1 服务化 3.2 自动化 3.3 智能化 电商搜索质量保障体系难点 规范流程制定和落地、可运营和可运维

    2019 年 1 月 2 日

  • 腾讯大数据平台纵览

    腾讯业务产品线众多,拥有海量的活跃用户,每天线上产生的数据超乎想象,必然会成为数据大户。特别是随着传统业务增长放缓,以及移动互联网时代的精细化运营,对于大数据分析和挖掘的重视程度高于以往任何时候,如何从大数据中获取高价值,已经成为大家关心的焦点问题。在这样的大背景下,为了公司各业务产品能够使用更丰富优质的数据服务,近年腾讯大数据平台得到迅猛发展。

  • 中国银联大数据发展史

    从制作报表到数仓,中国银联的大数据转型历程。

  • Spark SQL 在字节跳动数据仓库领域的优化实践

    本次分享基于基础架构团队过往的工作成果,介绍字节跳动在提升基于 Spark SQL 的 ETL 稳定性以及优化 ad-hoc 查询的性能方面的实践。

  • Apache Kylin 实践:链家数据分析引擎的演变史

    伴随链家业务线的拓宽和发展,以及数据生态的建设,数据规模快速增长。2015年大数据部门成立至今,集群数据存储量为 9PB,服务器规模为 200 台 +。与此同时,数据需求也随着业务的发展落地不断增长,如统计分析、指标 API、运营报表等,不同业务需求差异较大,维度越来越多,需要定制化开发。面对数十亿行级别的数据,低延迟响应的特性,保障服务稳定、数据准确,链家的数据分析引擎经历了如下的发展历程。

  • 阿里巴巴的大数据故事:数据分析平台发展史

    国内大数据平台做得最好的公司当属阿里巴巴。今天我们介绍一下阿里巴巴数据分析平台的发展情况。

    2018 年 4 月 11 日

  • 阿里巴巴的大数据故事:流计算引擎发展史

    流数据处理在阿里巴巴的发展过程中一直十分重要,阿里巴巴也在此基础上做出了很多有意义的项目。今天的主角是流计算引擎的发展。

    2018 年 4 月 13 日

  • 腾讯看点基于 Flink+ClickHouse 的实时数据系统实践 | InfoQ 公开课

    直播概要当业务发展到一定规模,实时数据仓库就成了必要的基础服务。从数据驱动方面考虑,多维实时数据分析系统的重要性也不言而喻。

  • Flink 在 OPPO 的平台研发与应用实践

    本次分享介绍 OStream 平台的研发之道,业务场景的接入与应用实践,以及平台往智能化方向发展的探索与思考。

  • 罗盘 - 贝壳流量分析平台

    随着贝壳的不断发展,特别是今年年初专门成立了增长线,数据化思维和精细化运营的诉求越来越强烈。各个业务方急需了解自己系统的流量情况,从数据出发优化自己的产品,从而留住用户提高转化;而作为公司高层需要知道集团的整体流量情况,特别是比较核心的月活、商机转化、用户留存和渠道推广等情况,及时作出战略部署和调整,保证公司保持高效稳定的增长。

发现更多内容

面试时说Redis是单线程的,被喷惨了!

云流

redis 编程 程序员 计算机

在2020年更受关注和追捧的JS框架

Geek_Willie

react.js Vue js Svelte

这10道 Spring 常见面试题,你能搞定吗?

田维常

面试

SpringBoot-技术专题-war包部署读取外部配置Yml

李浩宇/Alex

MySQL数据库开发中的6个“避免”

田维常

MySQL

架构师训练营第 1 期 第 5 周作业

李循律

极客大学架构师训练营

TensorFlow 篇 | TensorFlow 数据输入的最佳实践

Alex

tensorflow keras input pipeline dataset

MySQL中事务的持久性实现原理

X先生

MySQL 数据库 sql 数据库事务 事务

华为云的销售凭什么说“赢”了罗振宇?

ToB行业头条

tob

快速掌握并发编程---深入学习ThreadLocal

田维常

精解四大集合框架:List核心知识总结

田维常

后端开发

面试官:什么是字节码?它最大的优势是什么?

田维常

后端开发

一个研发团队是如何坚持7年技术分享的?

PingCode

团队管理 敏捷开发 研发管理 技术分享 程序员节

试用阿里网盘内测版-不限速、无广告、隐私安全我全都要

郭旭东

阿里云网盘

云图说|知道吗?在和你对话的那头,也许是个机器人哦~

华为云开发者社区

华为 AI 机器人

面试官:什么是面向对象?

田维常

后端开发

TypeScript魔法堂:函数类型声明其实很复杂

肥仔John

Java typescript

数据结构与算法系列之链表操作全集(二)(GO)

书旅

go 数据结构 算法

基于React+Koa实现一个h5编辑器

徐小夕

Java nodejs H5 React koa

笔试题:了解穷举算法吗?如何用代码实现

田维常

后端开发

接口测试人员需要掌握的知识技能

测试人生路

接口测试

SpringBoot-技术专题-war包部署读取外部配置Properties

李浩宇/Alex

直播预告 | CloudQuery初体验——安装及多数据源连接

CloudQuery社区

数据库 sql 安全 工具软件 dba

专利申请其实并不难?四步教你玩转专利申请!

华为云开发者社区

专利 保护

精解四大集合框架:Queue核心知识总结

田维常

后端开发

笔试题:代码如何实现“百钱买百鸡”?

田维常

面试

永续合约系统开发源码,合约跟单软件搭建app

WX13823153201

架构师训练营 1 期第 6 周作业

木头发芽

精解四大集合框架:Set核心知识总结

田维常

程序员 后端

合约交易所系统开发技术搭建

薇電13242772558

区块链

面试官:JDK、JRE、JVM 三者什么关系?

田维常

后端开发

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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