- StarRocks介绍
- 快速开始
- 表设计
- 导入数据
- 导出数据
- 使用StarRocks
- 参考手册
- SQL参考
- 用户账户管理
- 集群管理
- ADMIN CANCEL REPAIR
- ADMIN CHECK TABLET
- ADMIN REPAIR
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE FILE
- DROP FILE
- INSTALL PLUGIN
- SHOW BACKENDS
- SHOW BROKER
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW PLUGINS
- SHOW PROC
- SHOW PROCESSLIST
- SHOW TABLE STATUS
- SHOW FILE
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER TABLE
- ALTER VIEW
- BACKUP
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE DATABASE
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE AS SELECT
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- CREATE FUNCTION
- DROP DATABASE
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- DROP FUNCTION
- HLL
- RECOVER
- RESTORE
- SHOW RESOURCES
- SHOW FUNCTION
- TRUNCATE TABLE
- DML
- ALTER ROUTINE LOAD
- BROKER LOAD
- CANCEL LOAD
- CANCEL EXPORT
- DELETE
- EXPORT
- GROUP BY
- INSERT
- PAUSE ROUTINE LOAD
- RESUME ROUTINE LOAD
- CREATE ROUTINE LOAD
- SELECT
- SHOW ALTER
- SHOW BACKUP
- SHOW CREATE TABLE
- SHOW CRAETE VIEW
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- 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
- 辅助命令
- 数据类型
- 函数参考
- 窗口函数
- JAVA UDF
- 日期函数
- convert_tz
- curdate
- current_timestamp
- curtime
- now
- date
- date_add
- date_sub
- date_format
- date_trunc
- dayname
- dayofmonth
- dayofweek
- dayofyear
- weekofyear
- monthname
- months_add
- months_diff
- now
- quarter
- month
- week
- day
- hour
- minute
- second
- years_diff
- months_diff
- weeks_diff
- datediff
- hours_diff
- minutes_diff
- seconds_diff
- timediff
- str_to_date
- str2date
- time_slice
- timestamp
- timestampadd
- timestampdiff
- from_unixtime
- unix_timestamp
- utc_timestamp
- from_days
- to_days
- to_date
- time_to_sec
- microseconds_add
- microseconds_sub
- year
- 加密函数
- 地理位置函数
- 字符串函数
- JSON 函数
- 模糊/正则匹配函数
- 工具函数
- 聚合函数
- Bitmap函数
- Array 函数
- Bit 函数
- cast函数
- hash函数
- 条件函数
- 百分位函数
- 数学函数
- 系统变量
- 错误码
- 系统限制
- SQL参考
- 常见问题解答
- 性能测试
手动部署
环境准备
集群节点需要以下环境支持:
- Linux (Centos 7+)
- 推荐 Oracle Java 1.8+
- CPU 需要支持 AVX2 指令集
- ulimit -n 配置 65535,启动脚本会自动设置,需要启动的用户有设置 ulimit -n 权限
- 集群时钟需同步
- 网络需要万兆网卡和万兆交换机
通过 cat /proc/cpuinfo |grep avx2
命令查看节点配置,有结果则 cpu 支持 AVX2 指令集。
测试集群建议节点配置:BE 推荐 16 核 64GB 以上,FE 推荐 8 核 16GB 以上。建议 FE,BE 独立部署。
系统参数配置建议:
关闭交换区,消除交换内存到虚拟内存时对性能的扰动。
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
可以通过 StarRocks 官网下载 获取二进制产品包。
下载的安装包可直接解压后进行安装部署,如有 下载源码 并编译安装包的需求,可以使用 Docker 进行编译。
将 StarRocks 的二进制产品包分发到目标主机的部署路径并解压,可以考虑使用新建的 StarRocks 用户来管理。
以下载产品包为 starrocks-1.0.0.tar.gz 为例, 解压(tar -xzvf starrocks-1.0.0.tar.gz)后文件目录结构如下:
StarRocks-XX-1.0.0
├── be # BE目录
│ ├── bin
│ │ ├── start_be.sh # BE启动脚本
│ │ └── stop_be.sh # BE关闭脚本
│ ├── conf
│ │ └── be.conf # BE配置文件
│ ├── lib
│ │ ├── starrocks_be # BE可执行文件
│ │ └── meta_tool
│ └── www
├── fe # FE目录
│ ├── bin
│ │ ├── start_fe.sh # FE启动脚本
│ │ └── stop_fe.sh # FE关闭脚本
│ ├── conf
│ │ └── fe.conf # FE配置文件
│ ├── lib
│ │ ├── starrocks-fe.jar # FE jar包
│ │ └── *.jar # FE 依赖的jar包
│ └── webroot
└── udf
部署 FE
FE 的基本配置
FE 的配置文件为 StarRocks-XX-1.0.0/fe/conf/fe.conf, 此处仅列出其中 JVM 配置和元数据目录配置,生产环境可参考 FE 参数配置 对集群进行详细优化配置。
FE 单实例部署
cd StarRocks-XX-1.0.0/fe
第一步: 配置文件 conf/fe.conf:
# 元数据目录
meta_dir = ${STARROCKS_HOME}/meta
# JVM配置
JAVA_OPTS = "-Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$STARROCKS_HOME/log/fe.gc.log"
可以根据 FE 内存大小调整-Xmx8192m,为了避免 GC 建议 16G 以上,StarRocks 的元数据都在内存中保存。
第二步: 创建元数据目录,需要与 fe.conf 中配置路径保持一致:
mkdir -p meta
第三步: 启动 FE 进程:
bin/start_fe.sh --daemon
第四步: 确认启动 FE 启动成功。
- 查看日志 log/fe.log 确认。
2020-03-16 20:32:14,686 INFO 1 [FeServer.start():46] thrift server started.
2020-03-16 20:32:14,696 INFO 1 [NMysqlServer.start():71] Open mysql server success on 9030
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
...
- 如果 FE 启动失败,可能是由于端口号被占用,可修改配置文件 conf/fe.conf 中的端口号 http_port。
- 使用 jps 命令查看 java 进程确认 "StarRocksFe" 存在。
- 使用浏览器访问
FE ip:http_port
(默认 8030),打开 StarRocks 的 WebUI, 用户名为 root, 密码为空。
使用 MySQL 客户端访问 FE
StarRocks 可通过 Mysql 客户端进行连接,使用 Add/Drop 命令添加/删除 fe/be 节点,实现对集群的 扩容/缩容 操作。
第一步: 安装 mysql 客户端,版本建议 5.5+(如果已经安装,可忽略此步):
Ubuntu:sudo apt-get install mysql-client
Centos:sudo yum install mysql-client
第二步: FE 进程启动后,使用 mysql 客户端连接 FE 实例:
mysql -h 127.0.0.1 -P9030 -uroot
注意:这里默认 root 用户密码为空,端口为 fe/conf/fe.conf 中的 query_port 配置项,默认为 9030
第三步: 查看 FE 状态:
mysql> SHOW PROC '/frontends'\G
************************* 1. row ************************
Name: 172.16.139.11_9010_1594200991015
IP: 172.16.139.11
HostName: starrocks-sandbox01
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 861797858
Join: true
Alive: true
ReplayedJournalId: 64
LastHeartbeat: 2020-03-23 20:15:07
IsHelper: true
ErrMsg:
1 row in set (0.03 sec)
Role 为 FOLLOWER 说明这是一个能参与选主的 FE;
IsMaster 为 true,说明该 FE 当前为主节点。
如果 MySQL 客户端连接不成功,请查看 log/fe.warn.log 日志文件,确认问题。由于是初次启动,如果在操作过程中遇到任何意外问题,都可以删除并重新创建 FE 的元数据目录,再从头开始操作。
部署 BE
BE 的基本配置
BE 的配置文件为 StarRocks-XX-1.0.0/be/conf/be.conf,默认配置即可启动集群,生产环境可参考 BE 参数配置 对集群进行详细优化配置。
BE 部署
通过以下命令启动 be 并添加 be 到 StarRocks 集群, 一般至少在三个节点部署 3 个 BE 实例, 每个实例的添加步骤相同。
第一步: 创建数据目录(当前设置为 be.conf 中默认 storage_root_path 配置项路径):
# 进入be的安装目录
cd StarRocks-XX-1.0.0/be
# 创建数据存储目录
mkdir -p storage
第二步: 通过 mysql 客户端添加 BE 节点:
- host 为与 priority_networks 设置相匹配的 IP,port 为 BE 配置文件中的 heartbeat_service_port,默认为 9050。
mysql> ALTER SYSTEM ADD BACKEND "host:port";
如出现错误,需要删除 BE 节点,可通过以下命令将 BE 节点从集群移除,host 和 port 与添加时一致:
mysql> ALTER SYSTEM decommission BACKEND "host:port";
具体参考 扩容缩容。
第三步: 启动 BE:
bin/start_be.sh --daemon
第四步: 查看 BE 状态, 确认 BE 就绪:
mysql> SHOW PROC '/backends'\G
********************* 1. row **********************
BackendId: 10002
Cluster: default_cluster
IP: 172.16.139.11
HostName: starrocks-sandbox01
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2020-03-23 20:19:07
LastHeartbeat: 2020-03-23 20:34:49
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: .000
AvailCapacity: 327.292 GB
TotalCapacity: 450.905 GB
UsedPct: 27.41 %
MaxDiskUsedPct: 27.41 %
ErrMsg:
Version:
1 row in set (0.01 sec)
如果 isAlive 为 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.179.26
此时需要,先用以下命令 drop 掉原来加进去的 be,然后重新以正确的 IP 添加 BE。
MySQL> ALTER SYSTEM DROPP BACKEND "172.16.139.11:9050";
由于是初次启动,如果在操作过程中遇到任何意外问题,都可以删除并重新创建 storage 目录,再从头开始操作。
部署 Broker
配置文件为 apache_hdfs_broker/conf/apache_hdfs_broker.conf
注意:Broker 没有也不需要 priority_networks 参数,Broker 的服务默认绑定在 0.0.0.0 上,只需要在 ADD BROKER 时,填写正确可访问的 Broker IP 即可。
如果有特殊的 hdfs 配置,复制线上的 hdfs-site.xml 到 conf 目录下
启动 broker:
./apache_hdfs_broker/bin/start_broker.sh --daemon
添加 broker 节点到集群中:
MySQL> ALTER SYSTEM ADD BROKER broker1 "172.16.139.11:8000";
查看 broker 状态:
MySQL> SHOW PROC "/brokers"\G
*************************** 1. row ***************************
Name: broker1
IP: 172.16.139.11
Port: 8000
Alive: true
LastStartTime: 2020-04-01 19:08:35
LastUpdateTime: 2020-04-01 19:08:45
ErrMsg:
1 row in set (0.00 sec)
Alive 为 true 代表状态正常。
扩展内容
FE 的高可用集群部署
StarRocks FE 支持 HA 模型部署,保证集群的高可用,详细设置方式请参考 FE 高可用集群部署。
集群升级
StarRocks 支持平滑升级,并支持回滚(1.18.2 及以后的版本无法回滚到其之前的版本),详细操作步骤请参考 集群升级。