【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

怎么设计产品手册?用什么设计产品手册?

Baklib

怎么学自动化测试

和牛

自动化 软件测试 8月月更

Python命令行输出彩色字符串

和牛

Python 8月月更

阿里面试官最新分享的Java面试宝典,含8大核心内容讲解

Java工程师

Java 面试 offer

【荣耀智慧服务】快捷服务开发指南

荣耀开发者服务平台

开发者 App 手机 荣耀 honor

不爱生活的段子手不是好设计师|ONES 人物

万事ONES

异形屏为led显示行业带来更多希望

Dylan

LED显示屏 led显示屏厂家 异形屏

干货:服务器网卡组技术原理与实践

C++后台开发

服务器 交换机 网卡 C/C++后台开发 C/C++开发

自助服务知识库是什么?

Geek_da0866

观测云入选 CNCF 云原生全景图

观测云

聚焦企业流程智能化发展新趋势,中国信通院2022 RPA创新产业峰会即将开启

王吉伟频道

RPA 机器人流程自动化 中国信通院 机器人开发 智能自动化

开源一夏 | 使用 JavaScript 和 CSS 的简单图像放大镜

海拥(haiyong.site)

开源 8月月更

8月Meetup | “数据调度+分析引擎”解锁企业数字化转型之路

Apache DolphinScheduler

一种新的测试方法:视觉感知测试

和牛

软件测试 8月月更

app自动化测试webview怎么操作

和牛

自动化 软件测试 8月月更

开源生态与AI芯片的碰撞&Dragonfly基于P2P的镜像加速系统 | 第 39-40 期

OpenAnolis小助手

开源 dragonfly p2p 龙蜥社区 AI 芯片

阿里总部最新分享SpringCloud 生态全栈笔记,涵盖了五大核心组件,太强了!

Java工程师

Java spring spring-cloud

直播预告|从新手村到魔王城,高效默契的敏捷团队如何炼成

观测云

web技术支持| 基于vue3实现自己的组件库第三章:Checkbox组件

anyRTC开发者

Vue Web 音视频 WebRTC Checkbox组件

一张图快速了解 Istio 的 EnvoyFilter

万猫学社

云原生 istio envoy

在Istio中,到底怎么获取 Envoy 访问日志?

万猫学社

云原生 istio envoy

接口测试中,应不应该用数据库

和牛

8月月更

常用持续集成工具对比

和牛

软件测试 8月月更

requests库访问接口

和牛

测试 8月月更

烟雾、空气质量、温湿度...自己徒手做个环境检测设备

华为云开发者联盟

开发 传感器 环境监测

聊聊云原生数据平台

观远数据

开源 云原生 8月月更

开源一夏 |Spring MVC深度学习

叶秋学长

spring 开源 8月月更

SpringBoot+Vue+Flowable,模拟一个请假审批流程!

江南一点雨

Java spring springboot flowable

分享几个自动化测试的练手项目

和牛

自动化 软件测试 8月月更

如何搭建知识库,让您的内容更丰富?

Geek_da0866

年薪60万+?这份10万字的面试突击宝典涵盖阿里 P5 工程师~P7 所有技术栈

了不起的程序猿

Java 阿里巴巴 架构 Java 面试 java程序员

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