更多技术交流、求职机会、试用福利,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

近年来,OLAP产品的竞争日渐激烈,目前企业间流行的既有Impala、Greenplum等上一代较为成熟的数据分析产品,也有ClickHouse、Kylin、Druid、Doris、StarRocks等在不同场景各具特色的新一代分析引擎。这些产品各有胜场,用户在进行选择时需要对各产品有全面的了解,并且要求产品知识紧跟最新版本,才能准确的选出适合自己公司的产品。

字节跳动旗下抖音、今日头条等产品的成长速度很快,需要分析处理的数据也随之指数级的快速增长,这对分析的实时性有极高的要求。在选择OLAP引擎时,字节也尝试过Kylin、Druid、Spark等,并且其他产品也做了广泛的调研。经过不断尝试和思考,字节从性能、稳定、可复用等角度考量,最终选择了ClickHouse作为主分析引擎,承载字节跳动广泛的业务增长分析工作。当前,字节跳动内部的ClickHouse节点总数已经超过 18000 个,管理总数据量超过 700PB,最大的集群规模在 2400 余个节点,是全国乃至于全世界最大的ClickHouse用户之一。

字节跳动的OLAP演进

起初时,最大需求的是“快”,所以字节团队尝试了Kylin,它的优点是能够提供毫秒级别的查询延时。但同时Kylin也存在需要预聚合、需要提前定义数据模型和无法进行交互式分析等问题,随着数据量变大反而会导致返回结果慢。随后团队又希望用Spark来解决问题。但Spark同样存在不少问题困扰着团队,比如查询速度不够快、资源使用率高、稳定性不够好,以及无法支持更长时间的数据等。

经过认真思考,字节决定从以下角度来选择OLAP分析引擎:

一是对 OLAP 非常朴素又简单的要求:高可用和强性能。不论给 OLAP 加上多少复用、赋予多少身份,最核心且首要的诉求是能存储足够多的数据、足够稳定,并且可以非常快地查到数据。这是第一个要求——要好用,即满足海量数据下交互式分析的性能要求,达到秒级响应。

二是复用。在好用的基础上,团队希望能尽量用一套技术栈解决大部分问题甚至是所有问题,这就需要引擎是可定制的,能让开发人员在这套技术栈上搭建各种面向场景化的应用。

三是易用,能让用户更加自主地把产品使用起来。

最终,经过对当时市面上已有的多款开源引擎的调研和测试,团队最终选择采用 ClickHouse 作为 OLAP 查询引擎,并开始基于此不断迭代。

ClickHouse简介

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。于2016年开源,以性能强悍著称。其具备列式存储、向量化执行引擎、高压缩比、多核并行计算等特性。

1.  性能强

号称最快的OLAP引擎,在1亿数据量级相同服务器的性能对比如下:

2. 功能丰富

ClickHouse支持数据统计分析各种场景:

  • 支持类SQL查询;

  • 支持繁多库函数(例如IP转化,URL分析等,预估计算/HyperLoglog等);

  • 支持数组(Array)和嵌套数据结构(Nested Data Structure);

  • 支持数据库异地复制部署。

3. 数据导入速度快

ClickHouse使用大规模并行计算框架,超高吞吐的实时写入能力,每秒在50-200M量级。

ClickHouse采用类LSM Tree的结构,数据写入后定期在后台Compaction。通过类 LSM tree的结构, ClickHouse在数据导入时全部是顺序append写,写入后数据段不可更改,在后台compaction时也是多个段merge sort后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力。

4. 发展前景好

自2016年开源以来,ClickHouse凭借其数倍于其他顶尖交互式分析数据库的极致性能,发展速度非常迅猛。目前,ClickHouse已在Github上获得24.2K Star,1000+的Contributors。

ClickHouse的缺点

没有任何一个数据引擎是完美无缺的,在大量使用过程中,字节也发现了ClickHouse的一些缺点:

1. 关联查询能力差

ClickHouse的优势在单表查询性能,但是在一些要求灵活查询的场景,ClickHouse多表关联能力的不足就暴露了出来,难以满足这类场景。

2. 依赖Zookeeper

Zookeeper在ClickHouse中主要用于副本表数据的同步(ReplicatedMergeTree引擎)以及分布式表(Distributed)的操作上。但是对Zookeeper的不当使用很容易引起ClickHouse集群的不稳定。

3. 不支持upsert

ClickHouse仅支持批量删除或修改数据,ReplacingMergeTree需要依赖merge异步去重。

4. 运维复杂

ClickHouse扩缩容时需要创建新表重新导数据,十分不方便。ClickHouse集群不能自动感知集群拓扑变化,也不能自动balance数据。当集群数据量较大,复制表和分布式表过多时、想做到表维度、或者集群之间的数据平衡会导致运维成本很高。

立即跳转火山引擎ByteHouse官网了解详情!欢迎下载《从ClickHouse到ByteHouse》白皮书了解更多~

数据分析引擎百花齐放,为什么要大力投入ClickHouse?的更多相关文章

  1. 《开源大数据分析引擎Impala实战》目录

    当当网图书信息: http://product.dangdang.com/23648533.html <开源大数据分析引擎Impala实战>目录 第1章  Impala概述.安装与配置.. ...

  2. 大数据分析引擎Apache Flink

    Apache Flink是一个高效.分布式.基于Java实现的通用大数据分析引擎,它具有分布式 MapReduce一类平台的高效性.灵活性和扩展性以及并行数据库查询优化方案,它支持批量和基于流的数据分 ...

  3. 详细解读大数据分析引擎Pig&PigLatin语句

    Pig 一.Pig的介绍: Pig由Yahoo开发,主要应用于数据分析,Twitter公司大量使用Pig处理海量数据,Pig之所以是数据分析引擎,是因为Pig相当于一个翻译器,将PigLatin语句翻 ...

  4. 详细解读Spark的数据分析引擎:Spark SQL

    一.spark SQL:类似于Hive,是一种数据分析引擎 什么是spark SQL? spark SQL只能处理结构化数据 底层依赖RDD,把sql语句转换成一个个RDD,运行在不同的worker上 ...

  5. Elasticsearch分布式搜索和数据分析引擎-ElasticStack(上)v7.14.0

    Elasticsearch概述 **本人博客网站 **IT小神 www.itxiaoshen.com Elasticsearch官网地址 https://www.elastic.co/cn/elast ...

  6. Impala:新一代开源大数据分析引擎

    Impala架构分析 Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据.已有的Hive系统虽然也提供了SQL语 ...

  7. Impala:新一代开源大数据分析引擎--转载

    原文地址:http://www.parallellabs.com/2013/08/25/impala-big-data-analytics/ 文 / 耿益锋 陈冠诚 大数据处理是云计算中非常重要的问题 ...

  8. Spark入门,概述,部署,以及学习(Spark是一种快速、通用、可扩展的大数据分析引擎)

    1:Spark的官方网址:http://spark.apache.org/ Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Streaming.Graph ...

  9. Esri大数据分析引擎GeoAnalytics Server部署经历

    系统架构 Base WebGIS 4Cores 16GB Spatiotemporal Data Store 32GB SSD Disk 足够大的空间 GA Server 4Cores 16GB 足够 ...

  10. Kubernetes Ingress 日志分析与监控的最佳实践

    摘要: Ingress主要提供HTTP层(7层)路由功能,是目前K8s中HTTP/HTTPS服务的主流暴露方式.为简化广大用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingr ...

随机推荐

  1. .NET快速对接极光消息推送

    什么是消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息推送& ...

  2. 飞码LowCode前端技术之画布的设计

    简介 本章节从精准定位.分层设计.异步组件.拖拽四个方面分析飞码画布设计. 一.精准定位设计 飞码画布是一个套件,可对外提供画布能力.精准定位有两种情况,一是目标组件无子组件,而是目标组件有子组件. ...

  3. mac中删除本地maven库中下载失败的.lastUpdated文件

    在 macOS 中,要删除本地 Maven 仓库中所有的 .lastUpdated 文件,您可以使用 find 命令结合 rm 命令来执行这个操作.这可以在终端(Terminal)中完成. 打开您的终 ...

  4. 最好用的oa办公系统?

    OA办公系统是一种集成办公自动化.协同办公.信息管理等功能于一体的软件系统,旨在提高办公效率,优化流程管理,提供更好的团队协作和信息共享.下面将详细介绍几个目前市场上认为较为优秀的OA办公系统. 一. ...

  5. 吉特日化MES & Redis 运行远程访问的配置

    在吉特日化MES系统部署实施过程中,经常需要配置Redis需要运行远程IP访问Redis.使用Redis的目的主要是为了解决缓存的问题,同时解决打印过程中推送数据的问题. 一. Redis 的安装目录 ...

  6. 安装NETDATA集群监控面板

    安装NETDATA集群监控面板 介绍 官方链接 演示网页:https://my-netdata.io/ 官方首页:http://netdata.cloud/ 文档地址:http://docs.netd ...

  7. K8s 里如何优雅地使用 /dev/shm 实现容器间共享内存

    目录 1. 从 docker run 的 --shm-size 参数聊起 2. Linux 里的 /dev/shm 3. Docker 对共享内存的支持 4. K8s 里如何设置 /dev/shm 大 ...

  8. 香橙派5plus从ssd启动Ubuntu

    官方接口图 我实际会用到的就几个接口,背面的话就一个M.2固态的位置: 其中WIFI模块的接口应该也可以插2230的固态,不过是pcie2.0的速度,背面的接口则是pcie3.0*4的速度,差距还是挺 ...

  9. ASR项目实战-后处理

    本文深入探讨后处理环节. 在本环节要处理的重要特性有分词.断句.标点符号.大小写.数字等的格式归一等. 分词 和NLP.搜索等场景下的分词含义不同.对于拼音类的语言,比如英语.法语等,句子由多个单词组 ...

  10. [VMware]ESXI下硬盘的两种直通方式

    文章来自:https://rmbz.net/archives/vmware-esxi-passthrough 最近再搞ESXI,把原来的"黑群晖"改成ESXI:因为群晖里有数据,为 ...