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

作为国内规模最大的 ClickHouse 用户,字节跳动踩过哪些坑? 

  • 2021-11-02
  • 本文字数:3918 字

    阅读完需:约 13 分钟

作为国内规模最大的ClickHouse用户,字节跳动踩过哪些坑? 

作者 | 蔡芳芳

采访嘉宾 | 郭东东

 

ClickHouse 由于其性能方面的突出优势,正在分析型数据库领域掀起一波新的技术浪潮。作为国内规模最大的 ClickHouse 用户,目前字节跳动内部的 ClickHouse 节点总数超过 15000 个,管理总数据量超过 600PB,最大的集群规模在 2400 余个节点。实际上,字节跳动广泛的业务增长分析很多都建立在 ClickHouse 为基础的查询引擎上。

 

那么,ClickHouse 具体应用于字节跳动哪些业务场景?为什么选择采用 ClickHouse 而不是其他数据分析技术?在使用 ClickHouse 的过程中,字节跳动内部团队又踩过哪些坑?近日,InfoQ 带着上述问题采访了字节跳动数据平台数据应用研发负责人郭东东。

字节跳动数据应用产品

 

InfoQ:您在奇虎 360 工作的时候也曾负责大数据平台建设,能否基于您自己的感受,谈谈 360 和字节两家企业建设大数据平台的侧重点有哪些不同?(比如场景、需求、技术栈等等)

 

郭东东:两家公司的发展阶段,包括本身数据的体量都有一些差异,所以这两个公司可能在建设上有一些比较相通的地方,也有一些差异化。在 360 那时候主要是 Hadoop 生态刚刚兴起,当时更多的工作是把 Hadoop、HBase 等一系列大数据技术引入到 360,去解决之前传统数据库构建、数据分析平台建设这块的一些瓶颈,当时更多只是把这些平台作为底座更好地支撑业务。

 

来字节跳动之后,这些开源的生态已经比较成熟了。我们更多是怎样体系化地建设数据平台,在技术平台的基础之上,更多地构建数据分析的其他能力。当然,字节跳动的数据量后期增速很大,本身底层分析引擎等方面的挑战也比较大。

 

InfoQ:您团队负责的数据应用产品,与前段时间字节对外开放的火山引擎数据中台产品,二者之间的关系应该怎么理解?

 

郭东东:我主要负责数据应用相关产品,跟火山引擎的数据中台其实是上下游的依赖关系。中台更多是把数据整理好加工好,形成相对规范的数据体系。数据应用的话更多考虑的是在数据体系上怎样把更多的数据能力赋能给业务线,比如各种分析能力、AB 实验能力、行为分析能力和可视化能力等等。二者是一个比较密切的协同关系。

 

InfoQ:数据应用产品迭代的节奏和流程是怎样的?

 

郭东东:我们基本上采用敏捷开发,一个迭代周期可能是两到三周,每个产品会不太一样,整体来说是小步快跑的节奏,快速把客户的需求转化成产品能力,然后提供给用户去使用。这里面包括测试环节、活动环节都需要把控,整个有一套相对完善的需求管理和研发管控的系统。

 

InfoQ:能否以一个数据应用产品为例,为我们拆解一下背后的整体技术栈和架构是什么样的?

 

郭东东:我以 AB 实验平台为例,简单介绍一下我们整体的技术栈和架构。AB 实验平台整个产品的技术架构包括指标建设模块、数据分流模块等,以及底层的查询引擎能力。指标建设模块负责数据的接入和清洗,包括整个 AB 实验平台数据体系的建设。数据分流模块模块主要是根据不同用户实时决定用户属于的实验组。最底层的查询引擎是我们的核心,主要负责保证整个交互式查询的能力,这里面还有一些增强分析的子模块等等。整个是以容器化部署的,编程语言的话包括 Python、Go 这些都有用到。

 

ClickHouse 应用实践

 

InfoQ:ClickHouse 其实在 16 年就已经开源了,但似乎直到去年热度和关注度才一下子变得特别高,这是为什么呢?

 

郭东东:其实一个开源技术从开源到逐步成熟、被业内广泛采用,本来就需要一个过程。另外,如果有一些大公司逐步在使用这个技术的话,也有助于更好地推动这项技术在业内被普遍采用。应该说字节跳动内部的 ClickHouse 应用实践,对于 ClickHouse 在业内更大范围的使用也起到比较大的推动作用。很多公司都跟我们交流过 ClickHouse 的使用情况,包括技术改进、技术引进路线等等。

 

另外,从本质上来说 ClickHouse 确实解决了一些特定场景和业务上存在的比较大的痛点。数据分析之前大家更多是困在数据量,很少能得到相对明细数据的分析,而 ClickHouse 强大的分析能力刚好解决了这一痛点。这其实也反映了大家对数据更细粒度的分析需求的持续拓展。

 

InfoQ:据了解,ClickHouse 在字节应用还比较多。能否基于您负责的团队和产品,介绍一下 ClickHouse 主要应用于哪些业务场景?第一个采用 ClickHouse 的业务场景是什么?

 

郭东东:ClickHouse 在字节的应用场景比较多,比如我负责的数据应用平台,基本上很多底层技术都非常多地依赖 ClickHouse 提供的能力,比如 BI 分析能力、AB 实验的分析能力、行为分析能力等等,包括商业化层面的广告效果分析,也都是依赖 ClickHouse 的。

 

InfoQ:在选用 ClickHouse 之前你们做了哪些技术选型工作?为什么上述业务场景选择采用 ClickHouse 而不是其他数据分析技术?主要看重 ClickHouse 的哪些特性?相对应可以解决业务场景中的什么问题?

 

郭东东:其实在选 ClickHouse 之前,我们也做了比较多的技术选型工作。当时我们有一个相对比较有挑战的技术场景,是要基于很多明细数据做行为分析,这一块我们研究了挺长时间,当时也试用了 Presto、Kylin 等等各种各样的分析技术,最后选择了 ClickHouse。主要是 ClickHouse 在相对固定的一个 Panel 场景下,查询能力确实有比较明显的优势,而且本身它是不会损失灵活性的,像 Kylin 的话其实灵活性会比较差,只要做一点修改就需要重刷。

 

另外我们其实也调研过 Druid 等,但使用起来跟 ClickHouse 还是有比较大差异的。我们本身选 ClickHouse,还有一个比较大的原因是 ClickHouse 本身 Engine 是相对简单的,因为它 Engine 的执行引擎写得比较高效,它带来的向量化执行等等这些特性对我们场景化分析的价值还是比较大的。

 

InfoQ:从最初采用到现在,技术方案迭代过吗?团队对基于 ClickHouse 开源版本做了哪些改进和优化?

 

郭东东:ClickHouse 是本身开源版本,我们也会持续进行迭代和优化,还是做了不少工作的。比如说 ClickHouse 的单机用户规模原始是受限的,我们做到了大概几千台的单机用户规模,这里面就做了大量的优化。对于它本身查询能力层面、性能层面,我们也做了比较多的优化,包括特殊的像那些比较复杂的路径转换等等一系列分析。

 

另外我们也做了 ClickHouse 的云原生改造,本身它只支持 Local 部署的模式,我们做到了存储计算分离,就能比较容易地基于容器去调动算力,这些方面也做了很多事情。另外 ClickHouse 不支持事务、实时写入能力,包括对 Update 的支持,这块我们都做了比较多的改进.

 

我们整体来说还是按照云原生和相对完整的一个数据库去推进这个演进,包括对相对复杂 SQL 能力的支持、优化器能力的补足,这块都有投入。

 

InfoQ:在使用 ClickHouse 的过程中,你们都遇到过哪些问题?是否有一些解决的经验可以借鉴?

 

郭东东:我们使用 ClickHouse 算比较早的,中间遇到的问题比较多,踩了不少坑,但是现在来看的话,其实 ClickHouse 本身开源也在逐步成熟,很多问题也在逐步完善。至于有哪些经验可借鉴,我觉得可能有几个点拿出来跟大家分享一下。首先 ClickHouse 本身运维管控是比较弱的,所以我们内部自己搭建了一套相对完善的运维管控系统,以保证 ClickHouse 的稳定性,包括故障节点的停换等等一系列事情。另外 ClickHouse 在对外数据摄入这一方面其实也不算特别完善,这块我们也做了比较多事情,还有包括实时能力等等。

 

对大数据分析技术的观察

 

InfoQ:能否谈谈过去 1-3 年,您对于大数据分析技术的观察?有哪些比较重要的变化和趋势?

 

郭东东:过去三年大数据分析技术发展还是挺快的,尤其业内也有比较多的开源技术出现,像 ClickHouse 这样的技术。另外业内云原生数据分析公司(如 Snowflake)的成功,也在大力推动技术的发展。

 

回到技术本身,大家其实可以看到越来越多的云原生能力,包括 AI 支持和数据分析、数据库和数据仓的结合、湖仓一体、批流一体等等,技术一直在持续推进。未来我认为数据分析能力会持续加强,包括数据分析技术的多样性、整个架构 Layer Out、存储计算分离等等,都是比较大的发展趋势。

 

InfoQ:基于实时数据流的 Kappa 架构现在越来越多企业开始尝试。字节的大数据架构中,目前是 Lambda 架构和 Kappa 架构共存吗?如果是,两者分别用在哪些场景?如果还只有 Lambda 架构,那为什么还没有引入 Kappa 架构?

 

郭东东:目前在我们公司内部这两种架构都是存在的,每一种架构都有不同的使用场景。Lambda 架构本身离线和实时是分开的,在我们内部更多用于一些数据量比较大且整体有一些比较复杂的策略的场景,比如反作弊等策略,实时很难做得很准确,就需要把离线和实时分开,离线先提供一份数据,然后实时进一步修正这个数据,保证数据是可用的且准确性更高。

 

但有些场景其实我们也直接采用 Kappa 架构,尤其数据湖这些技术在内部的广泛使用,保证了实时的分析能力跟离线也差不了太多,类似这种场景我们就会把实时和离线整合起来,就只用一套,保证实时产出的数据就是我们最终需要的数据。我们只有在出现比较大的数据口径调整,或者其他事故的时候,才会跑离线任务去修正,默认的话就是一套。

 

采访嘉宾介绍:

 

郭东东,字节跳动数据平台数据应用研发负责人,负责数据应用相关产品的研发,具体包括 AB 实验平台、行为分析系统、智能 BI 洞察系统相关产品等,支撑内部的抖音、今日头条等核心业务线。曾经任职于奇虎 360,负责大数据平台相关建设,有 10 年的大数据平台以及应用架构经验,对 OLAP、大数据实时 &离线处理技术有比较深入的了解,熟悉 ClickHouse、Spark、Presto 等主流的大数据处理技术。


活动推荐:

 

11 月 12-13 日举办的 ArchSummit 全球架构师峰会深圳站,字节跳动的两位老师将分别在【高可用高性能业务架构】和 【AI 工程化治理】两个专题方向带来以下分享:

 

字节跳动海量时序数据库 ByteTSD 内核探究

王栋,字节跳动基础架构研发工程师

 

字节端上推理演进与实践

黄严,字节跳动智能创作解决方案研发负责人

 

议题内容及演讲提纲已上线官网,更多议题可点击这里查看。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-11-02 17:008447
用户头像
蔡芳芳 InfoQ主编

发布了 781 篇内容, 共 494.2 次阅读, 收获喜欢 2748 次。

关注

评论 1 条评论

发布
用户头像
BSN区块链服务网络,全球性基础设施网络,更有各类官方指定应用哦
2021-11-03 17:32
回复
没有更多了
发现更多内容

45天拿下字节跳动Android研发岗offer,竟然有个面试真题库,内幕首次公开!

android 程序员 移动开发

8年老Android开发谈:Context都没弄明白凭什么拿高薪?

android 程序员 移动开发

AndroiAndroid程序员最大的悲哀是什么?d程序员最大的悲哀是什么?

android 程序员 移动开发

Android 11 中的存储机制更新

android 程序员 移动开发

2020这一年的Android面经汇总(百度、腾讯、滴滴、美团

android 程序员 移动开发

3-5年的Android工程师最容易遇到4个瓶颈是什么?

android 程序员 移动开发

35岁程序员面对被优化,面对生活,房贷车贷能有多无力?

android 程序员 移动开发

A015-布局之LinearLayout

android 程序员 移动开发

Android 118道基础面试题,面试途中不卡题

android 程序员 移动开发

2021【BAJT】Android校招、社招面试题整理合集

android 程序员 移动开发

2021京东 Android 岗 Java 面试真题解析

android 程序员 移动开发

2021首次发车,Flutter Fair正式开源了

android 程序员 移动开发

Andorid Studio 制作欢乐写数字(Timer启动+帧动画)

android 程序员 移动开发

20场面试斩获大厂offer,你在我这能学到什么?

android 程序员 移动开发

37岁Android程序员被裁员,面试大厂被拒,降薪去小公司,心更凉了

android 程序员 移动开发

37岁老码农现身说法,想让薪资跨越30k,要走这3条路

android 程序员 移动开发

Activity详解与实现

android 程序员 移动开发

2021最新Android架构师必备宝典《Android架构开发手册》含抖音、美团等大厂架构演进之路

android 程序员 移动开发

2021最新整理大厂Android面试高频知识点

android 程序员 移动开发

2021金三银四Android面试心得,已拿到多个offer

android 程序员 移动开发

5月份,京东 Android开发面经分享!

android 程序员 移动开发

2021疫情下Android技术人的宅家学习进阶指南!花了大价钱大厂内部买来的学习资料,爱看不看!

android 程序员 移动开发

Android - 弹幕实现原理(附Demo源码)

android 程序员 移动开发

2020最新BAT-Android高端技术面试145题详解

android 程序员 移动开发

🏆【JVM深层系列】「云原生时代的Java虚拟机」针对于GraalVM的技术知识脉络的重塑和探究

洛神灬殇

JVM 编译器 GraalVM 11月日更

2021下半年软考多媒体考试总结

Changing Lin

11月日更

30K成功入职:腾讯视频面试Android经历!「含面试题

android 程序员 移动开发

2020新一波跳槽季过后,Android程序员精选,大厂(小米

android 程序员 移动开发

2020腾讯、百度、华为Android面试题校招汇总(已拿offer

android 程序员 移动开发

2020至2021年Android开发面试习题整理,持续更新中

android 程序员 移动开发

2021 年 9 月美团 Android 面试总结

android 程序员 移动开发

作为国内规模最大的ClickHouse用户,字节跳动踩过哪些坑? _架构_蔡芳芳_InfoQ精选文章