- StarRocks
- 产品简介
- 快速开始
- 部署 StarRocks
- 表设计
- 导入数据
- 导出数据
- 查询数据源
- 查询加速
- 管理手册
- 参考手册
- SQL参考
- 用户账户管理
- 集群管理
- ADD SQLBLACKLIST
- ADMIN CANCEL REPAIR TABLE
- ADMIN CHECK TABLET
- ADMIN REPAIR TABLE
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ALTER RESOURCE GROUP
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE RESOURCE GROUP
- CREATE FILE
- DELETE SQLBLACKLIST
- DROP FILE
- DROP RESOURCE GROUP
- EXPLAIN
- INSTALL PLUGIN
- KILL
- SET
- SHOW BACKENDS
- SHOW BROKER
- SHOW COMPUTE NODES
- SHOW FILE
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW PLUGINS
- SHOW PROC
- SHOW PROCESSLIST
- SHOW RESOURCE GROUP
- SHOW SQLBLACKLIST
- SHOW TABLE STATUS
- SHOW VARIABLES
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER MATERIALIZED VIEW
- ALTER TABLE
- ALTER VIEW
- ALTER RESOURCE
- ANALYZE TABLE
- BACKUP
- CANCEL ALTER TABLE
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE ANALYZE
- CREATE DATABASE
- CREATE EXTERNAL CATALOG
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE AS SELECT
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- CREATE FUNCTION
- DROP ANALYZE
- DROP STATS
- DROP CATALOG
- DROP DATABASE
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- DROP FUNCTION
- HLL
- KILL ANALYZE
- RECOVER
- REFRESH EXTERNAL TABLE
- RESTORE
- SET CATALOG
- SHOW ANALYZE JOB
- SHOW ANALYZE STATUS
- SHOW META
- SHOW RESOURCES
- SHOW FUNCTION
- TRUNCATE TABLE
- USE
- DML
- ALTER LOAD
- ALTER ROUTINE LOAD
- BROKER LOAD
- CANCEL LOAD
- CANCEL REFRESH MATERIALIZED VIEW
- CANCEL EXPORT
- CREATE ROUTINE LOAD
- DELETE
- EXPORT
- GROUP BY
- INSERT
- PAUSE ROUTINE LOAD
- REFRESH MATERIALIZED VIEW
- RESUME ROUTINE LOAD
- SELECT
- SHOW ALTER TABLE
- SHOW ALTER MATERIALIZED VIEW
- SHOW BACKUP
- SHOW CATALOGS
- SHOW CREATE CATALOG
- SHOW CREATE MATERIALIZED VIEW
- SHOW CREATE TABLE
- SHOW CREATE VIEW
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- SHOW MATERIALIZED VIEWS
- SHOW PARTITIONS
- SHOW PROPERTY
- SHOW REPOSITORIES
- SHOW RESTORE
- SHOW ROUTINE LOAD
- SHOW ROUTINE LOAD TASK
- SHOW SNAPSHOT
- SHOW TABLES
- SHOW TABLET
- SHOW TRANSACTION
- SPARK LOAD
- STOP ROUTINE LOAD
- STREAM LOAD
- SUBMIT TASK
- UPDATE
- 辅助命令
- 数据类型
- 关键字
- AUTO_INCREMENT
- 函数参考
- Java UDF
- 窗口函数
- Lambda 表达式
- 日期函数
- add_months
- adddate
- convert_tz
- current_date
- current_time
- current_timestamp
- date
- date_add
- date_format
- date_slice
- date_sub, subdate
- date_trunc
- datediff
- day
- dayname
- dayofmonth
- dayofweek
- dayofyear
- days_add
- days_diff
- days_sub
- from_days
- from_unixtime
- hour
- hours_add
- hours_diff
- hours_sub
- microseconds_add
- microseconds_sub
- minute
- minutes_add
- minutes_diff
- minutes_sub
- month
- monthname
- months_add
- months_diff
- months_sub
- now
- quarter
- second
- seconds_add
- seconds_diff
- seconds_sub
- str_to_date
- str2date
- time_slice
- time_to_sec
- timediff
- timestamp
- timestampadd
- timestampdiff
- to_days
- to_date
- unix_timestamp
- utc_timestamp
- week
- weekofyear
- weeks_add
- weeks_diff
- weeks_sub
- year
- years_add
- years_diff
- years_sub
- 字符串函数
- append_trailing_char_if_absent
- ascii
- char
- char_length
- character_length
- concat
- concat_ws
- ends_with
- find_in_set
- group_concat
- hex_decode_binary
- hex_decode_string
- hex
- instr
- lcase
- left
- length
- locate
- lower
- lpad
- ltrim
- money_format
- null_or_empty
- parse_url
- repeat
- replace
- reverse
- right
- rpad
- rtrim
- space
- split
- split_part
- starts_with
- strleft
- strright
- substring
- trim
- ucase
- unhex
- upper
- 聚合函数
- array_agg
- avg
- approx_count_distinct
- any_value
- bitmap
- bitmap_agg
- count
- grouping
- grouping_id
- hll_empty
- hll_hash
- hll_raw_agg
- hll_union
- hll_union_agg
- max
- max_by
- min
- multi_distinct_count
- multi_distinct_sum
- percentile_approx
- percentile_cont
- percentile_disc
- retention
- sum
- std
- stddev
- stddev_samp
- variance, variance_pop, var_pop
- var_samp
- window_funnel
- Array 函数
- array_agg
- array_append
- array_avg
- array_concat
- array_contains
- array_contains_all
- array_cum_sum
- array_difference
- array_distinct
- array_filter
- array_intersect
- array_join
- array_length
- array_map
- array_max
- array_min
- arrays_overlap
- array_position
- array_remove
- array_slice
- array_sort
- array_sortby
- array_sum
- array_to_bitmap
- reverse
- unnest
- Bitmap 函数
- bitmap_agg
- bitmap_and
- bitmap_andnot
- bitmap_contains
- bitmap_count
- bitmap_empty
- bitmap_from_string
- bitmap_hash
- bitmap_has_any
- bitmap_intersect
- bitmap_max
- bitmap_min
- bitmap_or
- bitmap_remove
- bitmap_to_array
- bitmap_to_base64
- base64_to_bitmap
- bitmap_to_string
- bitmap_union
- bitmap_union_count
- bitmap_union_int
- bitmap_xor
- intersect_count
- sub_bitmap
- to_bitmap
- JSON 函数
- Map 函数
- Bit 函数
- Binary 函数
- 加密函数
- 模糊/正则匹配函数
- 条件函数
- 百分位函数
- 标量函数
- 工具函数
- 地理位置函数
- cast 函数
- hash 函数
- 数学函数
- 系统变量
- 用户自定义变量
- 错误码
- 系统限制
- SQL参考
- 常见问题解答
- 性能测试
手动部署 StarRocks
本文介绍如何以二进制安装包方式手动部署 StarRocks。
如需从 源码 编译安装 StarRocks,参考 Docker 编译。
您还可以通过 Docker 镜像,StarRocks Manager,或者 StarGo 安装 StarRocks。
以下示例仅部署一台 FE 节点以及一台 BE 节点。在正常应用环境中,一个 StarRocks 集群需要部署三个 BE 节点。
如需在生产环境中扩容,参考 扩容缩容。
前提条件
在部署 StarRocks 之前,请确保如下环境要求已满足。
分类 | 描述 | 说明 |
---|---|---|
硬件要求 |
|
|
操作系统 | Linux kernel 3.10 以上。 | |
软件要求 |
| |
系统环境 |
|
说明
- 如果您想在 Ubuntu 22.04 或 ARM 架构处理器上运行 StarRocks,则需要从 StarRocks Docker Hub 下载并运行特定标签的 Docker 镜像,并从 Docker 容器目录 /data/starrocks 下复制二进制文件到您的主机。
- 依据不同的工作负载复杂性,StarRocks 每个 CPU 线程每秒可以处理 10M 至 100M 行数据。您可以据此估计集群中需要多少 CPU 线程能够满足您的要求。而 StarRocks 在存储数据时利用列存储和压缩,可以达到 4-10 倍的压缩比,您可以使用该数据来估计集群所需的存储量。
- StarRocks 仅支持 JDK 作为依赖,不支持使用 JRE。
其他系统参数配置:
- 建议关闭交换区,消除交换内存到虚拟内存时对性能的扰动。
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
下载并解压安装包
下载 StarRocks 并解压二进制安装包。
tar -xzvf StarRocks-x.x.x.tar.gz
注意
将以上文件名修改为下载的二进制安装包名。
下载完成后,将安装包分发至各节点。
部署 FE 节点
本小节介绍如何配置部署 Frontend (FE) 节点。FE 是 StarRocks 的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。
新集群中的 FE 节点在启动时默认启用 IP 地址访问。如需为新集群启用 FQDN 访问,请参阅 为新集群启用 FQDN 访问。
配置 FE 节点
进入 StarRocks-x.x.x/fe 路径。
cd StarRocks-x.x.x/fe
注意
将以上路径名修改为解压后的路径名。
修改 FE 配置文件 conf/fe.conf。以下示例仅添加元数据目录和 Java 目录,以保证部署成功。如需在生产环境中对集群进行详细优化配置,参考 FE 参数配置。
注意
当一台机器拥有多个 IP 地址时,需要在 FE 配置文件 conf/fe.conf 中设置
priority_networks
,为该节点设定唯一 IP。
添加元数据目录配置项。
meta_dir = ${STARROCKS_HOME}/meta
添加 Java 目录配置项。
JAVA_HOME = /path/to/your/java
注意
将以上路径修改为 Java 所在的本地路径。
创建元数据路径
创建 FE 节点中的元数据路径 meta。
mkdir -p meta
注意
该路径需要与 conf/fe.conf 文件中配置路径保持一致。
启动 FE 节点
运行以下命令启动 FE 节点。
bin/start_fe.sh --daemon
确认 FE 启动成功
通过以下方式验证 FE 节点是否启动成功:
- 通过查看日志 log/fe.log 确认 FE 是否启动成功。
2020-03-16 20:32:14,686 INFO 1 [FeServer.start():46] thrift server started. // FE 节点启动成功。
2020-03-16 20:32:14,696 INFO 1 [NMysqlServer.start():71] Open mysql server success on 9030 // 可以使用 MySQL 客户端通过 `9030` 端口连接 FE。
2020-03-16 20:32:14,696 INFO 1 [QeService.start():60] QE service start.
2020-03-16 20:32:14,825 INFO 76 [HttpServer$HttpServerThread.run():210] HttpServer started with port 8030
...
- 通过运行
jps
命令查看 Java 进程,确认 StarRocksFE 进程是否存在。 - 通过在浏览器访问
FE ip:http_port
(默认http_port
为8030
),进入 StarRocks 的 WebUI,用户名为root
,密码为空。
说明
如果由于端口被占用导致 FE 启动失败,可修改配置文件 conf/fe.conf 中的端口号
http_port
。
添加 FE 节点
您可通过 MySQL 客户端连接 StarRocks 以添加 FE 节点。
在 FE 进程启动后,使用 MySQL 客户端连接 FE 实例。
mysql -h 127.0.0.1 -P9030 -uroot
说明
root
为 StarRocks 默认内置 user,密码为空,端口为 fe/conf/fe.conf 中的query_port
配置项,默认值为9030
。
查看 FE 状态。
SHOW PROC '/frontends'\G
示例:
MySQL [(none)]> SHOW PROC '/frontends'\G
*************************** 1. row ***************************
Name: 172.26.xxx.xx_9010_1652926508967
IP: 172.26.xxx.xx
HostName: iZ8vb61k11tstgnvrmrdfdZ
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: LEADER
ClusterId: 1160043595
Join: true
Alive: true
ReplayedJournalId: 1303
LastHeartbeat: 2022-10-19 11:27:16
IsHelper: true
ErrMsg:
StartTime: 2022-10-19 10:15:21
Version: 2.4.0-c0fa2bb
1 row in set (0.02 sec)
- 当 Role 为 LEADER 时,当前 FE 节点为选举出的主节点。
- 当 Role 为 FOLLOWER 时,当前节点是一个能参与选主的 FE 节点。
如果 MySQL 客户端连接失败,可以通过查看 log/fe.warn.log 日志文件发现问题。
如果在初次部署时遇到任何意外问题,可以在删除并重新创建 FE 的元数据目录后,重新开始部署。
部署 FE 节点的高可用集群
StarRocks 的 FE 节点支持 HA 模型部署,以保证集群的高可用。详细设置方式参考 FE 高可用集群部署。
停止 FE 节点
运行以下命令停止 FE 节点。
./bin/stop_fe.sh --daemon
部署 BE 节点
本小节介绍如何配置部署 Backend (BE) 节点。BE 是 StarRocks 的后端节点,负责数据存储以及 SQL 执行等工作。以下例子仅部署一个 BE 节点。您可以通过重复以下步骤添加多个 BE 节点。
配置 BE 节点
进入 StarRocks-x.x.x/be 路径。
cd StarRocks-x.x.x/be
注意
将以上路径名修改为解压后的路径名。
修改 BE 节点配置文件 conf/be.conf。因默认配置即可启动集群,以下示例并未修改 BE 节点配置。如需在生产环境中对集群进行详细优化配置,参考 BE 参数配置。
注意
当一台机器拥有多个 IP 地址时,需要在 BE 配置文件 conf/be.conf 中设置
priority_networks
,为该节点设定唯一 IP。
创建数据路径
创建 BE 节点中的数据路径 storage。
mkdir -p storage
注意
该路径需要与 be.conf 文件中配置路径保持一致。
添加 BE 节点
通过 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
和port
与添加的 BE 节点一致。
启动 BE 节点
运行以下命令启动 BE 节点。
bin/start_be.sh --daemon
确认 BE 启动成功
通过 MySQL 客户端确认 BE 节点是否启动成功。
SHOW PROC '/backends'\G
示例:
MySQL [(none)]> SHOW PROC '/backends'\G
*************************** 1. row ***************************
BackendId: 10003
Cluster: default_cluster
IP: 172.26.xxx.xx
HostName: sandbox-pdtw02
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2022-05-19 11:15:00
LastHeartbeat: 2022-05-19 11:27:36
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 10
DataUsedCapacity: .000
AvailCapacity: 1.865 TB
TotalCapacity: 1.968 TB
UsedPct: 5.23 %
MaxDiskUsedPct: 5.23 %
ErrMsg:
Version: 2.2.0-RC02-2ab1482
Status: {"lastSuccessReportTabletsTime":"2022-05-19 11:27:01"}
DataTotalCapacity: 1.865 TB
DataUsedPct: 0.00 %
1 row in set (0.01 sec)
当 Alive
为 true
时,当前 BE 节点正常接入集群。
如果 BE 节点没有正常接入集群,可以通过查看 log/be.WARNING 日志文件排查问题。
如果日志中出现类似以下的信息,说明 priority_networks
的配置存在问题。
W0708 17:16:27.308156 11473 heartbeat_server.cpp:82\] backend ip saved in master does not equal to backend local ip127.0.0.1 vs. 172.16.xxx.xx
如遇到以上问题,可以通过 DROP 错误的 BE 节点,然后重新以正确的 IP 添加 BE 节点的方式来解决。
ALTER SYSTEM DROP BACKEND "172.16.xxx.xx:9050";
如果在初次部署时遇到任何意外问题,可以在删除并重新创建 BE 的数据路径后,重新开始部署。
停止 BE 节点
运行以下命令停止 BE 节点。
./bin/stop_be.sh --daemon
下一步
成功部署 StarRocks 集群后,您可以: