案例分析
腾讯大数据平台探究
来源:
腾讯业务产品线众多,拥有海量的活跃用户,每天线上产生的数据超乎想象,必然会成为数据大户。特别是随着传统业务增长放缓,以及移动互联网时代的精细化运营,对于大数据分析和挖掘的重视程度高于以往任何时候,如何从大数据中获取高价值,已经成为大家关心的焦点问题。在这样的大背景下,为了公司各业务产品能够使用更丰富优质的数据服务,近年腾讯大数据平台得到迅猛发展。
图 1 大数据平台核心模块
从上图可以看出,腾讯大数据平台有如下核心模块:TDW、TRC、TDBank和Gaia。简单来说,TDW用来做批量的离线计算,TRC负责做流式的实时计算,TDBank则作为统一的数据采集入口,而底层的Gaia则负责整个集群的资源调度和管理。接下来,本文会针对这四块内容进行整体介绍。
TDW(Tencent distributed Data Warehouse):腾讯分布式数据仓库。它支持百PB级数据的离线存储和计算,为业务提供海量、高效、稳定的大数据平台支撑和决策支持。目前,TDW集群总设备8400台,单集群最大规模5600台 ,总存储数据超过100PB,日均计算量超过5PB,日均Job数达到100万个。
图 2 分布式数据仓库
为了降低用户从传统商业数据库迁移门槛,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研发为大数据分析加速。