技术分享 | ClickHouse StarRocks 使用经验分享

news2024/11/17 2:32:22

作者:许天云

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


一. 大纲

本篇分享下个人在实时数仓方向的一些使用经验,主要包含了ClickHouseStarRocks 这两款目前比较流行的实时数仓,文章仅代表个人拙见,有问题欢迎指出,Thanks♪(・ω・)ノ

关于实时数仓,是目前在互联网上比较火的概念,不同于传统的 T+1 的离线数仓(Hadoop 之类),实时数仓更加追求于数据的实时分析能力,也更加符合现阶段各类分析场景对于数据及时性的诉求,例如:ClickHouse 、StarRocks 等都是这一方案的典型代表。

先简单介绍下本篇讨论的两款实时数仓产品:

  • ClickHouse:由 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库。

  • StarRocks:新一代的国产MPP数据库,由 Apache Doris 数据库演进而来,并且进行了商业化支持。

二. 调研过程简述

2.1. 调研诉求

项目上由于 MySQL 中的数据量极速增长后,MySQL 自身无法承担一些实时的olap查询,所以需要调研一款实时数仓来解决。

我这的业务诉求比较简单,大致有以下几点:

  • 实时数仓需要兼容 MySQL 协议与 SQL 语法,开发不需要额外的学习成本,可以快速上手。
  • 日志类数据(只会追加)需要支撑亿级别实时分析,而业务类数据(不断更新)需要支撑千万级别实时分析并且对于 JOIN 性能要比较好,因为存在很多 JOIN 查询。
  • 整体架构要比较简单,因为很多项目硬件资源相对紧张,并且同步延迟保持在30秒内。
  • 数据同步过程中并不需要清洗转换,只需要将 MySQL 中的数据镜像复制到 MPP 中即可。

基本架构如下图所示:

2.2. ClickHouse 调研

带着上述的调研诉求,我们首先调研的是 ClickHouse ,因为这是一款以单机性能强悍著称的 OLAP 数据库,而且当时在IT圈里也非常流行。

经过我们的调研测试后,发现 ClickHouse 只适合于日志类流数据的分析,而日志流数据最大的特点就是数据只会追加而不会变更删除,即所谓的append流。我们用一台单机的 ClickHouse 就可以支撑上亿的日志聚合分析,效果比较满意,部分查询场景还可以配合物化视图达到更极速的分析。

针对于另外一种业务类数据的分析场景,因为数据会不断的更新,即所谓的change流,和日志流数据不太相同,因此我们尝试了用ReplacingMergeTree引擎的自动合并去重能力,再加上查询时显示指定final关键字去达到精确查询的效果,但是性能方面不尽如人意,特别是 JOIN 场景。

对于 ClickHouse 的集群模式,因为需要引用 zookeeper 实现分布式协调,并且还需要创建分布式表,个人觉得比较复杂,而且测试下来,对于更新场景效果还是不好,其他精确查询的方式也不太便捷,因此暂时放弃使用ClickHouse实现业务数据的即时分析,更推荐ClickHous去处理日志流数据

兼容性方面,ClickHouse 兼容 MySQL 协议,SQL 语法方面和 MySQL 类似,但是部分基本函数名称变了,而且列名大小写敏感,除这2点比较恶心外,其他基本无问题,后续我们也主要用 ClickHouse 去处理项目上的日志分析,效果还可以。

2.3. StarRocks 调研

因为 ClickHouse 无法有效的支撑业务类数据的分析场景,所以我们继续调研了 StarRocks ,主要是看重了 StarRocks 里存在非常适合实时更新场景的主键模型(Primary key),和其比较优越的JOIN性能

经过测试对比,StarRocks 中使用主键模型可以很好的支撑业务数据分析,因为主键模型采用了Delete+Insert 的策略,保证同一个主键下仅存在一条记录,虽然牺牲了一些写入性能,但是极大的提升了查询效率。同时 JOIN 性能也相较于 ClickHouse 提升了很多。

StarRocks 集群方面不依赖于 ZK ,通过 BE 和 FE 模块了组成了存算分离的架构模型,相比于 ClickHouse 的集群实现简单很多,因此我们可以很便捷的完成 StarRocks 集群部署及后期的水平扩展。

最后就是 StarRocks 的兼容性,相比于 ClickHouse ,StarRocks 的 MySQL 兼容性更加优秀,基本完全兼容 MySQL 协议与 SQL 语法,开发也可以无缝切换到 StarRocks 进行开发,比较省事。

后期我们主要通过部署 StarRocks 来解决项目上业务数据的实时分析,不过相较于 ClickHouse 的单机部署,StarRocks 则通常是多节点部署才能发挥更好的查询性能,因此 StarRocks 对于硬件的需求会比 ClickHouse 更加高些。

三. 实时同步

下面我们来谈下如何实现 MySQL to MPP 的实时同步。

3.1. ClickHouse同步

MySQL to ClickHouse 的同步我们使用了 GitHub 上开源的一款 CDC 产品,名字叫做Bifrost,流程图如下所示,Bifrost 通过解析 MySQL Binlog 然后拼接成 insert 语句,最后批量写入 ClickHouse 中完成实时同步。

因为 Bifrost 会自动将 CDC 数据拼接成 SQL ,攒成一批数据后批量写入 ClickHouse ,所以并不需要 Kafka 等消息队列做缓冲,因此架构上非常简单。

因为同步走的是 SQL 语句,所以 MySQL 端加列等常见 DDL 也可以同步到 ClickHouse 中,同步效率上可以支撑每秒上千条数据,延迟在10秒之内,符合我们之前的诉求。

3.2. StarRocks 同步

MySQL to StarRocks 是我们基于 Bifrost 做了一些改动后实现,还是利用 Bifrost 自身的 CDC 功能,先将增量数据写入 Kafka 中,然后在 StarRocks 端通过自身的Routine Load导入功能自主消费 kafka 数据实现同步。另外额外开发了一个 Econvert 的Go程序,用于批量生成 MySQL to StarRocks 的全量同步脚本,原理是走的 StarRocks 提供的 MySQL 外表同步数据。

相较于 ClickHouse 的同步,StarRocks 的同步稍微复杂点,因为 Bifrost 本身不支持直接同步到 StarRocks 中,所以只能先将数据放于 Kafka 中(Bifrost 支持输出到 kafka 中,但是要注意数据格式),再供 StarRocks 消费。

因为 StarRocks 中不支持识别 DDL 的 kafka 数据,所以无法实现自动同步 DDL ,针对 MySQL 中的加列操作需要手动在 StarRocks 修改,同步效率上会比走 SQL 同步的 ClickHouse 更高,延迟也基本可以保持在10秒内,符合我们之前的诉求。

四. 总结

总结一下,如果是需要分析日志流数据,更加推荐 ClickHouse ,因为 ClickHouse 单机强悍,可以支撑亿级别数据量,架构简单,相比于 StarRocks 也更加稳定,相比集群,更推荐单机 ClickHouse 。

如果是分析业务流数据,更加推荐 StarRocks ,因为 StarRocks 对于更新场景性能更加,而且 JOIN 性能更好,而且更加推荐部署 StarRocks 集群,可以充分发挥 StarRocks 的性能。

如果是混合场景,既有日志分析,也存在业务分析,那么也可以用 StarRocks 一套包掉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET MVC解决方案的搭建(.NET Framework)——C#系列(一)

一、新建项目 1、控制器新建 2、Service层新建 3、Business数据层新建 4、Commons公共层新建 5、Models实体层新建 二、调用接口 1、接口建立 Web API 2 控制器新建 2、调用 三、Swagger接口调试配置 1、添加NuGet包 在启动项中添加Swashbuckle NuGet包 2、访问 htt…

Vivado2018.3安装及注册指南-安装包获取

一、vivado 介绍 vivado设计套件 是FPGA 厂商赛灵思(Xilinx)公司最新的为其产品定制的集成开发环境,支持Block Design、Verilog、VHDL等多种设计输入方式,内嵌综合器以及仿真器,可以完成从设计输入、综合适配、仿真到…

mysql存储过程的基础知识

本文来简单说下存储过程的基础知识 文章目录概述什么是存储过程存储过程的优缺点概述 mysql官网提供的储存过程:https://www.mysqlzh.com/doc/225/499.html 什么是存储过程 简单的说,存储过程是一条或者多条SQL语句的集合,可视为批文件&…

SAP采购中不基于收货的发票校验的价差计算过程实例

年前最后一天上班了,我还在帮财务分析一个价差问题。源于财务用户头天的一个请求,在不基于收货的发票校验中,计算倒不难,难的是梳理数量的逻辑关系。不过总算时间也没白花,记录下来。下次就不算了,能解释清…

理解使用并查集

目录 一.并查集原理 1.概念: 2.性质 3.形式 4. 合并方式 二.并查集实现 1.成员变量 2.构造函数 3.查找根 4.合并集合 5.判断是否在一个集合 6.查看集合数量 三.并查集总代码 前言:理解并查集是为了接下来学习图要用,而会使用并查…

Linux:系统性能监控工具-tsar安装和使用

在上家公司做性能压力测试时就用过tsar,但总结文档留在了内部,正好借着最近工作内容又用上了tsar,总结起来 目录前言tsar介绍总体架构安装tasrtsar配置介绍配置文件定时任务配置日志文件tsar使用tsar实际使用参考查看可用的监控模块列表查看C…

本松新材创业板IPO终止:业绩下滑,客户较集中,周永松为实控人

撰稿|汤汤 来源|贝多财经 近日,深圳证券交易所披露的信息显示,杭州本松新材料技术股份有限公司(下称“本松新材”)提交了撤回上市申请文件的申请,保荐人财通证券也撤回对该公司的保荐。因此,深交所终止了…

目标检测:YOLOV3技术详解

目标检测:YOLOV3技术详解前言主要改进DarkNet53新的分类器正负样本的匹配损失函数前言 YOLOV3是V2的升级版,也是原作者的绝笔,V3主要还是把当时一些有用的思想融入了进来,没有什么创新型的突破,具体细节我们下面介绍。…

【安卓逆向】Frida入门与常用备忘

【安卓逆向】Frida入门与常用备忘前置知识什么是hook?hook的作用常见的逆向工具Frida使用入门简介与资料参考备忘前置环境配置执行hook常用hook脚本/API前置知识 什么是hook? hook,译为“钩子”,是指将方法/函数勾住,…

2022-CSDN的一年

前言 马上要到兔年的春节,年前最后一个版本顺利上线,闲下来两天,可以对过往一年进行一下总结,说起来这是入职CSDN之后第一次自己将自己所思所想以以博客的形式发布在CSDN网站上,也是比较奇特的体验。语言表达能力不强&…

利用华为路由器配置单臂路由功能,实现多个vlan间通信

单臂路由,是通过一台路由器使不同VLAN之间互通的数据通过路由器进行三层转发。 如果在路由器上为每个 VLAN分配一个单独的路由器物理接口,那么随着VLAN数量的增口,必然需要更多的接口,而路由器能提供的接口数量有限,所…

Kubernetes 基本概念

Kubernetes 是什么 Kubernetes 是一个可移植、可扩展的开源平台。用于管理容器化的工作负载和服务,可促进声明式配 置和自动化。是谷歌保密了十几年的秘密武器Borg的开源版本,谷歌一直通过Borg系统管理着数量庞大 的应用程序集群。由于Kubernetes是基于…

元素排序 Comparable 和 Comparator 有什么区别?

1.字面含义不同 我们先从二者的字面含义来理解它,Comparable 翻译为中文是“比较”的意思,而 Comparator 是“比较器”的意思。Comparable 是以 -able 结尾的,表示它自身具备着某种能力,而 Comparator 是以 -or 结尾,…

7. R语言【相关性分析函数】:cov、cor、cor.test 和 【相关性检验函数】:cor.test、corr.test、pcor.test

b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话)&…

二、TortoiseGit的安装

1、TortoiseGit的安装 1.1、TortoiseGit简介 (1)TortoiseGit是一个基于TortoiseSVN的Git的Windows Shell接口。它是开源的,可以免费使用。 (2)TortoiseGit是git的比较好用的一个图形化工具。 1.2、软件下载 (1)下载地址 Download – TortoiseGit – Windows S…

84. 双向循环神经网络

1. 未来很重要 取决于过去和未来的上下文,可以填很不一样的词目前为止RNN只看过去在填空的时候,我们也可以看未来城 2. 双向RNN 两个隐状态层,并行计算隐状态,但是隐状态传播方向相反。 公式如下: 3. 推理 双向RNN不…

day16集合

1.Collection集合 1.1数组和集合的区别【理解】 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 1.2集合类体系结构【理解】…

web期末作业网页设计——APEX(网页源码)

大学生网页制作期末作业-HTMLCSSJavaScript(包含源码)-apex欢迎来到Apex英雄Apex-legends 充满各种机会的世界 边境远方 偏僻星球群 欢迎来到诸王峡谷 于2019年2月5日发行。玩家在游戏中将扮演外星战场上的星空战士。 《Apex英雄》是由《泰坦天降》制作组…

<栈>的概念结构实现【C语言版】

1.栈的概念及结构 栈存储数据的方式跟数组一样,都是将元素排成一行。只不过它还有以下 3 条约束。 ● 只能在末尾插入数据。 ● 只能读取末尾的数据。 ● 只能移除末尾的数据。 你可以将栈看成一叠碟子:你只能看到最顶端那只碟子的碟面&#xff0c…

微博图床挂了!

一直担心的事情还是发生了。作为hexo多年的使用者,微博图床一直是我的默认选项,hexotyporaiPic更是我这几年写文章的黄金组合。而图床中,新浪图床一直都是我的默认选项,速度快、稳定同时支持大图片批量上传更是让其成为了众多图床…