速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

作为国内规模最大的 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 内核探究

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

 

字节端上推理演进与实践

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

 

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

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

发布了 801 篇内容, 共 557.3 次阅读, 收获喜欢 2791 次。

关注

评论 1 条评论

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

NA公链NAC公链真正的100%史诗级匿名去中心化应用

区块链第一资讯

火爆全网!万字精华总结“银四Java复习笔记”(共计22个技术专题)

比伯

Java 架构 面试 程序人生 计算机

类加载器和双亲委派模型

hepingfly

Java ClassLoader 类加载器 双亲委派模型

通俗讲解分布式锁,这次你一定能懂!

Java架构师迁哥

inotifywait+rsync实现目录监听及同步

慢慢de

Docker rsync inotify 目录监听同步

mPaaS 月度小报 | CodeHub#4 在线教育应用的开发实践;香港站正式开服上线

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS

Notion免费搭建个人网站,使用Notion又多了一个理由

彭宏豪95

GitHub Notion 写作 博客 4月日更

智汇华云 | 看“新基建”如何将机房里的“老家伙”物尽其用

华云数据

Spark中的累加器和广播变量

五分钟学大数据

spark 4月日更

阿里P9这几个提高代码运行效率的小技巧我一直在用

Java架构师迁哥

【LeetCode】寻找旋转排序数组中的最小值 IIJava题解

Albert

算法 LeetCode 4月日更

hashmap遍历,关于网络优化你必须要知道的重点,Android岗

欢喜学安卓

android 程序员 面试 移动开发

梦里花落知多少,网络抖动逃不了

阿里云基础软件团队

c 语言思维地基搭建(总概论)

-jf.

4月日更

android适配方案,Kafka是如何实现高性能的?全套教学资料

欢喜学安卓

android 程序员 面试 移动开发

ARMv9刷屏——号称十年最大变革,Realm机密计算技术有什么亮点?

阿里云基础软件团队

信息爆炸时代,如何更好地处理工作信息

LigaAI

程序员 产品经理 研发管理 信息处理

读《小岛经济学》

箭上有毒

4月日更

谁说没学历就进不了大厂?(双非渣硕四年crud经验已拿下阿里P6)面经分享

Java 编程 程序员 架构 面试

测评:国内到底有没有能媲美Jira的测试管理工具?

爱吃小舅的鱼

敏捷 研发管理 测试 研发管理工具 测试管理

腾讯专家连夜肛出来17大专题30W字的Java面试手册!

码农之家

Java 编程 程序员 互联网 面试

SparkStreaming流计算实战

小舰

4月日更

Javascript执行机制-事件循环

Sakura

4月日更

源中瑞区块链BaaS平台--一键部署区块链应用

13530558032

NoSQL数据库兄弟会

大数据技术指南

sql 4月日更

大厂Offer收割机:Netty处理写事件之连环四问,你能抗住吗?

Java架构师迁哥

知乎转载超30W次!金三Java面经汇总:拼多多(三面)/蚂蚁金服(四面)/字节跳动(二面)

Java架构追梦

Java 面试 拼多多面经 蚂蚁金服面经 字节跳动面经

新思科技成为CVE编号授权机构 向公众发布更准确、实时的漏洞信息

InfoQ_434670063458

新思科技 CVE 软件质量与安全

英特尔陈葆立:至强傲腾强强联手,实现1+1>2

E科讯

用泡妞的逻辑理解23种常用设计模式?渣男直呼内行

北游学Java

Java 设计模式

19张图带你梳理SpringCloud体系中的重要技术点!

Java架构师迁哥

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