AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

腾讯大数据平台纵览

  • 2014-08-20
  • 本文字数:3135 字

    阅读完需:约 10 分钟

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

从上图可以看出,腾讯大数据平台有如下核心模块:TDW、TRC、TDBank 和 Gaia。简单来说,TDW 用来做批量的离线计算,TRC 负责做流式的实时计算,TDBank 则作为统一的数据采集入口,而底层的 Gaia 则负责整个集群的资源调度和管理。接下来,本文会针对这四块内容进行整体介绍。

TDW(Tencent distributed Data Warehouse):腾讯分布式数据仓库。它支持百 PB 级数据的离线存储和计算,为业务提供海量、高效、稳定的大数据平台支撑和决策支持。目前,TDW 集群总设备 8400 台,单集群最大规模 5600 台 ,总存储数据超过 100PB,日均计算量超过 5PB,日均 Job 数达到 100 万个。

为了降低用户从传统商业数据库迁移门槛,TDW 基于开源 Hive 进行了大量定制开发。在功能扩充方面,SQL 语法兼容 Oracle,实现了基于角色的权限管理、分区功能、窗口函数、多维分析功能、公用表表达式 -CTE、DML-update/delete、入库数据校验等。在易用性方面,增加了基于 Python 的过程语言接口,以及命令行工具 PLClient,并提供可视化的 IDE 集成开发环境,使得开发效率大幅度提升。另外,在性能优化方面也做了大量工作,包括 Hash Join、按行 split、Order by limit 优化、查询计划并行优化等,特别是针对 Hive 元数据的重构,去掉了低效的 JDO 层,并实现元数据集群化,使系统扩展性提升明显。

为了尽可能促进数据共享和提升计算资源利用率,实施构建高效稳定的大集群战略,TDW 针对 Hadoop 原有架构进行了深度改造。首先,通过 JobTracker/NameNode 分散化和容灾,解决了 Master 单点问题,使得集群的可扩展性和稳定性得到大幅度提升。其次,优化公平资源调度策略,以支撑上千并发 job(现网 3k+)同时运行,并且归属不同业务的任务之间不会互相影响。同时,根据数据使用频率实施差异化压缩策略,比如热数据 lzo、温数据 gz、冷数据 gz+hdfs raid,总压缩率相对文本可以达到 10-20 倍。

另外,为了弥补 Hadoop 天然在 update/delete 操作上的不足,TDW 引入 PostgreSQL 作为辅助,适用于较小数据集的高效分析。当前,TDW 正在向着实时化发展,通过引入 HBase 提供了千亿级实时查询服务,并开始投入 Spark 研发为大数据分析加速。

TDBank(Tencent Data Bank):数据实时收集与分发平台。构建数据源和数据处理系统间的桥梁,将数据处理系统同数据源解耦,为离线计算 TDW 和在线计算 TRC 平台提供数据支持。

从架构上来看,TBank 可以划分为前端采集、消息接入、消息存储和消息分拣等模块。前端模块主要针对各种数据形式(普通文件,DB 增量 / 全量,Socket 消息,共享内存等)提供实时采集组件,提供了主动且实时的数据获取方式。中间模块则是具备日接入量万亿级的基于“发布 - 订阅”模型的分布式消息中间件,它起到了很好的缓存和缓冲作用,避免了因后端系统繁忙或故障从而导致的处理阻塞或消息丢失。针对不同应用场景,TDBank 提供数据的主动订阅模式,以及不同的数据分发支持(分发到 TDW 数据仓库,文件,DB,HBase,Socket 等)。整个数据通路透明化,只需简单配置,即可实现一点接入,整个大数据平台可用。

另外,为了减少大量数据进行跨城网络传输,TDBank 在数据传输的过程中进行数据压缩,并提供公网 / 内网自动识别模式,极大的降低了专线带宽成本。为了保障数据的完整性,TDBank 提供定制化的失败重发和滤重机制,保障在复杂网络情况下数据的高可用。TDBank 基于流式的数据处理过程,保障了数据的实时性,为 TRC 实时计算平台提供实时的数据支持。目前,TDBank 实时采集的数据超过 150+TB/ 日(约 5000+ 亿条 / 日),这个数字一直在持续增长中,预计年底将超过 2 万亿条 / 日。

TRC(Tencent Real-time Computing):腾讯实时计算平台。作为海量数据处理的另一利器,专门为对时间延敏感的业务提供海量数据实时处理服务。通过海量数据的实时采集、实时计算,实时感知外界变化,从事件发生、到感知变化、到输出计算结果,整个过程中秒级完成。

TRC 是基于开源的 Storm 深度定制的流式处理引擎,用 Java 重写了 Storm 的核心代码。为了解决了资源利用率和集群规模的问题,重构了底层调度模块,实现了任务级别的权限管理、资源分配、资源隔离,通过和 Gaia 这样的资源管理框架相结合,做到了根据线上业务实际利用资源的状况,动态扩容 & 缩容,单集群轻松超过 1000 台规模。为了提高平台的易用性和可运维性,提供了类 SQL 和 Pig Latin 这样的过程化语言扩展,方便用户提交业务,提升接入效率,同时提供系统级的指标度量,支持用户代码对其扩展,实时监控整个系统运营环节。另外将 TRC 的功能服务化,通过 REST API 提供 PaaS 级别的开放,用户无需了解底层实现细节就能方便的申请权限,资源和提交任务。

目前,TRC 日计算次数超过 2 万亿次,在腾讯已经有很多业务正在使用 TRC 提供的实时数据处理服务。比如,对于广点通广告推荐而言,用户在互联网上的行为能实时的影响其广告推送内容,在用户下一次刷新页面时,就提供给用户精准的广告;对于在线视频,新闻而言,用户的每一次收藏、点击、浏览行为,都能被快速的归入他的个人模型中,立刻修正视频和新闻推荐。

Gaia统一资源调度平台。Gaia,希腊神话中的大地之神,是众神之母,取名寓意各种业务类型和计算框架都能植根于“大地”之上。它能够让应用开发者像使用一台超级计算机一样使用整个集群,极大地简化了开发者的资源管理逻辑。Gaia 提供高并发任务调度和资源管理,实现集群资源共享,具有很高的可伸缩性和可靠性,它不仅支持 MR 等离线业务,还可以支持实时计算,甚至在线 service 业务。

为了支撑单集群 8800 台甚至更大规模,Gaia 基于开源社区 Yarn 之上自研 Sfair (Scalable fair scheduler) 调度器,优化调度逻辑,提供更好的可扩展性,并进一步增强调度的公平性,提升可定制化,将调度吞吐提升 10 倍以上。为了满足上层多样化的计算框架稳定运行,Gaia 除了 CPU、Mem 的资源管理之外,新增了 Network IO,Disk space,Disk IO 等资源管理维度,提高了隔离性,为业务提供了更好的资源保证和隔离。同时,Gaia 开发了自己的内核版本,调整和优化 CPU、Mem 资源管理策略,在兼容线程监控的前提下,利用 cgroups,实现了 hardlimit+softlimit 结合的方式,充分利用整机资源,将 container oom kill 机率大幅降低。另外,丰富的 API 也为业务提供了更便捷的容灾、扩容、缩容、升级等方式。

基于以上几大基础平台的组合联动,可以打造出了很多的数据产品及服务,如上面提到的精准推荐就是其中之一,另外还有诸如实时多维分析、秒级监控、腾讯分析、信鸽等等。除了一些相对成熟的平台之外,我们还在进行不断的尝试,针对新的需求进行更合理的技术探索,如更快速的交互式分析、针对复杂关系链的图式计算。此外,腾讯大数据平台的各种能力及服务,还将通过 TOD(Tencent Open Data)产品开放给外部第三方开发者。

作者简介

刘煜宏(ehomeliu):拥有 10 年以上的电信行业及互联网行业的从业经验,现就职于腾讯数据平台部,是腾讯实时数据接入平台(TDBank)及实时计算平台(TRC)的负责人,在大数据接入、计算及分析等方面有丰富经验。


感谢包研对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-20 23:0913911

评论 1 条评论

发布
用户头像
请问如何保证在开发阶段环境的稳定性,和新功能发布时系统的的正确性校验,我们公司的大数据系统,每次业务新需求昨晚进入测试阶段,整个系统各个专题和平台都在发布,系统时不时的出现各种问题
2019-06-27 09:00
回复
没有更多了
发现更多内容

云原生 AI 的资源调度和 AI 工作流引擎设计分享

百度Geek说

人工智能 云原生 企业号 2 月 PK 榜

Java微基准测试神器JMH初探

FunTester

东数西算下,液冷数据中心为何日趋重要?

GPU算力

数据中心 高性能计算 东数西算 液冷散热

IoT物联网平台:网关与子设备开发实战——实践类

阿里云AIoT

Java 物联网 开发工具

UEditorPlus v2.9.0 文档仓库开源,修复若干问题

ModStart

Mysql都有那些最需要掌握的原理?

Java MySQL 数据库

5大特性,带你认识化繁为简的华为云CodeArts Deploy

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

企业研发治理转型利器:华为云发布流水线服务CodeArts Pipeline

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

面试半年,总结了1000道2023年Java架构师岗面试题

小小怪下士

Java 程序员 面试 后端

AI绘图绘画NFT数藏系统开发(成熟案例)

I8O28578624

3M互助盘dapp系统开发源码部署

开发微hkkf5566

如何在IoT物联网平台注册私有CA证书,来实现X.509方式设备身份认证?——实践类

阿里云AIoT

小程序 算法 物联网 智能硬件

基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类

阿里云AIoT

云计算 网络协议 物联网 数据采集 定位技术

esp8266 读取 modbus 类型数据在 Grafana 展示

jupiter

IoT esp8266 #Grafana Arduino ESP32-C

ModStartBlog v6.8.0 博客置顶功能,界面样式优化

ModStart

详解数仓的网络调度与隔离管控能力

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

热点面试题:聊聊对 this 的理解?

Immerse

JavaScript 手写代码 this 前端面试题 #热点问题

又火了!GitHub标星百万的并发编程手册(彩图版)竟是从阿里流出

Java 并发编程 高并发

把 ChatGPT 加入 Flutter 开发,会有怎样的体验?

声网

flutter RTC 直播技术 RTE ChatGPT

Zebec被评选为BNB Chain 2023年40佳DAPP

西柚子

SQL 层功能改进 - lookupJoin 的优化

KaiwuDB

SQL优化 KaiwuDB lookupJoin

智能手持测温枪接入阿里云IoT物联网平台实践——实践类

阿里云AIoT

小程序 监控 物联网 开发工具 消息中间件

设备用私有CA签发的X.509证书接入IoT物联网平台——实践类

阿里云AIoT

小程序 网络安全 物联网 智能硬件 数据格式

MySQL性能指标TPS\QPS\IOPS如何压测?

Java MySQL 性能压测

我是学生,想要参与 OpenCloudOS,该怎么做?

OpenCloudOS

Linux

百度工程师漫谈视频理解

百度Geek说

人工智能 视频理解 企业号 2 月 PK 榜 视频动作分析

今天 4 点,龙蜥自动化运维平台SysOM 2.0的诊断中心功能介绍 | 第 66-68 期

OpenAnolis小助手

开源 系统运维 龙蜥大讲堂 SysOM 诊断

企业如何落地DevOps(上)

老张

DevOps 软件工程

智能AI量化现货合约跟单交易机器人软件开发

开发微hkkf5566

强将带新兵?试试少代码!

世开 Coding

开发框架 快速开发平台 Jmix

企业级应用建设之道:高代码+低代码开发

力软低代码开发平台

腾讯大数据平台纵览_服务革新_刘煜宏_InfoQ精选文章