第1.3章:StarRocks部署--单机部署
严格来说,StarRocks并没有所谓的“Standalone运行模式”,生产环境下更是不建议进行单实例部署。这里将单机部署整理出来,主要是考虑当用户测试环境受限于机器数量或仅希望验证功能,那么也可以在一台机器上简易部署把StarRocks跑起来。以服务器“starrocks(192.168.110.98)”为例,在进行完“第1.2章:StarRocks部署--部署环境准备”中的准备工作后,我们开
严格来说,StarRocks并没有所谓的“Standalone运行模式”,生产环境下更是不建议进行单实例部署。这里将单机部署整理出来,主要是考虑当用户测试环境受限于机器数量或仅希望验证功能,那么也可以在一台机器上简易部署把StarRocks跑起来。
以服务器“starrocks(192.168.110.98)”为例,在进行完“第1.2章:StarRocks部署--部署环境准备”中的准备工作后,我们开始进行单节点的部署。
为方便演示,我们使用root用户通过XShell工具访问服务器,单节点架构设计如下:
机器节点 | 192.168.116.98 (starrocks) |
部署服务 | 1 FE(Leader) 1 BE 1 Broker mysql-client |
部署目录及数据目录设计如下,后续的部署操作严格按照部署设计进行:
FE | 部署目录:/opt/module/starrocks/fe 日志目录:/opt/module/starrocks/fe/log(默认) 元数据目录:/opt/meta |
BE | 部署目录:/opt/module/starrocks/be 日志目录:/opt/module/starrocks/be/log(默认) 数据目录:/opt/storage |
Broker | 部署目录:/opt/module/starrocks/apache_hdfs_broker |
1 获取二进制产品包
StarRocks的二进制部署包可在官网下载获取:
StarRocks - 新一代极速全场景MPP数据库https://www.starrocks.com/zh-CN/download/community
下面我们以StarRocks-1.19.2.tar.gz为例,将下载好的部署包上传至/opt/software目录下:
[root@starrocks ~]# mkdir /opt/software
[root@starrocks ~]# cd /opt/software/
[root@starrocks software]# ll
total 988752
-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz
2 解压产品包
[root@starrocks software]# tar xvf StarRocks-1.19.2.tar.gz
[root@starrocks software]# ll
total 988752
drwxrwxr-x 6 1007 1007 100 Nov 20 20:29 StarRocks-1.19.2
-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz
StarRocks二进制包解压后目录结构及简要说明见附录一:StarRocks部署包目录树。
3 分发部署文件
[root@starrocks software]# mv /opt/software/StarRocks-1.19.2 /opt/software/starrocks[重命名]
[root@starrocks software]# mv /opt/software/starrocks /opt/module/
[root@starrocks software]# cd /opt/module/starrocks/
[root@starrocks starrocks]# ll
total 0
drwxr-xr-x. 5 1021 1021 40 Nov 22 14:40 apache_hdfs_broker
drwxr-xr-x. 6 1021 1021 51 Nov 22 14:40 be
drwxr-xr-x. 8 1021 1021 83 Nov 22 14:52 fe
drwxr-xr-x. 4 1021 1021 32 Nov 22 14:40 udf
4 部署FE实例
4.1 修改FE配置文件
StarRocks各服务配置文件的默认配置已经足以启动集群,不建议初尝用户修改较多配置。FE的配置文件在测试环境中我们通常只需要关注以下三点:
a、注意默认端口,避免端口冲突,正常情况下不需要修改;
b、绑定IP,避免多网卡情况下服务无法自动匹配到正确的IP。特别注意,绑定ip时,如果不清楚CIDR表示法,可以直接填写完整的ip(不支持别名),例如配置为priority_networks = 192.168.110.98,这样的写法等同于priority_networks = 192.168.110.98/32;
c、设置元数据目录,默认目录为fe/meta,我们建议新建目录并修改配置文件。
根据部署设计,创建元数据存储目录:
[root@starrocks starrocks]# mkdir /opt/meta
针对b和c修改配置文件(带#的为注释,红色字体为新增配置):
[root@starrocks starrocks]# vi /opt/module/starrocks/fe/conf/fe.conf
# store metadata, create it if it is not exist.
# Default value is ${STARROCKS_HOME}/meta
# meta_dir = ${STARROCKS_HOME}/meta
meta_dir = /opt/meta
…………
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.98
修改完成后保存配置。
4.2 启动FE
[root@starrocks starrocks]# cd /opt/module/starrocks/fe/bin/
[root@starrocks bin]# ll
total 16
-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh
-rwxrwxr-x. 1 1021 1021 1411 Nov 22 14:40 show_fe_version.sh
-rwxrwxr-x. 1 1021 1021 3122 Nov 22 14:40 start_fe.sh
-rwxrwxr-x. 1 1021 1021 1749 Nov 22 14:40 stop_fe.sh
[root@starrocks bin]# ./start_fe.sh --daemon
[补充:关闭FE的脚本是stop_fe.sh,命令:./stop_fe.sh]
FE使用Java语言编写,使用jps命令查看java进程,若发现有StarRocksFe进程,即为启动成功:
[root@starrocks bin]# jps
5178 Jps
5164 StarRocksFe
如果进程状态异常可在FE日志目录中查看日志追踪原因,FE的主要日志在fe.log中,所有查询的审计日志在fe.audit.log中。由于是初次启动,如果在操作过程中遇到比较耗时的问题,可以清空FE的元数据目录,再从头开始操作。
4.3 访问FE
使用mysql-client访问FE,FE查询端口默认为9030,自带用户root,默认密码为空:
[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.0
………………
mysql>
4.4 确认FE状态
若mysql-client能够正常访问FE,已说明FE状态正常,查询命令:
mysql> show frontends\G
*************************** 1. row ***************************
Name: 192.168.110.98_9010_1631099997319
IP: 192.168.110.98
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 417341735
Join: true
Alive: true
ReplayedJournalId: 74
LastHeartbeat: 2021-11-25 19:24:04
IsHelper: true
ErrMsg:
1 row in set (0.09 sec)
Alive为true即说明FE节点状态正常。
4.5 添加实例进入集群
我们先将添加BE与Broker实例添加入集群。这里需要说明一下,“启动服务”和“将服务添加入集群”并没有严格的先后顺序,但若先启动服务,在实例未加入集群前,BE的日志中会打印一些提示未加入集群的WARNING信息,例如:Fail to get master client from cache。所以我们可以在FE全部部署完成后,使用mysql-client将集群中其他实例通过SQL添加入集群,然后再逐个部署启动。
添加BE进入集群,端口使用BE的heartbeat_service_port(默认为9050):
mysql> alter system add backend '192.168.110.98:9050';
Query OK, 0 rows affected (0.10 sec)
添加Broker进入集群时需要给Broker设定名称,比如命名为hdfs_broker,端口使用Broker的broker_ipc_port(默认为8000):
mysql> alter system add broker hdfs_broker '192.168.110.98:8000';
Query OK, 0 rows affected (0.03 sec)
若添加实例进入集群时信息输入有误或出现其他异常,我们可以将其删除后重新添加,删除示例:
从集群中删除BE(当前仅有一个BE实例,故删除时可以直接使用dropp命令删除。删除BE为高风险操作,所以这里的删除命令设计为了dropp):
mysql> alter system dropp backend '192.168.110.98:9050';
Query OK, 0 rows affected (0.09 sec)
从集群中删除Broker:
mysql> alter system drop broker hdfs_broker '192.168.110.98:8000';
Query OK, 0 rows affected (0.04 sec)
暂时退出StarRocks:
mysql> exit
Bye
5 部署BE实例
5.1 修改BE配置文件
BE的配置文件,在测试环境通常也是关注如下三点:
a、注意默认端口,避免端口冲突,正常情况下不需要修改;
b、绑定IP,避免多网卡情况下无法自动找到正确的IP(同样,不清楚CIDR就可以直接填写完整的IP);
c、设置数据存储目录,默认目录为be/storage,我们建议新建目录并修改配置文件。
新建BE数据存储目录:
[root@starrocks bin]# mkdir /opt/storage
针对b和c修改配置文件(带#的为注释,红色字体为新增配置):
[root@starrocks bin]# vi /opt/module/starrocks/be/conf/be.conf
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.98
…………
# you also can specify the properties by setting '<property>:<value>', seperate by ','
# property 'medium' has a higher priority than the extension of path
#
# Default value is ${STARROCKS_HOME}/storage, you should create it by hand.
# storage_root_path = ${STARROCKS_HOME}/storage
storage_root_path = /opt/storage
修改完成后保存配置。
5.2 启动BE
[root@starrocks bin]# cd /opt/module/starrocks/be/bin/
[root@starrocks bin]# ll
total 16
-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh
-rwxrwxr-x. 1 1021 1021 644 Nov 22 14:40 show_be_version.sh
-rwxrwxr-x. 1 1021 1021 3377 Nov 22 14:40 start_be.sh
-rwxrwxr-x. 1 1021 1021 1601 Nov 22 14:40 stop_be.sh
[root@starrocks bin]# ./start_be.sh --daemon
[补充:关闭BE脚本为stop_be.sh,命令:./stop_be.sh]
BE使用C++编写,使用ps命令查看进程,若发现有starrocks_be进程,即为启动成功:
[root@starrocks bin]# ps -ef | grep starrocks_be
root 6670 1 1 19:46 pts/0 00:00:00 /opt/module/starrocks/be/lib/starrocks_be
如果进程状态异常可在BE日志目录中查看日志追踪原因,BE的主要日志在be.INFO中,其他的日志在be.out中。
5.3 查看BE状态
仍使用mysql-client访问集群:
[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
………………
mysql>
查询BE状态:
mysql> show backends\G
*************************** 1. row ***************************
BackendId: 10003
Cluster: default_cluster
IP: 192.168.110.98
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2021-11-25 19:46:17
LastHeartbeat: 2021-11-25 19:51:32
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 10
DataUsedCapacity: .000
AvailCapacity: 28.404 GB
TotalCapacity: 37.017 GB
UsedPct: 23.27 %
MaxDiskUsedPct: 23.27 %
ErrMsg:
Version: 1.19.2-b04a782
Status: {"lastSuccessReportTabletsTime":"2021-11-25 19:51:17"}
1 row in set (0.10 sec)
一般Alive为true即为状态正常,若为false,可根据日志排查问题。同样的,因为当前BE为初次启动,如果出现无法快速定位的问题,可以清空storage数据目录,重新启动服务。
退出StarRocks:
mysql> exit
Bye
6 部署Broker
在部署完FE与BE后,StarRocks主要服务已经部署完成。Broker是StarRocks与外部HDFS/对象存储等外部数据对接的中转服务,若不需要可以不部署。Broker本身是无状态的进程,可以随意启停,不影响集群。
6.1 修改Broker配置文件
Broker的配置文件通常不需要修改。与FE实例和BE实例不同,Broker当前没有也不需要priority_networks这个选项。Broker的服务默认绑定在0.0.0.0上,我们只需在前面4.5节 ADD BROKER时,输入正确可访问的BROKER IP即可。
6.2 启动Broker
[root@starrocks bin]# cd /opt/module/starrocks/apache_hdfs_broker/bin/
[root@starrocks bin]# ll
total 8
-rwxrwxr-x. 1 1021 1021 2616 Sep 7 14:40 start_broker.sh
-rwxrwxr-x. 1 1021 1021 1602 Sep 7 14:40 stop_broker.sh
[root@starrocks bin]# ./start_broker.sh --daemon
[补充:关闭Broker脚本为stop_broker.sh,命令:./stop_broker.sh]
查看java进程,若发现有BrokerBootstrap即为启动成功:
[root@starrocks bin]# jps | grep BrokerBootstrap
7594 BrokerBootstrap
Broker日志在apache_hdfs_broker.log中,如果进程状态异常可查看日志追踪原因。
6.3 查看Broker状态
使用mysql-client访问集群:
[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.0 StarRocks version 1.18.2
……………………
mysql>
查看Broker状态:
mysql> show broker\G
*************************** 1. row ***************************
Name: hdfs_broker
IP: 192.168.110.98
Port: 8000
Alive: true
LastStartTime: 2021-11-25 20:19:56
LastUpdateTime: 2021-11-25 20:21:31
ErrMsg:
1 row in set (0.01 sec)
Alive为true即为状态正常,如果状态异常可以根据日志定位问题。
7 简单使用示例
7.1 修改root用户密码
例如修改root密码也为root:
mysql> set password=password('root');
Query OK, 0 rows affected (0.02 sec)
7.2 建库建表
StarRocks的副本数是不能大于BE节点数的,由于当前仅有一个BE节点,我们建表时务必注意指定数据为单副本,示例如下:
新建一个starrocks数据库:
mysql> create database starrocks;
Query OK, 0 rows affected (0.01 sec)
mysql> use starrocks;
Database changed
新建一个customer表,无分区,按c_custkey分桶,指定数据存储为1副本:
mysql>CREATE TABLE customer (
c_custkey INT,
c_name VARCHAR(26),
c_city VARCHAR(11)
)
DUPLICATE KEY(c_custkey)
DISTRIBUTED BY HASH (c_custkey) BUCKETS 10
PROPERTIES (
"replication_num"="1");
Query OK, 0 rows affected (0.05 sec)
7.3 插入测试数据
mysql> insert into customer values(1,"Jack","Beijing"),(2,"Loong","Xian"),(3,"Bob","London");
Query OK, 3 rows affected (0.07 sec)
{'label':'insert_7ddb8f57-10a2-11ec-bcd0-525400d116d1', 'status':'VISIBLE', 'txnId':'3'}
7.4 简单查询
mysql> select count(1) from customer;
+----------------+
| count(1) |
+----------------+
| 3 |
+----------------+
8 使用图形化工具
StarRocks兼容MySQL协议,在使用图形化工具连接时,我们可将其视为MySQL直接连接。以SQLyog为例,输入服务器IP、用户名、密码和端口(查询端口默认为9030),即可连接:
9 Docker部署
若单台服务器内存、磁盘等资源充足,也可以使用Docker在单服务器节点上对FE/BE进行多实例的部署,但考虑到资源竞争问题,依旧不推荐在生产环境中使用。
除在Docker容器中跑StarRocks外,我们可以考虑使用Docker将完成第1.2章部署准备工作后的某个容器保存为镜像,在后续集群扩容时快速拉取使用。
容器化部署及使用这里先不展开描述,后续其他文档会详述基于Docker的单节点StarRocks一键部署。
附录一:StarRocks部署包目录树[部分]
StarRocks-1.19.2
├── apache_hdfs_broker # Broker目录
│ ├── bin
│ │ ├── start_broker.sh # Broker启动脚本
│ │ └── stop_broker.sh # Broker关闭脚本
│ ├── conf
│ │ ├── apache_hdfs_broker.conf # Broker配置文件
│ │ ├── hdfs-site.xml
│ │ └── log4j.properties
│ └── lib
│ └── *.jar # Broker依赖的jar包
├── be # BE实例目录
│ ├── bin
│ │ ├── common.sh
│ │ ├── show_be_version.sh # BE版本查看
│ │ ├── start_be.sh # BE启动脚本
│ │ └── stop_be.sh # BE关闭脚本
│ ├── conf
│ │ ├── be.conf # BE配置文件
│ │ └── hadoop_env.sh
│ ├── lib
│ │ ├── meta_tool # Tablet元数据离线管理工具 [1.19版本已合并入starrocks_be]
│ │ └── starrocks_be # BE可执行文件(小版本升级时替换即可)
│ └── www # BE Web页面文件
├── fe # FE实例目录
│ ├── bin
│ │ ├── common.sh
│ │ ├── show_fe_version.sh # FE版本查看
│ │ ├── start_fe.sh # FE启动脚本
│ │ └── stop_fe.sh # FE关闭脚本
│ ├── conf
│ │ ├── fe.conf # FE配置文件
│ │ └── hadoop_env.sh
│ ├── lib
│ │ ├── starrocks-fe.jar # FE jar包(小版本升级时替换即可)
│ │ └── *.jar # FE依赖的jar包
│ ├── log
│ │ └── *.log
│ └── webroot # FE Web页面文件
└── udf # 用户自定义函数目录 [重构中,目前不建议使用]
├── include
│ ├── uda_test_harness.h
│ └── udf.h # UDF框架头文件
└── lib
└── libStarRocksUdf.a # UDF框架静态库文件
更多推荐
所有评论(0)