写点什么

QQ 音乐 PB 级 ClickHouse 实时数据平台架构演进之路

  • 2020-06-08
  • 本文字数:4246 字

    阅读完需:约 14 分钟

QQ音乐PB级ClickHouse实时数据平台架构演进之路

导语 | OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值。本文基于 QQ 音乐海量大数据实时分析场景,通过 QQ 音乐与腾讯云 EMR 产品深度合作的案例解读,还原一个不一样的大数据云端解决方案。

一、背景介绍

QQ 音乐是腾讯音乐旗下一款领先的音乐流媒体产品,平台打造了“听、看、玩”的立体泛音乐娱乐生态圈,为累计注册数在 8 亿以上的用户提供多元化音乐生活体验,畅享平台上超过 3000 万首歌曲的海量曲库。优质服务的背后,是每天万亿级新增音乐内容和行为数据,PB 数据量级的数据计算服务。


海量的数据意味着更高标准的数据分析业务,对于离线分析的时效、实时与近实时的即席实时交互分析,提出了更高的要求。如何通过用户行为以及音乐内容标签数据,深入洞察用户需求,来优化泛音乐内容创作分享生态,为亿万用户带来更优质的音乐体验?是对 QQ 音乐大数据团队的巨大挑战以及机遇。


腾讯云弹性 MapReduce(EMR),结合云技术和社区开源技术,提供安全、低成本、高可靠、可弹性伸缩的云端泛 Hadoop 服务。EMR 助力构建企业的大数据平台架构,适用于 HBase 在线业务,数据仓库,实时流式计算等大数据场景。


QQ 音乐大数据团队基于业务需求,搭建和优化基于 ClickHouse 的 OLAP 实时大数据分析平台,并与腾讯云 EMR 团队深入场景合作,共建大数据云端解决方案。下文将通过案例解读,深入解析 QQ 音乐大数据团队 OLAP 系统架构演进之路,不断发掘音乐数据背后的价值。

二、大数据分析的挑战

早些年在传统离线数仓阶段,QQ 音乐使用 Hive 作为大数据分析的主要工具,对 TB 至 PB 级的数据进行分析,但存在着以下的可提升点:


1. 时效性低

对于音乐服务来说,实时下钻和分析 PV、UV,用户圈层、歌曲的种类、DAU 等数据,分析结果的价值取决于时效性。核心日报与统计报表场景下,基于 Hive 的离线分析仅能满足 T+1 的时效,对于实时日报和分析的需求越来越强烈。

2. 易用性低

基于 Hive 离线数据分析平台,对于产品、运营、市场人员具有较高的技术门槛,无法满足自助的实时交互式分析需求;开发在上报和提取分析数据时,无法实时获取和验证结果,查询和分析日志经常需要几个小时。

3. 流程效率低

数据分析需求,需由数据分析团队完成,经过排期、沟通、建模、分析、可视化等流程步骤,所需时间以周计算,落地可能达数周,分析结果不及时,影响和拖慢了决策进度。


为了应对以上问题,提升流程效率,提高数据分析处理的时效性和易用性,数据的即席分析和数据可视化能力支撑需要优化和提升,让问题秒级有响应,分析更深入,数据分析更高效。

三、QQ 音乐大数据架构技术演进

QQ 音乐大数据团队基于 ClickHouse+Superset 等基础组件,结合腾讯云 EMR 产品的云端能力,搭建起高可用、低延迟的实时 OLAP 分析计算可视化平台。


集群日均新增万亿数据,规模达到上万核 CPU,PB 级数据量。整体实现秒级的实时数据分析、提取、下钻、监控数据基础服务,大大提高了大数据分析与处理的工作效率。



通过 OLAP 分析平台,极大降低了探索数据的门槛,做到全民 BI,全民数据服务,实现了实时 PV、UV、营收、用户圈层、热门歌曲等各类指标高效分析,全链路数据秒级分析定位,加强数据上报规范,形成一个良好的正循环。

1. ClickHouse 介绍

ClickHouse 由俄罗斯第一大搜索引擎 Yandex 发布,是一个基于列的,面向 OLAP 的开源轻量级数据库管理系统,能够使用 SQL 查询实时生成分析数据报告,适合 PB 数据量级的实时大数据分析。



在场景适用和性能方面,ClickHouse 在 OLAP 的众多组件中有较为突出的优势。

(1)场景适用方面

ClickHouse 主要为 OLAP 应用场景的数据仓库,以库表的方式存储数据,可简单、高效地分析数据,结合 Superset 以可视化的方式输出分析数据图表。

(2)性能方面

ClickHouse 有着卓越的实时分析能力。以性能表现突出的单表为例,使用单表 100G,3 亿行数据,集群规模 8 核 20G*3,简单的查询在毫秒级完成,复杂查询秒级,查询速度较 Presto、SparkSQL 提升 3-6 倍,较 Hive 提升 30-100 倍。


对比 Presto、Impala、Hawq、Greenplum,ClickHouse 以其分布式计算、多核计算、向量化执行与 SIMD、代码生成技术以及列式存储等特性,实现了超高速的查询,凸显了更优越的性能。


2. ClickHouse 架构系统技术攻克点

面对上万核集群规模、PB 级的数据量,经过 QQ 音乐大数据团队和腾讯云 EMR 双方技术团队无数次技术架构升级优化,性能优化,逐步形成高可用、高性能、高安全的 OLAP 计算分析平台。

(1)基于 SSD 盘的 ZooKeeper

ClickHouse 依赖于 ZooKeeper 实现分布式系统的协调工作,在 ClickHouse 并发写入量较大时,ZooKeeper 对元数据存储处理不及时,会导致 ClickHouse 副本间同步出现延迟,降低集群整体性能。


解决方案: 采用 SSD 盘的 ZooKeeper 大幅提高 IO 的性能,在表个数小于 100,数据量级在 TB 级别时,也可采用 HDD 盘,其他情况都建议采用 SSD 盘。


(2)数据写入一致性

数据在写入 ClickHouse 失败重试后内容出现重复,导致了不同系统,如 Hive 离线数仓中分析结果,与 ClickHouse 集群中运算结果不一致。



解决方案: 基于统一全局的负载均衡调度策略,完成数据失败后仍然可写入同一 Shard,实现数据幂等写入,从而保证在 ClickHouse 中数据一致性。

(3)实时离线数据写入

ClickHouse 数据主要来自实时流水上报数据和离线数据中间分析结果数据,如何在架构中完成上万亿基本数据的高效安全写入,是一个巨大的挑战。


解决方案: 基于 Tube 消息队列,完成统一数据的分发消费,基于上述的一致性策略实现数据幂同步,做到实时和离线数据的高效写入。


(4)表分区数优化

部分离线数据仓库采用按小时落地分区,如果采用原始的小时分区更新同步,会造成 ClickHouse 中 Select 查询打开大量文件及文件描述符,进而导致性能低下。


解决方案: ClickHouse 官方也建议,表分区的数量建议不超过 10000,上述的数据同步架构完成小时分区转换为天分区,同时程序中完成数据幂等消费。


(5)读/写分离架构

频繁的写动作,会消耗大量 CPU/内存/网卡资源,后台合并线程得不到有效资源,降低 Merge Parts 速度,MergeTree 构建不及时,进而影响读取效率,导致集群性能降低。


解决方案: ClickHouse 临时节点预先完成数据分区文件构建,动态加载到线上服务集群,缓解 ClickHouse 在大量并发写场景下的性能问题,实现高效的读/写分离架构,具体步骤和架构如下:


a)利用 K8S 的弹性构建部署能力,构建临时 ClickHouse 节点,数据写入该节点完成数据的 Merge、排序等构建工作;


b)构建完成数据按 MergeTree 结构关联至正式业务集群。


当然对一些小数据量的同步写入,可采用 10000 条以上批量的写入。


(6)跨表查询本地化

在 ClickHouse 集群中跨表进行 Select 查询时,采用 Global IN/Global Join 语句性能较为低下。分析原因,是在此类操作会生成临时表,并跨设备同步该表,导致查询速度慢。


解决方案: 采用一致性 hash,将相同主键数据写入同一个数据分片,在本地 local 表完成跨表联合查询,数据均来自于本地存储,从而提高查询速度。


这种优化方案也有一定的潜在问题,目前 ClickHouse 尚不提供数据的 Reshard 能力,当 Shard 所存储主键数据量持续增加,达到磁盘容量上限需要分拆时,目前只能根据原始数据再次重建 CK 集群,有较高的成本。


3. 基于 Superset 的自助数据分析可视化平台

Apache Superset(孵化)是一个现代的、企业级的商业智能 Web 应用程序,为业务提供处理 PB 级数据的高性能的 OLAP 在线数据分析服务,提供丰富的数据可视化集,支持包括 ClickHouse、Spark、Hive 等多个组件的接口。


QQ 音乐大数据团队结合自身业务特点丰富完善功能,结合腾讯云 EMR 云端弹性能力,深入参与 Superset 开源共建:


https://github.com/apache/incubator-superset



ClickHouse 在实时分析领域拥有诸多优势,在 OLAP 分析场景下,搭配在数据可视化领域表现抢眼的 Superset 组件,在对 QQ 音乐业务指标概览以及二维变量分析中,提供丰富的数据可视化集以供数据分析处理。


当前 Superset 上万个图表中,超 60%由产品、研发、运营、研究员、财务等非数据人员创建,做到全民数据分析,数据平民化。


四、QQ 音乐与腾讯云 EMR 共建云端 OLAP

在即席分析以及数据可视化等方面,开源社区版本,有着生态支持丰富、开源保证稳定性、软件安全性等诸多优势。但同时,开源版本也存在着技术复杂度高、周期长、组件运维复杂、缺少实际商业化应用的经验积累等缺点和不足。


腾讯云 EMR 支持开源社区版本 OLAP,提供成熟数据能力。开箱即用 ClickHouse+Superset 组合方案,使用社区的最新稳定版本,同时简化了繁杂的配置和运维操作,保障集群高可用与数据安全。



相比直接使用社区开源组件,产品化的 ClickHouse+Superset 有着诸多的优势:


  • 快速构建,10 分钟创建上百节点的大数据集群,避免复杂的配置。

  • 弹性伸缩,10 分钟进行横向扩展。

  • 自动化基础运维设施,百余监控指标覆盖,异常事件秒级触达。

  • 专业云售后团队 7*24 小时支持,提高技术抗风险能力。


腾讯云 EMR 商业化产品既保留了开源社区组件的优势,又弥补了存在的不足,是商业化应用的趋势之选。


目前,QQ 音乐业务在自建架构的基础上,配合腾讯云 EMR 产品弹性能力、自动化管理,以及业务商业化的持续支持,对 PB 级数据进行实时 OLAP 分析,查询性能优异,广泛应用在实时分析与查询的业务场景,管理更轻松,更专注业务。


QQ 音乐也与 EMR 其它组件,以及大数据矩阵进行更多合作,结合开源与深度二次开发,以混合架构的模式,贴合业务场景,共同打造大数据生态。在推荐场景下, QQ 音乐灵活地选用腾讯 EMR 产品中的 HBase 组件集群,使用多个组件协作,用于支持标签存储的频繁更新与读取,满足不同大数据业务场景的需求。

结语

云端大数据基础设施产品以其技术开放性、全链路覆盖、灵活性获得了互联网企业数据 IT 团队的一致认可,越来越多的企业也逐步意识到云厂商雄厚技术保障所带来的隐性价值认同。借助于云端大数据基础设施进行以数据驱动的业务创新、运营创新已成为新一代互联网企业的业界共识和主流趋势。



QQ 音乐大数据团队与腾讯云 EMR 产品深入探索业务合作,从大数据基础设施、全链路数据工具链、领域数据价值应用在内的各个环节,互利共赢,释放多元数据价值。腾讯云 EMR 将持续打磨 ClickHouse+Superset,致力于为更多行业和业务场景提供云端数据能力。


作者介绍


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接


https://mp.weixin.qq.com/s/_pXPDbhqC1B1HQWQQEfAGw


2020-06-08 10:005928

评论

发布
暂无评论
发现更多内容

工赋开发者社区 | MES/MOM数据采集系统需求分析和总体设计

工赋开发者社区

好用的pdf格式转换器:PDF to Word Document Converter 激活版

真大的脸盆

Mac PDF Mac 软件 PDF格式转换

WebGPU 令人兴奋的 Web 发展

devpoint

WebGL webgpu #WebGPU 三周年连更

分布式事务的21种武器 - 1

俞凡

架构

【Java技术专题】「盲点追踪」突破知识盲点分析Java安全管理器(SecurityManager)

洛神灬殇

Java 安全管理器 SecurityManager

面试官:类是如何加载的?

做梦都在改BUG

限时开源!阿里京东架构师出品亿级高并发系统设计手册

会踢球的程序源

Java 架构 后端 java架构师

阿里巴巴灵魂一问:说说触发HashMap死循环根因

会踢球的程序源

hashmap Java1

CNStack 云服务&云组件:打造丰富的云原生技术中台生态

阿里巴巴云原生

阿里云 云原生 CNStack

从初学者角度聊一聊socket到底是什么?

会踢球的程序源

Java 后端 socket

ES6中的Proxy

格斗家不爱在外太空沉思

JavaScript ES6 三周年连更

多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌

Java你猿哥

Java 多线程 面试题 高并发 多线程与高并发

测试需要写测试用例吗?

老张

软件测试 质量保障 测试用例

带你浅谈下Quartz的简单使用

Java你猿哥

Java SSM框架 quartz

霸榜Github三个月的「架构师成长手册」!成为架构师竟然也有捷径

Java你猿哥

Java 分布式 架构设计 架构师 SSM框架

硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

亚马逊云科技 (Amazon Web Services)

SpringBoot中如何解决Redis的缓存穿透、缓存击穿、缓存雪崩?

做梦都在改BUG

MySQL索引15连问,你扛得住吗?

做梦都在改BUG

Java MySQL 数据库 索引

2023年超全前端面试题-背完稳稳拿offer(欢迎补充)

肥晨

三周年连更

如果有一天当你的Redis 内存满了,该怎么办?

会踢球的程序源

Java redis 后端

Golang负载均衡器Balancer的源码解读

骑牛上青山

Go 负载均衡

🔥🔥🔥热乎的前端面试题(昨天)

控心つcrazy

JavaScript 面试 Vue 前端面试

fabric.js开发图片编辑器可以实现哪些功能?多图

秦少卫

h5编辑器 FabricJS Fabric.js 海报编辑器 图片编辑

2023春招、金三银四,面试官必问的1000道Java面试题及答案整理

架构师之道

Java 面试

我给大家免费公开五份阿里Java架构师学习手册!助力金三银四

Java你猿哥

Java 架构 算法 高并发 Java性能调优

劲爆!阿里巴巴面试参考指南(嵩山版)开源,程序员面试必刷

做梦都在改BUG

Java 程序员 面试

让算力普惠、释放技术红利,阿里云让开发者成为创新主体

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

Java的访问修饰符

Java你猿哥

Java oop SSM框架

FastDFS收藏起来,现在开始用Minio吧

会踢球的程序源

Java fastdfs

2023最NB的JVM基础到调优笔记,光图文就超清晰,吃透阿里P6小case

Java你猿哥

Java JVM Java虚拟机 jvm调优

QQ音乐PB级ClickHouse实时数据平台架构演进之路_大数据_云加社区_InfoQ精选文章