搭建简易版StartRocks数据库
Posted 刘元涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建简易版StartRocks数据库相关的知识,希望对你有一定的参考价值。
获取二进制产品包
https://starrocks.com/zh-CN/download/request-download/1
tar -xzvf StarRocks-1.8.2.tar.gz
重命名:mv StarRocks-1.8.2/ start_rocks1.8.2
目录内容如下:
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
环境准备
准备三台物理机, 需要以下环境支持:
Linux (Centos 7+)
Java 1.8+
CPU需要支持AVX2指令集, cat /proc/cpuinfo |grep avx2
有结果输出表明CPU支持,如果没有支持,建议更换机器,StarRocks使用向量化技术需要一定的指令集支持才能发挥效果。
FE单实例部署
第一步: 定制配置文件conf/fe.conf
:
LOG_DIR = /data_disk/star_rocks/log
DATE = "$(date +%Y%m%d-%H%M%S)"
# 可以根据FE内存大小调整 -Xmx4096m,为了避免GC建议16G以上,StarRocks的元数据都在内存中保存。
JAVA_OPTS="-Xmx4096m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkE nabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:/data_disk/star_rocks/log/fe.gc.log.$DATE"
sys_log_level = INFO
meta_dir = /data_disk/star_rocks/doris-meta
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
第二步: 创建元数据目录:
mkdir -p /data_disk/star_rocks/doris-meta
mkdir -p /data_disk/star_rocks/log
第三步: 启动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
...
启动成功后,使用浏览器访问8030
端口, 打开StarRocks的WebUI, 用户名为root
, 密码为空.:
如果FE启动失败,可能是由于端口号被占用,修改配置文件conf/fe.conf
中的端口号http_port。
使用jps命令查看java进程确认"StarRocksFe"存在.
第一步: 使用mysql客户端连接:
mysql -h 127.0.0.1 -P9030 -uroot
注意:这里默认root
用户密码为空,端口为fe/conf/fe.conf
中的query_port
配置项,默认为9030
。
第二步: 查看FE状态:
Role为FOLLOWER
说明这是一个能参与选主的FE;IsMaster
为true
,说明该FE当前为主节点。
如果MySQL客户端连接不成功,请查看log/fe.warn.log
日志文件,确认问题。
由于是初次启动,如果在操作过程中遇到任何意外问题,都可以删除并重新创建FE的元数据目录,再从头开始操作。
部署BE
BE的基本配置
BE的配置文件为star_rocks1.8.2/be/conf/be.conf
, 默认配置已经足以启动集群, 不建议初尝用户修改配置。
BE部署
用户可使用下面命令添加BE到StarRocks集群, 一般至少部署3个BE实例, 每个实例的添加步骤相同.
cd star_rocks1.8.2/be
第一步: 创建数据目录:
mkdir -p /data_disk/star_rocks/storage
第二步: 通过mysql客户端分别添加BE的3个节点(101
,102
,103
):
mysql> ALTER SYSTEM ADD BACKEND "192.168.153.101:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.153.102:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.153.103:9050";
这里IP地址为和priority_networks
设置匹配的IP,port默认为9050
如出现错误,需要删除BE节点,应用下列命令:
alter system decommission backend "be_host:be_heartbeat_service_port";
alter system dropp backend "be_host:be_heartbeat_service_port";
第三步: 启动BE:
bin/start_be.sh --daemon
如果提示:
bin/start_be.sh: line 109: ulimit: open files: cannot modify limit: Operation not permitted
需要修改系统文件限制并重启机器。
[lytfly@node102 be]$ sudo vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
第四步: 查看BE状态, 确认BE就绪:
mysql> SHOW PROC '/backends'\\G;
*************************** 1. row ***************************
BackendId: 10002
Cluster: default_cluster
IP: 192.168.153.101
HostName: node101
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2021-10-08 03:09:11
LastHeartbeat: 2021-10-08 03:13:26
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 10
DataUsedCapacity: .000
AvailCapacity: 7.376 GB
TotalCapacity: 16.986 GB
UsedPct: 56.58 %
MaxDiskUsedPct: 56.58 %
ErrMsg:
Version: 1.18.2-7b65727
Status: {"lastSuccessReportTabletsTime":"2021-10-08 03:13:12"}
*************************** 2. row ***************************
BackendId: 11002
Cluster: default_cluster
IP: 192.168.153.102
HostName: node102
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2021-10-08 03:13:06
LastHeartbeat: 2021-10-08 03:13:26
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 5
DataUsedCapacity: .000
AvailCapacity: 11.728 GB
TotalCapacity: 16.986 GB
UsedPct: 30.96 %
MaxDiskUsedPct: 30.96 %
ErrMsg:
Version: 1.18.2-7b65727
Status: {"lastSuccessReportTabletsTime":"2021-10-08 03:13:07"}
*************************** 3. row ***************************
BackendId: 11003
Cluster: default_cluster
IP: 192.168.153.103
HostName: node103
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2021-10-08 03:13:26
LastHeartbeat: 2021-10-08 03:13:26
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: .000
AvailCapacity: 11.725 GB
TotalCapacity: 16.986 GB
UsedPct: 30.98 %
MaxDiskUsedPct: 30.98 %
ErrMsg:
Version: 1.18.2-7b65727
Status: {"lastSuccessReportTabletsTime":"2021-10-08 03:13:27"}
3 rows in set (0.00 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 "192.168.153.101:9050";
由于是初次启动,如果在操作过程中遇到任何意外问题,都可以删除并重新创建storage目录,再从头开始操作。
以上是关于搭建简易版StartRocks数据库的主要内容,如果未能解决你的问题,请参考以下文章