• 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

  • 相关阅读:
    基于JAVA的学校图书管理系统(Swing+GUI)
    awk用法:取列表最后一列
    vue3.0 slot
    分布式搜索引擎ElasticSearch-1
    关于个体工商户的15个财税要点,你清楚吗?
    python毕业设计作品基于django框架 电影院购票选座系统毕设成品(8)毕业设计论文模板
    css记录:三维变换之transition
    “技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 WP
    [计算机网络实验]头歌 实验二 以太网帧、IP报文分析(含部分分析)
    android 11后文件读写访问权限申请
  • 原文地址:https://blog.csdn.net/qq_38403590/article/details/139731374