写点什么

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

评论

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

Gson的快速使用

卢卡多多

json Gson 6月日更

计算机性能测试

若尘

计算机组成原理 6月日更

spring boot 自动装配原理详解

公众号:程序猿成神之路

Spring Boot

浪潮云说丨构建实时监控能力,提升应用质效

云计算

JavaScript 学习(七)

空城机

JavaScript 大前端 6月日更

Python线性预测

Qien Z.

6月日更 线性预测

打造一个通用、可配置、多句柄的数据上报 SDK

魅影

sqlite 数据库 APM 多线程 数据上报

你会写注释吗?

看山

Java 6月日更

App 上架包预检

魅影

ios Node 代码扫描 脚本 应用审核

校友会小程序开发笔记十: 校友资讯功能模块设计与实现

CC同学

校友录小程序 同学录小程序

Windows11要来啦!!!

学神来啦

win10 win11

“云边+端”三管齐下,“有蓉”数据库助力四川气象进入天擎时代

脑极体

Kubernetes手记(18)- 高级调度策略

雪雷

k8s 6月日更

【Vue2.x 源码学习】第二十一篇 - 依赖收集的过程分析

Brave

源码 vue2 6月日更

深入了解Spring之事件机制

邱学喆

观察者模式 spring的事件机制 EventListener注解

在线时间戳格式化转换工具【推荐】

入门小站

工具

爱了,天猫“618”亿级高并发设计实战手册,限时分享

Java架构师迁哥

深入了解Spring之上下文

邱学喆

ApplicationContext LifecycleProccesor 事件传播者 ApplicationListener

算法之寻找二叉树结点的最近公共祖先

Skysper

算法

推荐算法团队介绍(十四)

Databri_AI

机器学习 算法 团队 推荐系统

浅析Angular数据状态管理框架:NgRx/Store

devpoint

angular.js angular store 6月日更

数据库在各行各业的应用实践

xcbeyond

数据库 最佳实践 6月日更

【21-14】singularity介绍

耳东@Erdong

6月日更 singularity

Linux之rm命令

入门小站

Linux

校友会小程序开发笔记十一: 后台管理系统功能设计与实现

CC同学

校友录小程序 同学录小程序

react源码解析17.context

全栈潇晨

React

HarmonyOS学习路之开发篇——Intent

爱吃土豆丝的打工人

HarmonyOS Ability intent 页面跳转

以资源为中心的计算机和现实分析

型火🔥

架构 分布式 操作系统 资源

☕【JVM技术探索】各种类型对象占用内存情况分析(下)

洛神灬殇

JVM 6月日更 对象大小 对象计算

校友会小程序开发笔记九: 校友群助手功能模块设计与实现

CC同学

校友会小程序 同学录小程序

算法:八皇后问题

看山

面试 算法 6月日更

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