starRocks搭建

公司要使用新的大数据架构,打算用国产代替国外的大数据平台。所以这里我就纠结用doris还是starrocks,如果用doris,因为是开源的,以后就可以直接用云厂商的。如果用starrocks就得自己搭建,但是以后肯定会商业化,也是要收钱的。doris我以前用过,没用过starRocks,想试下是不是真的像下面参考链接里的高性能,所以我选择了starrocks。用他来做数仓,代替我们以前cdh里的hive-presto或者kudu-impala。

大家觉得starRocks可以替代hive吗?我觉得是可以的,hadoop那一套的都是20年前google玩腻的了,hadoop那套组件太多了,好处就是非常稳定,20年了,几乎遇到的大bug都修完了。彻底不用hadoop那套,可以用starRocks代替。

检测cpu是否支持

cat /proc/cpuinfo | grep avx2

如果什么都没有打印,那么你可以换cpu了。

Be是负责计算的,你没有这个指令集,那么部署不了

介绍

startrocks是做【数据分析】的【数据仓库】,可以替代传统的hive,他具有++向量化++ ,++MMP架构++ 的++列式存储引擎++ ,支持++实时分析++ ,并发计算。兼容mysql协议,可使用++mysql客户端对接++ 。支持++水平扩展++。全系统无外部依赖,也就是不需要zookeeper来管理,或者元数据存在mysql,只用维护自身。

他不适合做事务操作,比如更新等操作,用来分析的数据都是写入了就不变的,比如日志数据,或者是体检报告等。

向量化:指的是将数据向量化后,cpu原本只能处理一条,现在可以同时处理多条

MPP架构:大规模并行处理架构,将数据拆分给多台机器一起执行,处理大量数据

列式存储引擎:将列进行管理,支持大宽表存储和分析,mysql就不行,字段多了就崩了,单独查列很快,可以实时更新列

实时分析:查询分析速度比较快,毫秒级

mysql客户端对接:比如navicat,或者jdbc都可以直接链接它?待验证

水平扩展:1台太弱,我可以继续加机器,让他分析能力变强

支持 以下BI对接:包括 Tableau、Power BI、FineBI 和 Smartbi。

作为实时数仓,他只能【秒级】同步数据 ,可以实时【毫秒级查询

系统架构(维护以及搭建必看)

系统的核心只有 FE(Frontend)、BE (Backend) 或 CN (Compute Node) 进程。

前端(显示界面)、后端(逻辑控制)、节点

3.0后支持了存算分离,存储持久化数据必须放到hdfs上。当然你也可以选择存算一体。

3.0同样支持这两种架构。

这2个有啥区别,存算一体的话,你必须将【数据复制】到startRocks里一份,存算分离的话,你【直接用hdfs】的数据就行了。少了一步复制,存算分离的话更加省钱,省磁盘,更好的动态扩容,扩容就不用管存储了,直接扩容计算节点就行。缺点就是要多维护一套外源数据。

不支持混合部署,存算一体选择了,就不能弄存算分离了。

Fe负责协调、和目录管理

存算一体

Be负责存储计算

Fe(详细版)

负责管理++元数据++ ,管理客户端的连接,++查询规划++、查询调度。

FE的元数据是存储在内存里的,磁盘中也有一份。

FE有3种角色,leader,follower,observer

Leader是选举出来的,他负责读写。然后写入后,将元数据更新完,同步给follwer和observer,只有一半的follwer成功了才算成功。

Follwer没有写入权限,只有读取权限

Observer和follwer一样,可选部署,能提高查询速度,不参与选举,相当于是如虎添翼

Be(详细版)

每个BE是一样的(没有啥leader,follwer),但是并不是每一个be都有完整的数据,BE负责是存储和计算,FE将数据分配到BE,BE将他存下来,并且生成索引。

Be计算,会将sql根据语法意思,分成逻辑单元(代码层面),然后根据数据分布变成物理单元(硬件层面),然后会在本地执行。

元数据:这个不会没人知道吧,说实话我都不想写,只是为了照顾小白。比如这个数据是什么类型的,是字符串还是数字,这就是元数据,用来修饰数据的数据。

查询规划:计划要消耗多少性能,用什么sql,进行优化,转换成物理计划

查询调度:选择哪台be去执行这个物理计划

存算提一体数据管理

starRocks最小的存储单元叫做tablet。我们可以自行分区,然后指定分桶。

图中是按时间列分区,然后对指定4个字段进行分桶(4列,其实用1列都可以),然后指定了3个副本,每个列的数据每个单元数据,分布在不同的节点下。A-1和A-2还有A-3都是相同的数据,是A的备份。

他扩容的时候,不需要停止服务,增加节点会自动迁移,节点减少时也会自动均横分布数据。

存算分离

引入了【缓存】 的概念,Be【只】负责计算,然后改名叫做Cn(计算节点-compute node)

缓存:会自动根据查询频率将数据进行++动态变化++

动态变化:分为3级,内存,本地,外源。最热的数据在内存中,然后其他是本地磁盘中,然后冷数据(不经常用的)在外源中。随着你的访问频率进行动态数据调整

存算分离建表时候,需要告诉他是否开启缓存。

支持以下后端存储:

  • 兼容 AWS S3 协议的对象存储系统(支持主流的对象存储系统如 AWS S3、Google GCP、阿里云 OSS、腾讯云 COS、百度云 BOS、华为云 OBS 以及 MinIO 等)
  • Azure Blob Storage
  • 传统数据中心部署的 HDFS

这里官网的系统架构的每句话,我都已经用自己话讲完了。下面开始搭建。

快速上手体验

他是用docker容器帮你打包好环境了,所以可以直接启动。

首先安装docker,至少4G内存,10GB空间。

我们服务器的cpu不支持avx2,这里我在下虚拟机,打算在windows上面弄一个Ubuntu.22,因为我个人电脑是支持avx2的。---等我下载完,在开始写后面的。

参考:

📚 【源码解析】StarRocks 查询优化系列文章 - 原理解读 - StarRocks中文社区论坛

StarRocks | StarRocks

部署前提条件 | StarRocks

https://www.cnblogs.com/huanghanyu/p/18186894

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习