腾讯业务产品线众多,拥有海量的活跃用户,每天线上产生的数据超乎想象,必然会成为数据大户。特别是随着传统业务增长放缓,以及移动互联网时代的精细化运营,对于大数据分析和挖掘的重视程度高于以往任何时候,如何从大数据中获取高价值,已经成为大家关心的焦点问题。在这样的大背景下,为了公司各业务产品能够使用更丰富优质的数据服务,近年腾讯大数据平台得到迅猛发展。 从上图可以看出,腾讯大数据平台有如下核心模块: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等)。整个数据通路透明化,只需简单配置,即可实现一点接入,整个大数据平台可用。 |