https://hub.docker.com/r/starrocks/allin1-ubuntu
https://hub.docker.com/r/d87904488/starrocks-starter
https://github.com/StarRocks/starrocks
https://docs.starrocks.io/zh-cn/latest/quick_start/Concepts
---挂载本地存储编译StarRocks
mkdir /data/file/bizdata
cd /data/file/bizdata
git clone https://github.com/StarRocks/starrocks.git
cd starrocks
git checkout main
docker run -itd --restart=always -p 9030:9030 -p 8030:8030 -p 8040:8040 --privileged=true --name starrocks -v /data/file/bizdata/starrocks/.m2:/root/.m2 -v /data/file/bizdata/starrocks:/root/starrocks -v /etc/localtime:/etc/localtime:ro starrocks/dev-env:main
docker exec -it starrocks /root/starrocks/build.sh
docker exec -it starrocks /bin/bash
yum -y install --skip-broken epel-release vim net-tools bzip2 unzip zip wget ftp lsof screen curl psmisc telnet-server telnet.* vim-enhanced xz iftop sysstat dstat htop iotop lrzsz lftp bash-completion python-simplejson libselinux-python smartmontools automake autoconf libtool gcc gcc-c++ make intltool
yum check-update
yum update -y
yum clean all
-Access StarRocks using mysql client:
mysql -uroot -h127.0.0.1 -P 9030
-浏览器访问 FE ip:http_port(默认 http_port 为 8030)
进入 StarRocks 的 WebUI,用户名为 root,密码为空
---部署一台 FE 节点以及一台 BE 节点。在正常应用环境中,一个 StarRocks 集群需要部署三个 BE 节点。
FE 节点建议配置 8 核 或以上 CPU,16GB 或以上内存。
BE 节点建议配置 16 核 或以上 CPU,64GB 或以上内存。
通过运行 cat /proc/cpuinfo |grep avx2 命令查看节点 CPU 支持的指令集,若有结果返回则表明 CPU 支持 AVX2 指令集。
-建议关闭交换区,消除交换内存到虚拟内存时对性能的扰动。
echo 0 | sudo tee /proc/sys/vm/swappiness
-建议使用 Overcommit,将 cat /proc/sys/vm/overcommit_memory 设置为 1。
echo 1 | sudo tee /proc/sys/vm/overcommit_memory
---部署 FE 节点---
---FE 是StarRocks的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。
FE 有三种角色:Leader FE,Follower FE 和 Observer FE。Follower 会通过类 Paxos 的 Berkeley DB Java Edition(BDBJE)协议自动选举出一个 Leader。三者区别如下:
Leader
Leader 从 Follower 中自动选出,进行选主需要集群中有半数以上的 Follower 节点存活。如果 Leader 节点失败,Follower 会发起新一轮选举。
Leader FE 提供元数据读写服务。只有 Leader 节点会对元数据进行写操作,Follower 和 Observer 只有读取权限。Follower 和 Observer 将元数据写入请求路由到 Leader 节点,Leader 更新完数据后,会通过 BDB JE 同步给 Follower 和 Observer。必须有半数以上的 Follower 节点同步成功才算作元数据写入成功。
Follower
只有元数据读取权限,无写入权限。通过回放 Leader 的元数据日志来异步同步数据。
参与 Leader 选举,必须有半数以上的 Follower 节点存活才能进行选主。
Observer
主要用于扩展集群的查询并发能力,可选部署。
不参与选主,不会增加集群的选主压力。
通过回放 Leader 的元数据日志来异步同步数据。
cd StarRocks-x.x.x/fe
vim conf/fe.conf
当一台机器拥有多个 IP 地址时,需要在 FE 配置文件 conf/fe.conf 中设置 priority_networks,为该节点设定唯一 IP。
-添加元数据目录配置项。
meta_dir = ${STARROCKS_HOME}/meta
-添加 Java 目录配置项。
JAVA_HOME = /path/to/your/java
-启动 FE 节点。
bin/start_fe.sh --daemon
-使用 MySQL 客户端连接 FE 实例。
mysql -h 127.0.0.1 -P9030 -uroot
说明 root 为 StarRocks 默认内置 user,密码为空,端口为 conf/fe.conf 中的 query_port 配置项,默认值为 9030。
-查看 FE 状态。
SHOW PROC '/frontends'\G
-当 Role 为 FOLLOWER 时,当前节点是一个能参与选主的 FE 节点。
-当 IsMaster 为 true 时,当前 FE 节点为主节点 (Leader FE)。
-停止 FE 节点。
./bin/stop_fe.sh --daemon
---部署 BE 节点---
---BE 是 StarRocks 的后端节点,负责数据存储、SQL执行等工作。
数据存储方面,StarRocks 的 BE 节点都是完全对等的,FE 按照一定策略将数据分配到对应的 BE 节点。BE 负责将导入数据写成对应的格式存储下来,并生成相关索引。
在执行 SQL 计算时,一条 SQL 语句首先会按照具体的语义规划成逻辑执行单元,然后再按照数据的分布情况拆分成具体的物理执行单元。物理执行单元会在对应的数据存储节点上执行,这样可以实现本地计算,避免数据的传输与拷贝,从而能够得到极致的查询性能。
cd StarRocks-x.x.x/be
vim conf/be.conf
-通过 MySQL 客户端将 BE 节点添加至 StarRocks 集群。
mysql> ALTER SYSTEM ADD BACKEND "host:port";
-host 需要与 priority_networks 相匹配,port 需要与 be.conf 文件中的设置的 heartbeat_service_port 相同,默认为 9050。
-将该 BE 节点从集群移除。
mysql> ALTER SYSTEM decommission BACKEND "host:port";
host 需要与 priority_networks 相匹配,port 需要与 be.conf 文件中的设置的 heartbeat_service_port 相同,默认为 9050。
-启动 BE 节点。
bin/start_be.sh --daemon
-确认 BE 节点是否启动成功。
SHOW PROC '/backends'\G
当 Alive 为 true 时,当前 BE 节点正常接入集群。
如果 BE 节点没有正常接入集群,可以通过查看 log/be.WARNING 日志文件排查问题。
-停止 BE 节点。
./bin/stop_be.sh --daemon
---部署Broker节点---
通过 Broker,StarRocks 可读取对应数据源(如HDFS、S3)上的数据,利用自身的计算资源对数据进行预处理和导入。除此之外,Broker 也被应用于数据导出,备份恢复等功能。
cd StarRocks-x.x.x/apache_hdfs_broker
vim conf/apache_hdfs_broker.conf
-因默认配置即可启动集群,
-启动 Broker。
./apache_hdfs_broker/bin/start_broker.sh --daemon
-通过 MySQL 客户端连接 StarRocks 以添加或删除 Broker 节点。
ALTER SYSTEM ADD BROKER broker_name "host:port";
默认配置中,Broker 节点的端口为 8000。
同时添加多个 Broker 节点时,该组节点共同使用同一个 broker_name.
-确认 Broker 启动成功
通过 MySQL 客户端确认 Broker 节点是否启动成功。
SHOW PROC "/brokers"\G
-停止 Broker 节点。
sh ./bin/stop_broker.sh --daemon
---部署CN节点---
CN 节点(Compute Node)是一种无状态的计算服务,自身不维护数据,可以承担部分 SQL 计算。本文介绍如何配置部署一个 CN 节点。您可以通过重复以下步骤添加多个 CN 节点。
cd StarRocks-x.x.x/be
vim conf/cn.conf
-因默认配置即可启动集群
MySQL 客户端执行命令将 CN 节点添加至 StarRocks 集群。
mysql> ALTER SYSTEM ADD COMPUTE NODE "host:port";
host 需要与 priority_networks 相匹配,port 需要与 cn.conf 文件中设置的 heartbeat_service_port 相同,默认为 9050。
如添加过程出现错误,需要通过以下命令将该 CN 节点从集群移除。
mysql> ALTER SYSTEM drop COMPUTE NODE "host:port";
host 和 port 与添加的 CN 节点一致。
-启动 CN 节点。
bin/start_cn.sh --daemon
-通过 MySQL 客户端确认 CN 节点是否启动成功。
SHOW PROC '/compute_nodes'\G
当 Alive 为 true 时,当前 CN 节点正常接入集群。
如果 CN 节点没有正常接入集群,可以通过查看 log/cn.WARNING 日志文件排查问题。
确认 CN 节点启动成功后,如果执行查询时需要使用 CN 节点,扩展算力,则需要设置系统变量 prefer_compute_node、use_compute_nodes。
-停止 CN 节点。
./bin/stop_cn.sh
===扩容缩容 StarRocks===
---扩缩容 FE 集群---
StarRocks FE 节点分为 Follower 节点和 Observer 节点。Follower 节点参与选举投票和写入,Observer 节点只用来同步日志,扩展读性能。
注意:
所有 FE 节点的 http_port 必须相同。
Follower FE 节点(包括 Leader 节点)的数量必须为奇数。建议部署 3 个 Follower 节点,以组成高可用部署(HA)模式。
当 FE 集群已经为高可用部署模式时(即包含 1 个 Leader 节点,2 个 Follower 节点),建议您通过增加 Observer 节点来扩展 FE 的读服务能力。
正常情况下,一个 FE 节点可以应对 10 至 20 台 BE 节点。建议您将 FE 集群节点数量控制在 10 个以下。通常 3 个 FE 节点即可满足绝大部分需求。
---扩容 FE 集群
部署并启动新增 FE 节点。详细部署方式参考 部署 StarRocks
bin/start_fe.sh --helper "fe_master_host:edit_log_port" --daemon
fe_master_host: Leader FE 节点的 IP 地址。
扩容 FE 集群。您可以将新增节点设定为 Follower 或 Observer 节点。
将新增节点设定为 Follower 节点。
ALTER SYSTEM ADD follower "fe_host:edit_log_port";
将新增节点设定为 Observer 节点。
ALTER SYSTEM ADD observer "fe_host:edit_log_port";
完成后,您可以查看节点信息验证扩容是否成功。
SHOW PROC '/frontends';
---缩容 FE 集群
您可以删除 Follower 或 Observer 节点。
删除 Follower 节点。
ALTER SYSTEM DROP follower "fe_host:edit_log_port";
删除 Observer 节点。
ALTER SYSTEM DROP observer "fe_host:edit_log_port";
完成后,您可以查看节点信息验证缩容是否成功。
SHOW PROC '/frontends';
---扩缩容 BE 集群---
BE 集群成功扩缩容后,StarRocks 会自动根据负载情况,进行数据均衡,此期间系统正常运行。
---扩容 BE 集群
部署并启动新增 BE 节点。
bin/start_be.sh --daemon
---扩容 BE 集群
ALTER SYSTEM ADD backend 'be_host:be_heartbeat_service_port';
完成后,您可以查看节点信息验证扩容是否成功。
SHOW PROC '/backends';
---缩容 BE 集群
您可以通过 DROP 或 DECOMMISSION 的方式缩容 BE 集群。
DROP 会立刻删除 BE 节点,丢失的副本由 FE 调度补齐,而 DECOMMISSION 先保证副本补齐,然后再删除 BE 节点。建议您通过 DECOMMISSION 方式进行 BE 集群缩容。
通过 DECOMMISSION 的方式缩容 BE 集群。
ALTER SYSTEM DECOMMISSION backend "be_host:be_heartbeat_service_port";
通过 DROP 的方式缩容 BE 集群。
警告:如果您需要使用 DROP 方式删除 BE 节点,请确保系统三副本完整。
ALTER SYSTEM DROP backend "be_host:be_heartbeat_service_port";
完成后,您可以查看节点信息验证缩容是否成功。
SHOW PROC '/backends';
---FE
FE 是 StarRocks 的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。每个 FE 节点都会在内存保留一份完整的元数据,这样每个 FE 节点都能够提供无差别的服务。
FE 根据配置会有两种角色:Follower 和 Observer。Follower 会通过类 Paxos 的 BDBJE 协议选举出一个 Leader。三者区别如下:
-Leader
提供元数据读写服务。只有 Leader 节点会对元数据进行写操作,Follower 和 Observer 只有读取权限。Follower 和 Observer 将元数据写入请求路由到 Leader 节点,Leader 更新完数据后,会通过 BDB JE 同步给 Follower 和 Observer。必须有半数以上的 Follower 节点同步成功才算作元数据写入成功。
Leader 从 Follower 中选出,进行选主需要集群中有半数以上的 Follower 节点存活。如果 Leader 节点失败,Follower 会发起新一轮选举。
-Follower
只有元数据读取权限,无写入权限。通过回放 Leader 的元数据日志来异步同步数据。
参与 Leader 选举,必须有半数以上的 Follower 节点存活才能进行选主。
-Observer
主要用于扩展集群的查询并发能力,可选部署。
不参与选主,不会增加集群选主压力。
通过回放 Leader 的元数据日志来异步同步数据。
---BE
BE 是 StarRocks 的后端节点,负责数据存储、SQL执行等工作。
数据存储方面,StarRocks 的 BE 节点都是完全对等的,FE 按照一定策略将数据分配到对应的 BE 节点。BE 负责将导入数据写成对应的格式存储下来,并生成相关索引。
在执行 SQL 计算时,一条 SQL 语句首先会按照具体的语义规划成逻辑执行单元,然后再按照数据的分布情况拆分成具体的物理执行单元。物理执行单元会在对应的数据存储节点上执行,这样可以实现本地计算,避免数据的传输与拷贝,从而能够得到极致的查询性能。
在进行 Stream load 导入时,FE 会选定一个 BE 节点作为 Coordinator BE,负责将数据分发到其他 BE 节点。导入的最终结果由 Coordinator BE 返回给用户。更多信息,参见 Stream load。
---数据管理
StarRocks 使用列式存储,采用分区分桶机制进行数据管理。一张表可以被划分成多个分区,如将一张表按照时间来进行分区,粒度可以是一天,或者一周等。一个分区内的数据可以根据一列或者多列进行分桶,将数据切分成多个 Tablet。Tablet 是 StarRocks 中最小的数据管理单元。每个 Tablet 都会以多副本(replica) 的形式存储在不同的 BE 节点中。您可以自行指定 Tablet 的个数和大小。StarRocks会管理好每个 Tablet 副本的分布信息。
---starrocks介绍
StarRocks是一个高性能分布式关系型列式数据库,通过MPP执行框架,单节点每秒可处理多达100亿行数据,同时支持星型模型和雪花模型。
StarRocks集群由FE和BE构成,可以使用MySQL客户端访问StarRocks集群。
FE接收MySQL客户端的连接,解析并执行SQL语句,管理元数据,执行SQL DDL命令, 用Catalog记录库、表、分区,tablet副本等信息。
BE管理tablet副本,tablet是table经过分区分桶形成的子表,采用列式存储。BE受FE指导,创建或删除子表。
BE接收FE分发的物理执行计划并指定BE coordinator节点,在BE coordinator的调度下,与其他BE worker共同协作完成执行。
BE读本地的列存储引擎,获取数据,通过索引和谓词下沉快速过滤数据。
---适用场景
StarRocks 可以满足企业级用户的多种分析需求,包括 OLAP (Online Analytical Processing) 多维分析、定制报表、实时数据分析和 Ad-hoc 数据分析等。
---OLAP 多维分析
利用 StarRocks 的 MPP 框架和向量化执行引擎,用户可以灵活的选择雪花模型,星型模型,宽表模型或者预聚合模型。适用于灵活配置的多维分析报表,业务场景包括:
-用户行为分析
-用户画像、标签分析、圈人
-高维业务指标报表
-自助式报表平台
-业务问题探查分析
-跨主题业务分析
-财务报表
-系统监控分析
---实时数据仓库
StarRocks 设计和实现了 Primary-Key 模型,能够实时更新数据并极速查询,可以秒级同步 TP 数据库的变化,构建实时数仓,业务场景包括:
-电商大促数据分析
-物流行业的运单分析
-金融行业绩效分析、指标计算
-直播质量分析
-广告投放分析
-管理驾驶舱
-探针分析APM(Application Performance Management)
---高并发查询
StarRocks 通过良好的数据分布特性,灵活的索引以及物化视图等特性,可以解决面向用户侧的分析场景,业务场景包括:
广告主报表分析
零售行业渠道人员分析
SaaS 行业面向用户分析报表
Dashboard 多页面分析
---统一分析
通过使用一套系统解决多维分析、高并发查询、预计算、实时分析查询等场景,降低系统复杂度和多技术栈开发与维护成本。
使用 StarRocks 来统一数据湖和数据仓库,将高并发和实时要求性很高的业务放在 StarRocks 中分析,把数据湖上的分析使用StarRocks外表查询,统一使用 StarRocks 管理湖仓数据。