报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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:006537

评论

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

Elasticsearch Segments Merging 磁盘文件合并

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

学无定法——知识反转效应

Justin

心理学 28天写作 游戏设计

一文搞懂PID控制算法

不脱发的程序猿

3月日更 PID 控制算法 智能控制 工业控制

基于 SparkMLlib 智能课堂教学评价系统 - 系统实现(四)

大数据技术指南

大数据 spark 智能时代 28天写作 3月日更

AI开发效率低,你可以试试华为NAIE AutoML

华为云开发者联盟

华为 AI 框架 AutoML NAIE平台

Spring AOP 执行顺序 && Spring循环依赖(面试必问)

hepingfly

Java spring aop 循环依赖

啥子叫递归哟!!!(阶乘)

依旧廖凯

28天写作 3月日更

《精通比特币》学习笔记(第十一章)

棉花糖

区块链 学习 3月日更

Python 初学者必看:Python 异常处理集合

华为云开发者联盟

Python 异常 代码 程序 错误

Ubuntu 日常系列:常用软件

TroyLiu

Linux ubuntu Ubuntu20.04

解析分布式应用框架Ray架构源码

华为云开发者联盟

gRPC API 框架 ray 分布式应用框架

镁信健康“互联网+医+药+险”模式能否打造出中国版联合健康?

E科讯

万物互联网络在企业中的价值和展望 | 趋势解读

物联网

集成融云 IMLib 时,如何实现一套类似于 IMKit 的用户信息管理机制

融云 RongCloud

翻译:《实用的Python编程》06_01_Iteration_protocol

codists

Python

腾讯高级工程师保姆级“Java成长手册”,层层递进,全是精华

Java架构追梦

Java 腾讯 面试 架构师

有状态容器应用,从入门到实践

焱融科技

Kubernetes 容器 云原生 焱融科技 分布式存储

混合编程:如何用python11调用C++

华为云开发者联盟

c++ 编程 语言 python11 混合编程

【LeetCode】螺旋矩阵Java题解

Albert

算法 LeetCode 28天写作 3月日更

数据营销“教父”宋星十年倾心之作,让数据真正赋能企业

博文视点Broadview

Navicat操作MySQL简易教程

Simon

MySQL navicat

阿里P7亲自讲解!整理几个重要的Android知识,最全Android知识总结

欢喜学安卓

android 程序员 面试 移动开发

阿里P7亲自教你!一线互联网大厂中高级Android面试真题收录!讲的明明白白!

欢喜学安卓

android 程序员 面试 移动开发

一分钟了解EFT公链新一代超级DeFi公链——EGG超级公链

币圈那点事

区块链 公链 挖矿

Hadoop之YARN的内部机制

hanke

大数据 hadoop 开源 YARN

在PostgreSQL中使用ltree处理层次结构数据

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

用户行为分析模型实践(一)—— 路径分析模型

vivo互联网技术

大数据 数据分析 用户行为分析

学以至用-从“0”到“1”设计千万级交易系统

ninetyhe

高可用 分布式系统 海量数据库的设计与实践 异步削峰

整理 自动备份MYSQL数据库shell脚本

edd

三步上线自己的在线监考系统

融云 RongCloud

书单|互联网企业面试案头书之程序员软技能篇

博文视点Broadview

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