starrocks 部署 - 分布式关系型列式数据库 大数据 mysql starrocks


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 管理湖仓数据。


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回