StarRocks集群部署
【摘要】 二、 StarRocks集群部署2.1 环境准备2.1.1 硬件要求2.1.1.1 CPUStarRocks依靠AVX2指令集充分发挥其矢量化能力。因此,在生产环境中,强烈建议您将StarRocks部署于x86架构CPU的服务器上。#可以在终端中(BE节点)运行以下命令来检查 CPU 是否支持 AVX2 指令集cat /proc/cpuinfo |grep avx22.1.1.2 内存S...
二、 StarRocks集群部署
2.1 环境准备
2.1.1 硬件要求
2.1.1.1 CPU
StarRocks依靠AVX2指令集充分发挥其矢量化能力。因此,在生产环境中,强烈建议您将StarRocks部署于x86架构CPU的服务器上。
#可以在终端中(BE节点)运行以下命令来检查 CPU 是否支持 AVX2 指令集
cat /proc/cpuinfo |grep avx2
2.1.1.2 内存
StarRocks对内存没有特定要求。关于推荐的内存大小,请参考规划StarRocks集群- CPU 和内存。
https://docs.starrocks.io/zh-cn/latest/deployment/plan_cluster#cpu-%E5%92%8C%E5%86%85%E5%AD%98
1. FE节点建议配置8核或以上CPU,16GB或以上内存;
2. BE节点建议配置16核或以上CPU,64GB或以上内存;
2.1.1.3 存储
1. StarRocks支持HDD和SSD作为存储介质;
2. 在实时数据分析场景、以及涉及大量数据扫描或随机磁盘访问的场景下,强烈建议您选择SSD作为存储介质;
3. 在涉及主键模型持久化索引的场景中,您必须使用SSD作为存储介质;
2.1.1.4 网络
建议使用万兆网络连接(10 Gigabit Ethernet,简称10 GE)确保StarRocks集群内数据能够跨节点高效传输。
1.4.1 操作系统
StarRocks支持在CentOS 7.9和Ubuntu 22.04 上部署
预研环境用Linux服务器部署,查看如下:
1.uname -a 命令查看Linux内核版本,Linux kernel 3.10 以上;
2.cat /etc/redhat-release 命令查看Linux系统版本,CentOs7以上;
1.4.2 软件要求
必须在服务器上安装JDK 1.8.0以上运行StarRocks。
1.安装java(部署集群全部节点)
2.安装mysql客户端(在SR集群任意一节点安装)
说明:StarRocks不支持JRE。
2.1.4 系统环境
1.关闭交换区,消除交换内存到虚拟内存时对性能的扰动
2.使用Overcommit,将cat /proc/sys/vm/overcommit_memory设置为1
3.修改用户最大进程数
4.关闭防火墙
5.禁用transparent huge pages(THP)
6.关闭SELINUX
7.TCP连接缓冲队列设置
8.高并发配置
9.集群时钟需保持同步
10.用户需要有设置ulimit -n权限
2.2 集群部署规划
基于开源的StarRocks社区版,版本是3.0.2来进行集群的安装配置。
StarRocks集群的部署模式,生产环境建议采用FE与BE分离的模式。
预研环境资源有限情况下,采用FE和BE混合部署方式。
实例名称 配置要求
FE 16核32GB万兆网卡及以上(并发不高时可与BE混布)
BE 16核64GB万兆网卡及以上,CPU必需支持AVX2指令集,磁盘建议SSD或NVME。
Broker 无特别要求,通常与BE节点混布,与BE节点数量相同。
使用官方工具stargo进行快速部署
1、 生产环境中,推荐将 FE/BE 数据目录(meta 或 storage)和日志目录分盘存储,来保证IO及存储空间互不影响。
2、 建议BE独立部署,BE混合部署则 MEM_LIMIT=(机器内存-其他服务占用内存-2G(系统预留))
3、 Broker是一个独立的无状态进程,封装了文件系统接口,为StarRocks提供读取远端存储系统中文件的能力。
基于Hadoop生态的传统数仓目前仍拥有非常大的用户群体,为此StarRocks加入了Broker Load导入方式,让我们可以方便的从HDFS类的外部存储系统(Apache HDFS、阿里OSS、腾讯COS、百度BOS、Amazon S3等)中导入数据,高效的完成数据迁移工作。
更多详细描述:https://blog.csdn.net/ult_me/article/details/123073400
提示:starRocks V2.5+以上版本已实现Broker,无需单独再部署。
2.2.1 基础环境和软件
软件 版本
操作系统 CentOS 7.9
StarRocks 3.0.2
JDK 1.8.0_321
MySQL Client mysql-5.7.30
StarGo v2.1/v2.3
2.2.2 集群主机规划
测试环境规划
StarRocks集群走存算一体模式,FE和BE分开部署,共6台服务器。
IP地址 主机名称 角色 CPU 内存 系统盘(gb) 数据盘(gb) 备注信息
172.21.235.202 evoc-sr1 FE 2 4 100 200 FE Leader
StarGo集群部署工具放在此节点
172.21.235.213 evoc-sr2 FE 2 4 100 200 FE FOLLOWER
172.21.235.227 evoc-sr3 FE 2 4 100 200 FE FOLLOWER
172.21.235.212 evoc-sr4 BE 2 4 100 1000 BE
172.21.235.217 evoc-sr5 BE 2 4 100 1000 BE
172.21.235.224 evoc-sr6 BE 2 8 100 1000 BE
预研环境规划
StarRocks集群走存算一体模式,FE和BE混合部署,共3台服务器。
IP地址 主机名称 角色 备注信息
172.21.228.85 evoc-slave4 FE/BE FE FOLLOWER/BE
StarGov2.1集群部署工具放在此节点
172.21.228.86 evoc-slave5 FE/BE FE FOLLOWER/BE
172.21.228.87 evoc-slave6 FE/BE FE FOLLOWER/BE
2.2.3 集群主机目录规划
目录项 目录路径
JDK目录 /usr/local/share/jdk1.8.0_202
StarRocks程序目录 /usr/local/share/StarRocks-3.0.2
StarRocks 数据根目录 /data/starrocks/storage
StarRocks FE元数据目录 /data/starrocks/storage/fe/meta
StarRocks BE数据存储目录 /data/starrocks/storage/be
2.2.4 端口列表
实例名称 端口名称 默认端口 通讯方向 说明
FE http_port 8030 FE <- -> 用户 FE上的http server端口
FE rpc_port 9020 FE <- -> FE
BE <- -> FE FE上的thrift server端口
FE query_port 9030 FE <- -> 用户 FE上的mysql server端口
FE edit_log_port 9010 FE <- -> FE FE上的bdbje之间通信端口
BE be_port 9060 FE <- -> BE BE上thrift server的端口,用于接收来自FE的请求。
BE webserver_port 8040 -> 8045 BE <- -> BE BE上的http server的端口
BE heartbeat_service_port 9050 FE <- -> BE BE上心跳服务端口(thrift),用于接收来自FE的心跳。
BE brpc_port 8060 FE <- -> BE
BE <- -> BE BE上的brpc端口,用于BE之间通讯。
Broker broker_ipc_port 8000 FE <- -> Broker
BE <- -> Broker Broker上的thrift server,用于接收请求。
提示:BE webserver_port默认端口8040修改为8045,因为是部署在Hadoop节点上,有端口冲突。
2.3 集群审计日志采集
通过官方Audit Loader 插件将SR审计日志同步到 SR 库表,审计日志存储在本地文件 fe/log/fe.audit.log 。管理审计日志详情查看4.6章节。
2.4 使用StarGo集群部署工具
StarGo是由社区打造的一款用于管理多个StarRocks集群的命令行工具,通过StarGo可以便捷的进行多套集群的部署、查看、启停、调参、升级、降级、扩缩容以及迁入/移出等操作,详细的介绍和操作参见操作文档。
2.4.1 文件说明
StarGo当前版本的安装包为stargo-v2.1.tar.gz,解压进入目录后将看到如下6个文件:
2.4.1.1 deploy-template.yaml
deploy-template.yaml是集群配置信息的拓扑文件模板,我们可根据该模板来编辑目标集群的yaml配置文件,具体的参数说明见详细说明。
2.4.1.2 env_check.sh
env_check.sh是配合StarGo进行部署前环境检查的shell脚本,用来检查当前服务器的CPU、系统内核、端口占用、重要系统参数等是否符合StarRocks的部署要求,对检查通过的项打印绿色的success,未通过的项会以红色字体给出提示及调参说明。具体的检测项说明见附录。
该脚本需要手动的在集群中的每台服务器中执行。stargo主程序在运行时也会对集群所有的节点进行数项关键参数的校验,但在部署前仍然建议手动运行检测脚本,并根据提示对集群进行完整的调参。
注意:检测脚本对检测异常项给出的调参语句大多为临时调整命令(即执行后立刻生效,重启服务器后会失效),永久修改的方法可参考官方文档。
2.4.1.3 jdk8u362-b09.tar.gz
jdk8u362-b09.tar.gz是StarGo内置的Eclipse Temurin OpenJDK,该JDK经过了社区多轮的兼容性测试验证。StarGo会为部署的每个实例分发一份JDK并在其启动脚本中添加程序级的环境变量。
若希望集群使用Oracle JDK,可在部署集群前将Oracle官方jdk-8u201-linux-x64.tar.gz放入StarGo目录(仅额外支持了这一个版本),当目录内只存在Oracle JDK或同时存在上述两个jdk包时,StarGo优先使用Oracle JDK。
2.4.1.4 README.md
README.md是随包附赠的使用说明文档,也即本文档。该文档会随StarGo的迭代来补充或删改内容,使用某个版本时以内置的说明文档为准。
2.4.1.5 repo.yaml
repo.yaml是StarGo获取本地部署包的配置文件。在我们进行部署、升级、降级或扩容操作时我们需要在其中配置目标版本的部署包路径及包名,示例如下:
#该配置文件配置部署、升级/降级或扩容时需用的StarRocks二进制包路径及包名
##部署包所在文件夹路径,路径末尾的"/"加或者不加逻辑上都不影响
sr_path: /opt/software/
## 部署包包名
sr_name: StarRocks-3.0.1.tar.gz
StarRocks x86架构下的部署包可从"镜舟科技官网"或"StarRocks 官网"获取(ARM 架构下的安装包需要自行手动编译):
https://www.mirrorship.cn/zh-CN/download/community(推荐)
https://www.starrocks.io/download/community
在官网下载页中展示有安装包对应的MD5信息,推荐在下载完成后核对安装包的MD5信息,以确认下载的安装包未出现文件损坏。
执行校验命令:md5sum StarRocks-3.0.2.tar.gz
2.4.1.6 Stargo
stargo文件是StarGo的核心二进制文件,无需安装,没有特殊依赖,开箱即用,使用前确认文件拥有可执行权限即可。
stargo程序只需在集群内或者集群外的任意一个节点上放置,若后续需要对stargo升级,可直接替换该文件为新版本文件(如果发现内置的jdk版本不一致,也需要将jdk替换为新版的)。
通过./stargo version命令可以查看stargo的版本信息,执行./stargo help命令可查看stargo支持的所有命令及说明:
./stargo version
2.4.2 集群环境准备
节点IP 主机名称 部署服务 用户 版本 说明
172.21.228.85 evoc-slave4(Leader) FE
BE
Broker
MysqlClient root StarRocks-3.0.2 Broker
名称均为hdfs_broker
172.21.228.86 evoc-slave5(Observer) FE
BE
Broker root
172.21.228.87 evoc-slave6(FOLLOWER) FE
BE
Broker root
配置Broker:若不需要部署Broker,可删除下方内容。Broker封装了文件接口,主要用于和Hadoop及对象存储等的通信,默认的Broker名称均为:hdfs_broker。
StarRocks v2.5+以上版本中,BE已经集成了文件接口,通常情况下不再需要部署Broker。
配置FE的角色:可选择配置FOLLOWER或OBSERVER,不配置该项时默认为FOLLOWER。StarRocks FE要求FOLLOWER角色的节点存活半数以上才能够选主,所以建议集群中FOLLOWER配置为奇数个。OBSERVER节点不会参与选主,其作用仅为拓展FE读的能力,所以对个数无要求,可以为0个或者任意个。
2.4.2.1 挂载数据盘
lsblk
fdisk /dev/vdb
#分区
输入:n
然后输入3次换行符
#创建文件系统
mkfs.xfs /dev/vdb1
#创建挂载目录
mkdir /starrocks-data
blkid
记录vdb1的uuid:/dev/vdb1: UUID="7861d6b7-9ab8-45fd-9fa4-3c0616db6590" TYPE="xfs" PARTUUID="26f3fd1b-d0f4-405c-932e-609c1dc6818f"
编辑文件:vim /etc/fstab
说明:新增一条UUID信息
#执行挂载命令
mount -a
df -h
#重新连接服务器再次输入命令查看
reboot
df –h
2.4.2.2 挂载错目录撤回重新挂载操作
vim /etc/fstab
说明:fstab文件目录忘记改,将数据盘指定到/boot系统目录,挂载错了。
#撤回
mount
umount /dev/vdb1
查看:mount |grep boot
撤回挂载目录:umount /dev/vdb1
验证:df -h
说明:/boot目录盘已恢复原大小。
#重新挂载
vim /etc/fstab
mount -a
查看:df -h
说明:重新挂载成功。
2.4.2.3 基于LVM方式挂载数据盘
lsblk
yum install lvm2
pvcreate /dev/vdb
pvs
vgcreate vgdata /dev/vdb
vgs
ls /
lvcreate -l +100%free -n lvdata vgdata
lvs
格式化数据盘:mkfs.xfs /dev/mapper/vgdata-lvdata
lsblk
创建挂载目录:mkdir /starrocks-data
blkid
复制UUID:f0ba280a-36ef-4c6d-9f74-134c7915063c
vim /etc/fstab
自动挂载目录(推荐):mount -a
手动挂载目录:mount -t xfs /dev/mapper/vgdata-lvdata /starrocks-data/
查看:df -h
2.4.2.3.1 挂载步骤总结
安装逻辑卷管理工具:yum install lvm2
列出系统中的块设备信息,包括磁盘、分区和挂载点等:lsblk
创建pv:pvcreate /dev/bdb
查看:pvs
创建vg:vgcreate vgdata /dev/vdb
查看:vgs
创建lv:lvcreate -l +100%free -n lvdata vgdata
查看:lvs
格式化:mkfs.xfs /dev/mapper/vgdata-lvdata
创建目录:mkdir /starrocks-data
查看:ls /
查看块设备标识信息:blkid
/dev/mapper/vgdata-lvdata: UUID="0f105c51-1280-4511-ab4f-36c57bbcc53c" TYPE="xfs"
vim /etc/fstab
在文件最后一行新增UUID信息:UUID=0f105c51-1280-4511-ab4f-36c57bbcc53c /starrocks-data xfs defaults 0 0
执行自动挂载命令:mount -a
查看文件系统磁盘空间:df -h
2.4.3 佛山预研环境StarRocks集群部署实操
2.4.3.1 文件准备
将StarGo和StarRocks安装包上传到服务器,放至/usr/local/apps目录,上传完成后解压stargo,进入解压后的目录。
进入放置目录:cd /usr/local/apps/
执行解压缩命令:tar -zxvf stargo-v2.1.tar.gz
cd stargo-v2.1/
2.4.3.2 环境检测与调优
执行环境检测脚本,并对检测异常项按照脚本给出的提示进行调整,保证脚本中除"内存"项外的其他检查项均提示success。
执行命令:./env_check.sh
检查发现若干问题
1> 检查项1:使用swap分区可能影响查询性能,建议配置为不优先使用,临时配置命令:echo 0 | sudo tee /proc/sys/vm/swappiness
#永久修改
vim /etc/sysctl.conf
vm.swappiness = 10 (暂不调整)
2> 内核参数检查
检查项1:推荐调整overcommit_memory=1,以允许内核分配所有的物理内存来保障程序稳定性,临时调整命令:echo 1 | sudo tee /proc/sys/vm/overcommit_memory
#永久修改
vim /etc/sysctl.conf
vm.overcommit_memory=1
检查项2:推荐调整max_map_count=262144,来调大进程可拥有的内存映射区域的最大数量以保障程序稳定性,临时调整命令:echo 262144 | sudo tee /proc/sys/vm/max_map_count
#永久修改
vim /etc/sysctl.conf
vm.max_map_count=262144
保存,然后sysctl -p 使配置文件生效。(暂不调整)
3> BE需用的默认端口被占用,请检查或在部署时调整端口,检查命令:ss -antpl | grep -E '9060|9050|8040|8060|9070'
发现8040端口被占用,后面在配置文件时修改webserver_port端口为:8045
4> TCP参数检查
推荐调整tcp_abort_on_overflow参数值为1,临时调整命令:echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
暂不调整
5> 时钟同步检查
未检测到ntp命令,StarRocks各FE节点间的时钟差大于5秒将无法启动,建议在部署前使用ntp对各节点进行时钟同步。
#有配置其它同步服务(虚拟化分配服务器时已配置)
查看同步状态:chronyc sourcestats
时间同步正常。
2.4.3.3 SSH免密
StarGo是通过SSH的方式进行文件分发和命令执行的,因此即便单机下是"本机到本机",仍然需要进行免密的配置(同理,若是部署多台服务器的集群,我们也需要打通stargo所在节点到"所有需要分发文件的节点"的SSH免密),例如:
ssh-keygen -t rsa
ssh-copy-id root@192.168.125.xx
提示:SSH免密在之前部署hadoop集群时已操作过,无需再操作。
2.4.3.4 目录创建
在部署前我们需要进行简单的目录规划,StarGo需要我们手动创建好"外层"的文件夹,并保证文件夹为空(主要是要求其中不能有与即将部署的服务名相同的目录,以避免误覆盖写掉之前的集群)。
例如,我们将程序部署在/opt/starrocks目录下,将数据保存在/data/starrocks目录中,那么我们就需要手动创建这两个目录:
mkdir /opt/starrocks
mkdir -p /data/starrocks
注意:若使用的为非root用户,在创建文件夹后,还应注意进行目录的授权。
2.4.3.5 编写YAML文件
部署程序会需要我们配置程序的部署目录、数据目录、IP、端口、参数等等,stargo通过解析我们编写的YAML文件来获取这些信息。
以下有关于YAML中完整的参数介绍,我们只需依据模板文件deploy-template.yaml 修改我们的节点配置文件。
2.4.3.5.1 YAML文件说明
在部署集群前,我们可参考deploy-template.yaml模板文件,按照规范的YAML语法来编辑目标集群的拓扑文件,StarGo会解析该文件获取StarRocks集群部署时需要的IP、端口、文件路径以及参数配置。
cd /usr/local/apps/stargo-v2.1
vim deploy-dev.yaml
global:
user: root
ssh_port: 22
fe_servers:
- host: 172.21.228.85
ssh_port: 22
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: /opt/starrocks/fe
meta_dir: /data/starrocks/fe/meta
log_dir: /data/starrocks/fe/log
priority_networks: 172.21.228.85
role: FOLLOWER
config:
sys_log_level: "INFO"
- host: 172.21.228.86
ssh_port: 22
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: /opt/starrocks/fe
meta_dir: /data/starrocks/fe/meta
log_dir: /data/starrocks/fe/log
priority_networks: 172.21.228.86
role: FOLLOWER
config:
sys_log_level: "INFO"
- host: 172.21.228.87
ssh_port: 22
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: /opt/starrocks/fe
meta_dir: /data/starrocks/fe/meta
log_dir: /data/starrocks/fe/log
priority_networks: 172.21.228.87
role: FOLLOWER
config:
sys_log_level: "INFO"
be_servers:
- host: 172.21.228.85
ssh_port: 22
be_port: 9060
webserver_port: 8045
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /data/starrocks/be/storage
log_dir: /data/starrocks/be/log
priority_networks: 172.21.228.85
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 80%
- host: 172.21.228.86
ssh_port: 22
be_port: 9060
webserver_port: 8045
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /data/starrocks/be/storage
log_dir: /data/starrocks/be/log
priority_networks: 172.21.228.86
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 80%
- host: 172.21.228.87
ssh_port: 22
be_port: 9060
webserver_port: 8045
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /data/starrocks/be/storage
log_dir: /data/starrocks/be/log
priority_networks: 172.21.228.87
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 80%
##若不需要部署Broker,可删除下方配置。2.5版本后通常可不部署。
#broker_servers:
# - host: 192.168.110.101
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
# config:
# sys_log_level: "INFO"
# - host: 192.168.110.102
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
# config:
# sys_log_level: "INFO"
# - host: 192.168.110.103
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
##若不需要部署CN,可删除下方配置。本地部署时通常可不部署。注意:CN不能与BE部署同一节点。
#cn_servers:
# - host: 192.168.110.104
# ssh_port: 22
# thrift_port: 9060
# webserver_port: 8045
# heartbeat_service_port: 9050
# brpc_port: 8060
# deploy_dir : /opt/starrocks/cn
# log_dir: /data/starrocks/cn/log
# priority_networks: 192.168.110.104
# config:
# sys_log_level: INFO
2.4.3.6 指定安装包路径
StarGo当前需要使用本地的StarRocks安装包(即StarRocks安装包需要放在StarGo程序所在的服务器上),我们通过repo.yaml文件来配置对应的路径与包名,例如本次我们使用StarRocks-3.0.2版本,安装包路径在/usr/local/apps下:
编辑文件:vim repo.yaml
#该配置文件配置部署、升级/降级或扩容时需用的StarRocks二进制包路径及包名。
sr_path: /usr/local/apps
sr_name: StarRocks-3.0.2.tar.gz
2.4.3.7 部署Starrocks
StarGo部署的过程中不会使用外网,会使用配置的安装包离线部署,我们指定集群名称为sr-c1,版本为我们指定的3.0.2 ,配置文件为上文的deploy-dev.yaml。
2.4.3.7.1 部署命令
./stargo cluster deploy sr-c1 v3.0.2 deploy-dev.yaml
显示信息:必改参数项设置值不符合要求,需重新修改参数值。
[20230630-103044 ERROR] Please use bellowing promotion to fix the issue for FE servers:
Detect FE swap partition value not equal to 0:
[Host = 172.21.228.87, User = root] Please execute the following two lines of commands:
echo vm.swappiness=0 >> /etc/sysctl.conf
sysctl -p
[Host = 172.21.228.86, User = root] Please execute the following two lines of commands:
echo vm.swappiness=0 >> /etc/sysctl.conf
sysctl -p
Detect FE kernel parameter: overcommit_memory not equal to 1 or max_map_count not enough:
[Host = 172.21.228.87, User = root] Please execute the following two lines of commands:
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
[Host = 172.21.228.85, User = root] Please execute the following two lines of commands:
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
[Host = 172.21.228.86, User = root] Please execute the following two lines of commands:
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
[Host = 172.21.228.85, User = root] Please execute the following two lines of commands:
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
[Host = 172.21.228.86, User = root] Please execute the following two lines of commands:
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
[Host = 172.21.228.87, User = root] Please execute the following two lines of commands:
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
解决办法:根据以上报错提示,修改参数值。
1.修改完三台部署节点的参数。
2.删除上一次部署失败时生成的部分文件。
主要删除/data/starrocks和/opt/starrocks目录下的所有文件
rm –rf *
3.重新部署集群,执行部署命令。
执行命令:./stargo cluster deploy sr-c1 v3.0.2 deploy-dev.yaml
安装过程打印日志显示,FE安装启动成功,BE安装成功,启动失败。
2.4.3.7.2 查看集群信息和集群状态
查看集群信息
./stargo cluster display sr-c1
查看集群状态
./stargo cluster status sr-c1
BE启动状态显示:不成功
问题查找
#查找日志
cd/data/starrocks/be/log
tailf -n 100 be.INFO.log.20230630-111903
#报错信息Error
E0630 11:19:26.095201 32159 starrocks_be.cpp:73] Internal Error:Failed to listen port. port: 8040, error: Address already in use
E0630 11:19:26.095297 32159 starrocks_be.cpp:74] StarRocks Be http service did not start correctly, exiting
提示信息:监听8040端口已被占用。
解决办法:
在部署准备阶段,已检测过端口占用情况,当时检测出了8040端口被占用,并在后面配置YARM文件参数中,将端口参数值8040修改成了8045。那为什么端口号修改了之后,还是报8040已占用呢,到底哪里还存在8040端口配置?
随后在Starrocks社群发出询问,然后查看/opt/starrocks/be/conf目录下的be.conf文件,
发现有个配置参数值是be_http_port = 8040,需将3台部署节点配置文件的参数值修改为8045即可。
提示:/opt/starrocks/目录下的所有文件,皆为执行部署命令后自动生成的文件,安装过程是根据YARM配置文件信息,分发到各节点安装创建fe、be目录文件。在生成be.conf文件时,be_http_port = 8040参数值生成错误,反馈给starrocks社区组织后,经确认属于bug, starrocks社区组织知晓。
重启starrocks集群
重启命令:./stargo cluster restart sr-c1
#再次查看集群信息和集群状态
启动FE和BE,状态显示已连接。
#查看FE、BE进程
StarGo会将所有操作的日志打印在控制台上,部署过程中不需要我们进行任何手动操作,等待部署完成后检查服务,确认 FE、BE、Broker的进程均存在即可。
ps -ef | egrep 'StarRocksFE|starrocks_be|BrokerBootstrap'
显示进程正常。
2.4.3.7.3 部署失败如何处理
如果在初次部署时遇到任何意外问题,将3台部署节点上已经生成的FE和BE目录彻底删除,后重新开始执行部署命令。
2.4.3.7.4 访问集群
StarRocks部署完成后,默认启用root用户,密码为空,使用mysql-client访问FE的IP及其9030查询端口,即可连接到StarRocks进行愉快的后续操作:
mysql -h172.21.228.85 -uroot -P9030
StarRocks兼容MySQL语法,我们也可以使用DBeaver、SQLYog、DataGrip、Navicat等可视化工具,将StarRocks当作MySQL(端口使用 9030)来进行连接和查询。
注意:
1> 单机部署时集群中只有一个BE,所以在建表时需注意在表属性中设置为单副本("replication_num"= "1"),具体参考官方文档,这里不再详述。
2> 当修改了StarRocks集群的root密码,我们也需要修改StarGo的元文件。
2.4.4 佛山测试环境StarRocks集群部署实操(无项目)
集群资源配置
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.235.202 evoc-sr1 FE 32->2 16->4 100 200
172.21.235.213 evoc-sr2 FE 32->2 16->4 100 200
172.21.235.227 evoc-sr3 FE 32->2 16->4 100 200
172.21.235.212 evoc-sr4 BE 32->2 16->4 100 1000
172.21.235.217 evoc-sr5 BE 32->2 16->4 100 1000
172.21.235.224 evoc-sr6 BE 32->2 16->8 100 1000
账号/密码:root/evoc@1993
2.4.1 服务器检测
检查 CPU 是否支持 AVX2 指令集
cat /proc/cpuinfo |grep avx2
查看Linux内核与系统版本
uname -a
cat /etc/redhat-release
提示:Linux kernel 3.10以上,CentOs7.9以上。
安装JDK8
离线下载Java jdk压缩安装包:jdk-8u321-linux-x64.tar.gz
创建目录: mkdir /usr/java -p
将jdk压缩包上传至服务器目录:/usr/java
将jdk压缩包解压:tar -xf jdk-8u211-linux-x64.tar.gz
配置java环境变量,编辑文件:vim /etc/profile
添加:export JAVA_HOME=/usr/java/jdk1.8.0_321
export PATH=$JAVA_HOME/bin:$PATH
保存退出: wq
是配置生效:source /etc/profile
检查是否安装成功:java -version
安装Mysql客户端
在任意节点安装即可(这里选在EF节点安装)
Mysql安装在Wiki上有,这里省略过程,仅需安装mysql客户端即可。
离线下载: mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
解压缩.tar包:tar -xf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
创建一个目录:mkdir mysql-5.7.30-rpm
把解压缩后的.rpm文件移动到mysql-5.7.30-rpm目录:
mv mysql-community-* mysql-5.7.30-rpm/
安装客户端仅执行以下相关依赖包即可:
cd mysql-5.7.30-rpm/
rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
提示:mysql版本号5.7.30
2.4.2 修改主机名和hosts文件
修改主机名
分别在各节点上执行
hostnamectl set-hostname evoc-sr1
hostnamectl set-hostname evoc-sr2
hostnamectl set-hostname evoc-sr3
hostnamectl set-hostname evoc-sr4
hostnamectl set-hostname evoc-sr5
hostnamectl set-hostname evoc-sr6
修改hosts文件映射
分别在各节点上编辑hosts文件:vim /etc/hosts
172.21.235.202 evoc-sr1
172.21.235.213 evoc-sr2
172.21.235.227 evoc-sr3
172.21.235.212 evoc-sr4
172.21.235.217 evoc-sr5
172.21.235.224 evoc-sr6
2.4.3 配置SSH免密
第一步:生成公钥和私钥
ssh-keygen
第二步:copy所有节点的公钥到sr1节点
ssh-copy-id -i ~/.ssh/id_rsa.pub evoc-sr1
第三步:在sr1机器上执行,将文件分发到其它机器。
scp authorized_keys root@evoc-sr2:~/.ssh
验证ssh免密登录
ssh evoc-sr2
2.4.4 时间同步配置(虚拟化时已配置)
#检测时间同步
chronyc sourcestats
2.4.5 环境检测与调优
将StarGo和StarRocksV3.1.6安装包上传到服务器,放至/usr/local/apps目录,上传完成后解压stargo,进入解压后的目录。
进入放置目录:cd /usr/local/apps/
执行解压缩命令:tar -zxvf stargo-v2.3.tar.gz
执行环境检测脚本,并对检测异常项按照脚本给出的提示进行调整,保证脚本中除"内存"项外的其他检查项均提示success。
进入目录:cd stargo-v2.3/
执行命令:./env_check.sh
根据检测提示修改对应提示参数
#swap修改
echo vm.swappiness=0 >> /etc/sysctl.conf
#内核参数修改
vim /etc/sysctl.conf
vm.overcommit_memory=1
vm.max_map_count=262144
#修改文件后使生效
sysctl -p
#进程最大打开文件数修改
ulimit -n 655350 && echo -e '* soft nofile 655350\n* hard nofile 655350' >> /etc/security/limits.conf
查看修改是否成功
cat /etc/security/limits.conf
#TCP参数检查
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
#永久禁用透明大页
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
#验证是否关闭了透明大页
grep Huge /proc/meminfo
cat /proc/sys/vm/nr_hugepages
提示:修改后再次执行检测,仅显示为检测到ntp命令,这是因为服务器上配的是其它方式的时间同步。
Ps:安装3.1.8版本多了检测项
程数限制过小可能导致服务异常退出,完整调整命令:ulimit -u 655350 && echo -e '* soft nproc 655350\n* hard nproc 655350' >> /etc/security/limits.conf && sed -i 's/4096/655350/' /etc/security/limits.d/20-nproc.conf
服务器内存较小,为保证集群性能和稳定性,生产环境的建议内存为32G+
未检测到ntp命令,StarRocks各FE节点间的时钟差大于5秒将无法启动,建议在部署前使用ntp对各节点进行时钟同步
2.4.6 目录创建
在部署前我们需要进行简单的目录规划,StarGo需要我们手动创建好"外层"的文件夹,并保证文件夹为空(主要是要求其中不能有与即将部署的服务名相同的目录,以避免误覆盖写掉之前的集群)。
例如,我们将程序部署在/opt/starrocks目录下,将数据保存在/starrocks-data/starrocks目录中,那么我们就需要手动创建这两个目录:
mkdir /opt/starrocks
mkdir -p /starrocks-data/starrocks
注意:若使用的为非root用户,在创建文件夹后,还应注意进行目录的授权。
2.4.7 Yaml文件配置
参考deploy-template.yaml模板文件,按照规范的YAML语法来编辑目标集群的拓扑文件,StarGo会解析该文件获取StarRocks集群部署时需要的IP、端口、文件路径以及参数配置。
#FE、BE分开部署模式
cd /usr/local/apps/stargo-v2.3
vim deploy-dev.yaml
global:
user: root
ssh_port: 22
fe_servers:
- host: 172.21.235.202
ssh_port: 22
java_heap_mem: 10240
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: /opt/starrocks/fe
meta_dir: /starrocks-data/starrocks/fe/meta
log_dir: /starrocks-data/starrocks/fe/log
priority_networks: 172.21.235.202
role: FOLLOWER
config:
sys_log_level: "INFO"
- host: 172.21.235.213
ssh_port: 22
java_heap_mem: 10240
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: /opt/starrocks/fe
meta_dir: /starrocks-data/starrocks/fe/meta
log_dir: /starrocks-data/starrocks/fe/log
priority_networks: 172.21.235.213
role: FOLLOWER
config:
sys_log_level: "INFO"
- host: 172.21.235.227
ssh_port: 22
java_heap_mem: 10240
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: /opt/starrocks/fe
meta_dir: /starrocks-data/starrocks/fe/meta
log_dir: /starrocks-data/starrocks/fe/log
priority_networks: 172.21.235.227
role: FOLLOWER
config:
sys_log_level: "INFO"
be_servers:
- host: 172.21.235.212
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /starrocks-data/starrocks/be/storage
log_dir: /starrocks-data/starrocks/be/log
priority_networks: 172.21.235.212
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 90%
- host: 172.21.235.217
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /starrocks-data/starrocks/be/storage
log_dir: /starrocks-data/starrocks/be/log
priority_networks: 172.21.235.217
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 90%
- host: 172.21.235.224
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /starrocks-data/starrocks/be/storage
log_dir: /starrocks-data/starrocks/be/log
priority_networks: 172.21.235.224
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 90%
##若不需要部署Broker,可删除下方配置。2.5版本后通常可不部署。
#broker_servers:
# - host: 192.168.110.101
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
# config:
# sys_log_level: "INFO"
# - host: 192.168.110.102
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
# config:
# sys_log_level: "INFO"
# - host: 192.168.110.103
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
#
##若不需要部署CN,可删除下方配置。本地部署时通常可不部署。注意:CN不能与BE部署同一节点。
#cn_servers:
# - host: 192.168.110.104
# ssh_port: 22
# thrift_port: 9060
# webserver_port: 8040
# heartbeat_service_port: 9050
# brpc_port: 8060
# deploy_dir : /opt/starrocks/cn
# log_dir: /data/starrocks/cn/log
# priority_networks: 192.168.110.104
# config:
# sys_log_level: INFO
2.4.8 指定包安装路径
官网下载StarRocks v3.1.6
https://www.starrocks.io/download/community
下载后校验MD5码,确认文件无损坏:
md5sum StarRocks-3.1.6.tar.gz
StarGo当前需要使用本地的StarRocks安装包(即StarRocks安装包需要放在StarGo程序所在的服务器上),我们通过repo.yaml文件来配置对应的路径与包名,例如本次我们使用StarRocks-3.0.2版本,安装包路径在/usr/local/apps下:
编辑文件:vim repo.yaml
#该配置文件配置部署、升级/降级或扩容时需用的StarRocks二进制包路径及包名。
sr_path: /usr/local/apps
sr_name: StarRocks-3.0.2.tar.gz
2.4.9 执行部署命令
./stargo cluster deploy sr-cluster v3.1.6 deploy-dev.yaml
查看进程
说明:集群部署成功。
2.4.10 查看集群
2.4.10.1 在sr-cluster节点上查看集群
#查看集群信息
./stargo cluster display sr-cluster
#查看集群状态
./stargo cluster status sr-cluster
提示:集群状态显示正常。
2.4.10.2 通过浏览器访问StarRocks集群
访问FE
通过在浏览器访问FE ip:port(默认http_port为8030),进入StarRocks的WebUI,用户名为root,密码为空。
http://172.21.235.202:8030
访问BE
http://172.21.235.212:8040
2.4.11 使用Mysql连接StarRocks
StarRocks部署完成后,默认启用root用户,密码为空,使用mysql-client访问FE的IP及其9030查询端口,即可连接到StarRocks进行愉快的后续操作:
mysql -h172.21.235.202 -uroot -P9030
#查看集群内FE节点
SHOW FRONTENDS;
命令返回结果说明:
name 表示该 FE 节点在 bdbje 中的名称。
Join 为 true 表示该节点曾经加入过集群。但不代表当前还在集群内(可能已失联)
Alive 表示节点是否存活。
ReplayedJournalId 表示该节点当前已经回放的最大元数据日志 id。
LastHeartbeat 是最近一次心跳。
IsHelper 表示该节点是否是 bdbje 中的 helper 节点。
ErrMsg 用于显示心跳失败时的错误信息。
#查看集群内BE节点
show backends;
提示:集群管理通用命令
http://docs.mirrorship.cn/zh/docs/3.1/sql-reference/sql-statements/Administration/SHOW_BACKENDS/
2.4.11.1 查询数据库和表
#查看当前StarRocks集群中所有数据库
show databases;
use sys;
show tables;
说明:与MySQL的表结构类似,information_schema包含当前StarRocks集群的元数据信息,但是部分统计信息还不完善。
提示:v3.1.6版本默认生成3个库,其中一个是 sys库;之前v3.0.2版本生成的3个库中有个starrocks库,在新版本中库名变更为了sys,这两个版本中sys和starrocks库里面的三张表都是相同的。
select * from select * from role_edges limit 10;
select * from select * from grants_to_users limit 10;
select * from select * from grants_to_roles limit 10;
#获取表结构
DESC grants_to_roles;
#查看information_schema库表
show databases from default_catalog;
use information_schema;
show tables;
show create table tables;
#查看_statistics_库表
2.4.11.2 确认集群部署是否成功
查看FE集群状态
show frontends \G
查看BE集群状态
提示:如果当Alive为true时,当前BE节点正常接入集群。
如果BE节点没有正常接入集群,可以通过查看log/be.WARNING日志文件排查问题。
2.4.12 部署Prometheus
下载并安装Prometheus
#从 Prometheus官网下载LTS版本的Prometheus
https://prometheus.io/download/
离线下载安装包上上传到172.21.235.152服务器/usr/local/apps目录
配置Prometheus
vim prometheus.yml
#设置开机启动
systemctl enable prometheus.service
#启动Prometheus并查看状态
systemctl start prometheus.service
systemctl status prometheus.service
#查看进程
netstat -nltp | grep 9090
2.4.12.1 访问prometheus
Prometheus可以通过web页面进行简单的访问,通过浏览器打开9090端口,即可访问Prometheus的页面。依次点击导航栏中的Status和Targets,即可看到所有分组Job的监控组件节点。正常情况下,所有节点都应为UP,表示数据采集正常。
如果节点状态不为UP,可以访问StarRocks的Metrics接口(http://fe_host:fe_http_port/metrics或http://be_host:be_http_port/metrics)检查是否可以访问。
在172.21.229.7 windows服务器上打开谷歌浏览器访问:172.21.235.152:9090
地址已更换为:http://172.21.235.212:9090
警告:获取服务器时间错误:检测到浏览器和服务器之间的28799.761999845505秒的时间差。Prometheus依赖于精确的时间,而时间漂移可能会导致意外的查询结果。
说明:这台windows服务器上的时间不准,将时间调整为正常时间即可。
点击导航栏中, Status-->Targets ,可以看到配置文件prometheus.yml中所有分组Job的监控主机节点。正常情况下,所有节点都应为UP,表示数据采集正常。
更换服务器后访问地址:http://172.21.235.212:9090/targets?search=
提示:在windows服务器安装时间同步程序timesync64.zip后,时间已恢复正常。
2.4.13 安装Grafana
由于佛山环境不通外网,这里使用离线安装方式。
2.4.13.1 下载安装
https://grafana.com/grafana/download/10.2.1?pg=graf&plcmt=deploy-box-1
下载文件:grafana-enterprise-10.2.1.linux-amd64.tar.gz
#上传服务器目录并解压缩
cd /usr/local/apps
tar -xf grafana-enterprise-10.2.1.linux-amd64.tar.gz
重命名文件:mv grafana-v10.2.1 grafana
#配置systemd管理
vim /usr/lib/systemd/system/grafana.service
[Unit]
Description=Grafana
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/apps/grafana/bin/grafana server --homepath=/usr/local/apps/grafana
[Install]
WantedBy=multi-user.target
#启动grafana
systemctl start grafana
#设置开机启动
systemctl enable grafana
#查看状态
systemctl status grafana
提示:启动正常, Active: active (running) 表示服务已成功启动。
#查看进程
Grafana默认使用的端口为3000,使用netstat命令验证端口监听状态:
netstat -nltp | grep 3000
2.4.13.2 访问Grafana
使用浏览器访问172.21.235.152:3000(地址已变更为:172.21.235.212:3000),即可看到grafana页面,默认用户名密码都是admin,初次登录会提示修改默认的登录密码,若暂时不希望修改密码,可以点击Skip跳过。跳过后即可进入到Grafana主界面。
这里使用默认密码登录,修改默认密码,新密码为:123456。
变更地址后访问:http://172.21.235.212:3000/d/wpcA3tG8z/starrocks-overview?orgId=1
2.4.13.3 数据源配置
配置路径为:Configuration-->Data sources-->Add data source-->Prometheus
选择Prometheus数据源进行配置,需要修改的配置参数有:
1> Name:数据源的名称,可以自定义,例如starrocks_monitor。
2> URL:Prometheus的web地址:http://172.21.235.212:9090
3> 完成后单击页面下方的Save&Test,如果显示Data source is working,即表示数据源可用。
2.4.13.4 配置DashBoard
#下载监控模板
https://forum.mirrorship.cn/t/topic/4497 StarRocks-Overview-2.5.json
在Grafana上导入StarRocks Overview-2.5.json模板,这步操作详情见第四部分集群运维,有详细说明。
提示:导入后即可看到各监控项显示。
2.4.13.5 访问Grafana StarRocks监控
火狐浏览器:http://172.21.235.152:3000/d/wpcA3tG8z/starrocks-overview?orgId=1(废弃)
访问地址变更为:http://172.21.235.212:3000/d/wpcA3tG8z/starrocks-overview?orgId=1
Overview
Cluster Overview
Query Statistic
Jobs
Transaction
FE JVM
BE
BE Memory
2.4.14 集群关闭和重启
#重启集群
./stargo cluster restart sr-cluster
#关闭集群
调整服务器资源,先关闭集群。
./stargo cluster status sr-cluster #关闭前先查看下集群状态
./stargo cluster stop sr-cluster #关闭
李华那边调整完资源后,我这边重启集群成功。
2.4.15 mysql连接StarRocks集群
服务器地址:172.21.235.202,172.21.235.213,172.21.235.227 (可配置一个FE ip地址)
端口:9030
用户名:root
密码:evoc@1993
2.4.16 Starrocks集群升级3.1.8->3.2.6
cd /usr/local/apps/stargo-v2.3
./stargo cluster upgrade sr-cluster v3.2.6
说明:升级到V3.2.6版本成功。
#查看集群信息和状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
#mysql连接starrocks
查库查表
查看FE和BE信息
2.4.5 部署后设置
2.4.5.1 管理初始帐户
创建StarRocks集群后,系统会自动生成集群的初始root用户。root用户拥有root权限,即集群内所有权限的集合。我们建议您修改root用户密码并避免在生产中使用该用户,以避免误用。
1. 使用用户名root和空密码通过MySQL客户端连接到StarRocks。
mysql -uroot -h 172.21.235.202 -P 9030
2. 执行以下SQL重置root用户密码
SET PASSWORD = PASSWORD('123456 ')
2.4.5.2 设置必要的系统变量
变量名 Starrocks版本 推荐值 说明
enable_profile v2.5或以后 false 是否发送查询 Profile以供分析。默认值为 false,即不发送。
将此变量设置为true会影响 StarRocks的并发性能。
非常消耗FE节点的内存,非必要不开启。
enable_pipeline_engine v2.3或以后 true 是否启用 Pipeline Engine。true表示启用,false表示禁用。默认值为 true.
parallel_fragment_exec_instance_num v2.3或以后 如果您启用了 Pipeline Engine,您可以将此变量设置为1。
如果您未启用 Pipeline Engine,您可以将此变量设置为CPU 核数的一半。 每个BE上用于扫描节点的实例数。默认值为 1。
pipeline_dop v2.3、v2.4及v2.5 1 Pipeline实例的并行度,用于调整查询并发度。默认值:0,表示系统自动调整每个Pipeline实例的并行度。
自v3.0起,StarRocks根据查询并行度自适应调整该参数。
全局设置enable_profile为false
SHOW VARIABLES LIKE 'enable_profile';
SET GLOBAL enable_profile = false;
#局部设置enable_profile为True(排查SQL性能问题时可临时使用)
set enable_profile=true; (在当前会话生效,试过了在mysql客户端操作不起作用。)
换个临时方式:SELECT /*+ SET_VAR(enable_profile= true) */
说明:在要查询的SQL语句Select后面这样写。然后再FE Web界面可查看到执行的sql profile记录。
全局设置enable_pipeline_engine为true
SET GLOBAL enable_pipeline_engine = true;
全局设置parallel_fragment_exec_instance_num为1
SET GLOBAL parallel_fragment_exec_instance_num = 1;
全局设置pipeline_dop为1
SHOW VARIABLES LIKE 'pipeline_dop';
SET GLOBAL pipeline_dop = 1
2.5 SSB Flat Table性能测试
Star Schema Benchmark(以下简称 SSB)是学术界和工业界广泛使用的一个星型模型测试集,通过这个测试集合可以方便的对比各种OLAP产品的基础性能指标。ClickHouse通过改写 SSB,将星型模型打平转化成宽表(flat table),改造成了一个单表测试benchmark。
2.5.1下载编译ssb-poc包并生成测试数据
表名 行数 表容量 说明
lineorder 6亿 59GB SSB商品订单表
customer 300 万 274MB SSB客户表
part 140万 115MB SSB零部件表
supplier 20万 17MB SSB供应商表
dates 2556 224KB 日期表
lineorder_flat 6亿 SSB打平后的宽表
首先下载ssb-poc工具包并编译
下载url:https://starrocks-public.oss-cn-zhangjiakou.aliyuncs.com/ssb-poc-1.0.zip
#上传工具包到服务器并解压缩
cd /usr/local/apps
unzip ssb-poc-1.0.zip
#编译ssb
cd ssb-poc-1.0/
make && make install
提示:编译失败,gcc命令未找到。
解决办法:首先命令whereis gcc,查看gcc是否安装好。
如果显示如下,则表示没有安装:
#安装gcc并确认
yum install gcc
whereis gcc
说明:gcc安装完成。
#重新编译ssb
提示:编译成功,所有相关工具安装在output目录下,后续所有操作都在output目下进行。
生成SSB标准测试集scale factor=500的数据
cd output/
#执行脚本
sh bin/gen-ssb.sh 500 data_dir
提示:生成测试数据成功。
#查看文件内容
cat supplier.tbl
2.5.2 创建表结构
提示:在执行生成表命令之前,给服务器安装配置Python3环境,不然执行命令会报错,
具体操作不再重复描述,详情见5.2.2章节步骤。
建表
修改配置文件conf/starrocks.conf,指定脚本操作的集群地址,重点关注mysql_host和mysql_port,然后执行建表操作。
#编辑conf文件
cd /usr/local/apps/ssb-poc-1.0/output/conf
vim starrocks.conf
mysql_host: 172.21.235.202
#执行建表脚本
sh bin/create_db_table.sh ddl_100
#查看库表是否生成
mysql -h172.21.235.202 -uroot -P9030
提示:ssb库和表已生成。
2.5.3 导入数据
2.5.3.1 使用Stream Load导入多表数据
提示:导入前先给stream_load.sh文件赋予读写执行权限sudo chmod 777 bin/stream_load.sh
cd /usr/local/apps/ssb-poc-1.0/output/bin
sudo chmod 777 stream_load.sh
sudo chmod 777 flat_insert.sh
#提前修改导入超时参数
stream_load_default_timeout_second=600 (默认值10分钟)
解决办法:修改FE参数配置,将导入超时时间调大,修改为10800(3小时)。
ADMIN SET FRONTEND CONFIG ("stream_load_default_timeout_second" = "10800");
刷新页面,查看参数已更新。
注意:FE Web UI页面分两部分,一部分是Configure Info(fe的参数),一部分是Variable Info(系统变量)。
系统变量可在mysql查看:show variables like "%%";
BE动态参数项也可在linux上查看:curl http://172.21.228.85:8045/varz
#运行导入数据命令
cd /usr/local/apps/ssb-poc-1.0/output
bin/stream_load.sh data_dir
数据导入dates、customer、part、supplier、lineorder表成功,耗时14分钟。
2.5.3.2 数据导入宽表
#使用INSERT INTO将多表打平成单张宽表
cd /usr/local/apps/ssb-poc-1.0/output
bin/flat_insert.sh data_dir
提示:数据导入宽表成功
2.5.3.3 查询表数据量
select 'customer',count(1) from customer union all
select 'dates',count(1) from dates union all
select 'part',count(1) from part union all
select 'supplier',count(1) from supplier union all
select 'lineorder',count(1) from lineorder union all
select 'lineorder_flat',count(1) from lineorder_flat;
2.5.4 SSB多表查询测试
运行测试脚本
执行多表测试脚本,会执行多表测试的13个SQL,SQL复杂度递增,从两个表join到5个表join,最后返回每个SQL的查询时长(单位为毫秒)。
cd /usr/local/apps/ssb-poc-1.0/output/bin
sh ./benchmark.sh ssb
测试结论:13条SQL查询,执行两次查询,基本在1秒以内完成。集群BE CPU使用率第一次4.5%,第二次4.4%;集群FE内存使用率占比4%;
2.5.5 SSB单表查询(大宽表)
SQL参见/usr/local/apps/ssb-poc-1.0/output/share/ssb_test/sql/ssb/
SQL文件:/usr/local/apps/ssb-poc-1.0/output/share/ssb_test/sql/query/single-file-ssb-flat.sql
运行测试脚本
执行单表测试脚本,会执行单表测试的13个SQL,用到的表是前面的lineorder_flat。脚本会返回每个SQL的查询时长,时间单位为毫秒。
cd /usr/local/apps/ssb-poc-1.0/output/bin
sh ./benchmark.sh ssb-flat
测试结论:单表(大宽表)SQL查询,执行两次查询,基本在1秒以内完成。
集群BE的CPU使用率第一次2.4%,第二次4.2%;集群FE的内存使用率4.38%,大宽表查询速度比多表查询耗时更短,消耗资源更少。
2.5.6 SSB表信息
http://docs.mirrorship.cn/zh/docs/3.1/administration/information_schema/
创建ssb库表成功后,使用Mysql连接StarRocks,查看ssb库表结构。
show databases from default_catalog;
use ssb;
show tables;
2.6.1 ineorder表
show create table lineorder;
参数说明:
1. 排序键通过DUPLICATE KEY显式定义,该表中排序键为lo_orderkey。
2. 分桶使用 DISTRIBUTED BY HASH 子句指定分桶键,该表分桶键为lo_orderkey。
3. 分区使用PARTITION BY RANGE()语句设置,用于分区的列也被称之为分区键,当前分区键仅支持日期类型和整数类型(支持一列或多列),该表创建的是静态分区。
4. 配置参数使用PROPERTIES关键字:
replication_num:设置副本数
in_memory:当in_memory属性为true时,会尽可能将该表的数据和索引Cache到BE内存中。
5. enable_persistent_index:是否持久化主键索引,同时使用磁盘和内存存储主键索引,避免主键索引占用过大内存空间。取值为true或者false。不指定的话默认是false的,如果磁盘为固态硬盘 SSD,则建议设置为true。
alter table sr_orders_table set (“enable_persistent_index”=“true”)
6. replication_num:不设置的话,默认是3。
7. replicated_storage:指定数据在多副本间的写入和同步方式。
设置为true:(3.0及后续版本的默认值)表示single leader replication,即数据只写入到主副本(primary replica),由主副本同步数据到从副本(secondary replica)。该模式能有效降低多副本写入带来的CPU成本。该模式从2.5版本开始支持。
设置为false:(2.5版本的默认值)表示leaderless replication,即数据直接写入到多个副本,不区分主从副本。该模式CPU成本较高。
8. compression:设置数据压缩算法,支持四种数据压缩算法:LZ4、Zstandard(或zstd)、zlib和Snappy。
2.6.2 customer表
show create table customer;
2.6.3 supplier表
show create table supplier;
2.6.4 dates表
2.6.5 part表
2.6.6 ineorder_flat表
show create table lineorder_flat;
2.6 客户端连接Starrocks
2.6.1 DBeaver
DBeaver Community是一个免费的跨平台数据库工具,面向开发人员、数据库管理员、分析师和所有使用数据的人员。它支持所有流行的SQL数据库,如MySQL,MariaDB,PostgreSQL,SQLite,Apache家族等。
安装DBeaver
访问https://dbeaver.io下载安装DBeaver社区版,也可以访问https://dbeaver.com下载安装 DBeaver PRO版。
https://dbeaver.io/download/
选择MySQL驱动器
在Select your database窗口,您可以看到所有支持的驱动器(Driver)。在窗口左侧单击 Analytical可以快速找到MySQL驱动器,然后双击MySQL图标。
配置数据库连接2.7 数字孪生项目
2.7.1 佛山测试环境-数字孪生StarRocks集群(转为预生产环境使用)
集群资源配置
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.251.202 evoc-sr1 FE 4 8 50 50
172.21.251.237 evoc-sr2 FE 4 8 50 50
172.21.251.242 evoc-sr3 FE 4 8 50 50
172.21.251.178 evoc-sr4 BE 4 8 50 400
172.21.251.189 evoc-sr5 BE 4 8 50 400
172.21.251.249 evoc-sr6 BE 4 8 50 400
数字孪生集群环境配置安装。。。已记录详细部署过程,详见参照之前2.4.4章节部署过程,这里省略重复描述。
#校验下载的安装包
md5sum StarRocks-3.1.8.tar.gz
#修改配置文件
cd /usr/local/apps/stargo-v2.3
vim deploy-dev.yaml
vim repo.yaml
#执行安装命令
cd /usr/local/apps/stargo-v2.3
./stargo cluster deploy sr-cluster v3.1.8 deploy-dev.yaml
说明:安装完成
#检查是否安装成功
查看集群信息
./stargo cluster display sr-cluster
#修改版本号
/root/.stargo/cluster/sr-cluster
vim meta.yaml
说明:版本号已改正。
#查看集群状态
./stargo cluster status sr-cluster
#检查FE、BE进程
ps -ef | egrep 'StarRocksFE|starrocks_be|BrokerBootstrap'
说明:进程存在
#通过浏览器访问starrocks集群Web页面
数字孪生-FE
http://172.21.251.202:8030
数字孪生-BE
http://172.21.251.178:8040
说明:通过浏览器访问Starrocks Web成功。
#通过mysql查看starrocks集群
mysql -h172.21.251.202 -uroot -P9030
查看FE:SHOW FRONTENDS;
查看BE:show backends;
#mysql连接starrocks查看库表
show databases from default_catalog;
use information_schema;
show tables;
show create table tables;
说明:通过mysql连接starrocks,查看库表成功。
#Prometheus配置启动
配置具体描述省略,详情查看4.4节。
systemctl enable prometheus.service #开机启动
systemctl start prometheus.service #启动服务
systemctl status prometheus.service #启动状态
说明:启动成功
prometheus默认使用的端口为9090,也可以使用netstat命令查看9090端口的状态:
#通过web浏览器访问Prometheus
Prometheus可以通过web页面进行简单的访问,通过浏览器打开9090端口,即可访问Prometheus的页面。
使用谷歌浏览器访问http://172.21.251.178:9090。
点击导航栏中, Status-->Targets ,可以看到配置文件prometheus.yml中所有分组Job的监控主机节点。正常情况下,所有节点都应为UP,表示数据采集正常。
http://172.21.251.178:9090/targets?search=
#Grafana配置和启动
配置操作省略,详情查看2.4章节。
#配置systemd管理
vim /usr/lib/systemd/system/grafana.service
#启动grafana
systemctl start grafana
#查看状态
systemctl status grafana
#设置开机启动
systemctl enable grafana
提示:启动正常, Active: active (running) 表示服务已成功启动。
#查看进程
Grafana默认使用的端口为3000,使用netstat命令验证端口监听状态:
netstat -nltp | grep 3000
#通过浏览器访问Grafana
使用浏览器访问172.21.251.178:3000,即可看到grafana页面,默认用户名密码都是admin,初次登录会提示修改默认的登录密码,若暂时不希望修改密码,可以点击Skip跳过。跳过后即可进入到Grafana主界面。
这里使用默认密码登录,修改默认密码,账号:admin 新密码为:123456。
#Grafana数据源配置
配置路径为:Configuration-->Data sources-->Add data source-->Prometheus
选择Prometheus数据源进行配置,需要修改的配置参数有:
4> Name:数据源的名称,可以自定义,例如starrocks_monitor。
5> URL:Prometheus的web地址:http://172.21.251.178:9090
6> 完成后单击页面下方的Save&Test,如果显示Data source is working,即表示数据源可用。
#配置DashBoard
导入文件:StarRocks-Overview-2.5.json
后续可通过火狐浏览器访问Grafana上的StarRocks Overview监控页面:
http://172.21.251.178:3000/d/wpcA3tG8z/starrocks-overview?orgId=1
2.7.7.1 重启集群、重启单台FE、BE进程
#重启单台FE进程
cd /opt/starrocks/fe/bin
sh start_fe.sh –daemon
#重启单台BE进程
sh start_be.sh --daemon
官网集群管理:http://docs.mirrorship.cn/zh/docs/2.2/administration/Cluster_administration/
#重启集群
./stargo cluster restart sr-cluster
2.7.7.2 mysql连接StarRocks集群
服务器地址:172.21.251.202,172.21.251.237,172.21.251.242 (可配置一个FE ip地址)
端口:9030
用户名:root
密码:evoc@1993
2.7.7.3 集群版本升级3.1.8->3.2.6
1. Starrocks集群6台节点,上传待升级版本安装包:StarRocks-3.2.6.tar.gz
2. 修改配置文件
cd /usr/local/apps/stargo-v2.3
编辑文件:vim repo.yaml,添加待升级新版本安装包名称,修改放置路径。
3. 执行升级命令
cd /usr/local/apps/stargo-v2.3
./stargo cluster upgrade sr-cluster v3.2.6
#升级结束查看集群信息和状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
说明:升级完成,版本号已更新为v3.2.6,查看集群状态正常。
#mysql连接starrocks集群测试
mysql -h172.21.251.202 -uroot -P 9030 -p
说明:连接访问集群正常。
2.7.7.4 管理Starrocks中的审计日志
#参考4.6章节操作
因为在之前的集群已操作过一遍,所以直接延用重新打包好的文件即可auditloader.zip。(密码都是相同的,无需修改。)
CREATE DATABASE starrocks_audit_db__;
CREATE TABLE starrocks_audit_db__.starrocks_audit_tbl__ (
`queryId` VARCHAR(64) COMMENT "查询的唯一ID",
`timestamp` DATETIME NOT NULL COMMENT "查询开始时间",
`queryType` VARCHAR(12) COMMENT "查询类型(query, slow_query, connection)",
`clientIp` VARCHAR(32) COMMENT "客户端IP",
`user` VARCHAR(64) COMMENT "查询用户名",
`authorizedUser` VARCHAR(64) COMMENT "用户唯一标识,既user_identity",
`resourceGroup` VARCHAR(64) COMMENT "资源组名",
`catalog` VARCHAR(32) COMMENT "Catalog名",
`db` VARCHAR(96) COMMENT "查询所在数据库",
`state` VARCHAR(8) COMMENT "查询状态(EOF,ERR,OK)",
`errorCode` VARCHAR(512) COMMENT "错误码",
`queryTime` BIGINT COMMENT "查询执行时间(毫秒)",
`scanBytes` BIGINT COMMENT "查询扫描的字节数",
`scanRows` BIGINT COMMENT "查询扫描的记录行数",
`returnRows` BIGINT COMMENT "查询返回的结果行数",
`cpuCostNs` BIGINT COMMENT "查询CPU耗时(纳秒)",
`memCostBytes` BIGINT COMMENT "查询消耗内存(字节)",
`stmtId` INT COMMENT "SQL语句增量ID",
`isQuery` TINYINT COMMENT "SQL是否为查询(1或0)",
`feIp` VARCHAR(128) COMMENT "执行该语句的FE IP",
`stmt` VARCHAR(1048576) COMMENT "原始SQL语句",
`digest` VARCHAR(32) COMMENT "慢SQL指纹",
`planCpuCosts` DOUBLE COMMENT "查询规划阶段CPU占用(纳秒)",
`planMemCosts` DOUBLE COMMENT "查询规划阶段内存占用(字节)"
) ENGINE = OLAP
DUPLICATE KEY (`queryId`, `timestamp`, `queryType`)
COMMENT "审计日志表"
PARTITION BY RANGE (`timestamp`) ()
DISTRIBUTED BY HASH (`queryId`) BUCKETS 3
PROPERTIES (
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.start" = "-30", --表示只保留最近30天的审计信息,可视需求调整。
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "3",
"dynamic_partition.enable" = "true",
"replication_num" = "3" --若集群中BE个数不大于3,可调整副本数为1,生产集群不推荐调整。
);
#安装并查看
INSTALL PLUGIN FROM "/usr/local/apps/auditloader.zip";
SHOW PLUGINS\G
#查询审计日志表
SELECT * FROM starrocks_audit_db__.starrocks_audit_tbl__;
说明:审计插件安装成功,审计日志已导入到审计表中。当前53条审计记录。
2.7.7.5 创建test用户
#登录
mysql -h172.21.251.202 -uroot -P9030 -p
#查看集群所有用户
SHOW ALL AUTHENTICATION;
#创建新用户
CREATE USER 'test' IDENTIFIED BY 'test123';
2.7.2 佛山-压测环境-数字孪生StarRocks集群
跳蚤市场创建新账号
跳蚤市场项目压测环境,2个项目共用同一套SR压测环境集群。
mysql -h172.21.242.66 -utest -P 9030 -p
测试账号:tssctest
账号密码:tssctest123
#压测环境集群配置
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.242.66 evoc-sr1 FE 8 8 100 100 SSD
172.21.242.21 evoc-sr2 FE 8 8 100 100 SSD
172.21.242.161 evoc-sr3 FE 8 8 100 100 SSD
172.21.242.196 evoc-sr4 BE 16 16 150 100 SSD
172.21.242.90 evoc-sr5 BE 16 16 150 100 SSD
172.21.242.217 evoc-sr6 BE 16 16 150 100 SSD
172.21.242.9 evoc-sr7 BE 16 8 50 100 SSD
172.21.242.185 evoc-sr8 BE 16 8 50 100 SSD
172.21.242.231 evoc-sr9 BE 16 8 50 100 SSD
#安装
安装过程环境配置省略,详请查看2.4.4章节。
#执行安装命令
/usr/local/apps/stargo-v2.3
./stargo cluster deploy sr-cluster v3.1.8 deploy-dev.yaml
说明:部署成功,集群状态活跃。
#访问Web端FE和BE
http://172.21.242.66:8030
http://172.21.242.196:8040
2.7.2.1 mysql连接StarRocks集群
mysql -h172.21.242.66 -uroot -P 9030 -p
#修改密码
SET PASSWORD = PASSWORD(‘evoc@1993’);
2.7.2.2 更新stargo配置文件
cd /root/.stargo/cluster/sr-cluster/
vim meta.yaml
说明:集群安装完成后,默认root用户无密码,设置密码后,需要手动更新这个stargo配置文件,否则用该工具命令行查看集群信息和状态,显示为异常,这是因为新设密码后,meta.yaml文件不会自动更新密码,所以会导致查询集群状态信息不正常。
2.7.2.3 部署启动prometheus
安装版本:prometheus-2.45.2.linux-amd64.tar.gz
http://172.21.242.196:9090/targets?search=
2.7.2.4 部署Grafana并启动
安装版本:grafana-enterprise-10.2.1.linux-amd64.tar.gz
#访问Grafana
使用浏览器访问172.21.242.196:3000,即可看到grafana页面,用户名和密码默认是admin,初次登录会提示修改默认的登录密码,若暂时不希望修改密码,可以点击Skip跳过。跳过后即可进入到Grafana主界面。
这里使用默认密码登录,修改默认密码,新密码为:123456。
http://172.21.242.196:3000/
#配置数据源prometheus
#配置DashBoard
StarRocks官方提供了Grafana DashBoard模版
http://172.21.242.196:3000/d/wpcA3tG8z/starrocks-overview?orgId=1
说明:Grafana监控可视化配置完成。
2.7.2.5 集群升级3.1.8->3.2.6
#执行升级命令
cd /usr/local/apps/stargo-v2.3
./stargo cluster upgrade sr-cluster v3.2.6
#查看升级后的集群信息和状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
说明:这里显示升级过程正常,查看集群信息和集群状态正常,但是FE和BE节点显示的还是3.1.8,说明没有升级到3.2.6,后来排查发现是没有修改repl.yaml文件,文件里面还是指定的StarRocks-3.2.6.tar.gz,导致升级后,版本无更新。
#mysql连接starrocks集群
mysql -h172.21.242.66 -uroot -P 9030 -p
2.7.2.5.1 手动升级集群BE和FE节点
#先手动升级BE节点Starrocks版本
查看并停止BE节点
./stargo cluster status sr-cluster --role BE
./stargo cluster stop sr-cluster --role BE
#上传升级包到各BE节点目录并解压
#备份当前集群的be节点文件
cd /opt/starrocks/be
mv bin bin.bank-20240606
mv lib lib.bak-20240606
说明:手动升级主要是备份和拷贝bin和lib这两个目录。
#拷贝升级包中的文件到Starrocks be节点安装目录
cd /usr/local/apps/StarRocks-3.2.6/be
cp -R bin /opt/starrocks/be/bin
cp -R lib /opt/starrocks/be/lib
#然后启动BE节点
./stargo cluster start sr-cluster --role BE
说明:接着在停掉BE节点,操作升级其它待升级的BE节点。
#升级完成BE再手动升级FE节点Starrocks版本
查看并停止FE节点
./stargo cluster stop sr-cluster --role FE
./stargo cluster status sr-cluster --role FE
#备份FE节点的bin和lib目录
cd /opt/starrocks/fe
mv bin bin.bank-20240606
mv lib lib.bak-20240606
#拷贝升级包中的文件到Starrocks FE节点安装目录
cd /usr/local/apps/StarRocks-3.2.6/fe
cp -R bin /opt/starrocks/fe/bin
cp -R lib /opt/starrocks/fe/lib
#然后启动FE节点并查看状态
./stargo cluster start sr-cluster --role FE
./stargo cluster status sr-cluster --role FE
说明:至此手动升级Starrocks集群版本完成,集群fe和be状态正常,版本号3.2.6正常。
2.7.2.6 Starrocks集群扩容3台BE节点
步骤:检测linux环境Centos7.9、安装jdk、修改hostname、修改hosts、3台新机器配置ssh(与原有集群互通)、配置时间同步、上传stargo-v2.3.tar.gz和StarRocks-3.2.6.tar.gz安装包到新服务器目录、解压stargo并执行检测脚本检查服务器参数(根据提示修改)、创建starrocks安装目录和数据目录。
在StarGo部署工具所在节点172.21.242.66的stargo目录下,创建deploy-out.yaml文件。
cd /usr/local/apps/stargo-v2.3
vim deploy-out.yaml
be_servers:
- host: 172.21.242.9
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /starrocks-data/starrocks/be/storage
log_dir: /starrocks-data/starrocks/be/log
priority_networks: 172.21.242.9
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 90%
- host: 172.21.242.185
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /starrocks-data/starrocks/be/storage
log_dir: /starrocks-data/starrocks/be/log
priority_networks: 172.21.242.185
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 90%
- host: 172.21.242.231
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : /opt/starrocks/be
storage_dir: /starrocks-data/starrocks/be/storage
log_dir: /starrocks-data/starrocks/be/log
priority_networks: 172.21.242.231
config:
enable_new_load_on_memory_limit_exceeded: true
mem_limit: 90%
#检查repo.yaml文件配置
sr_path: /usr/local/apps
sr_name: StarRocks-3.2.6.tar.gz
#检查集群状态
在172.21.242.66节点执行,执行前先查看集群当前信息和状态。
#执行扩容命令
./stargo cluster scale-out sr-cluster deploy-out.yaml
说明:扩容结束。
#查看扩容后集群信息和集群状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
说明:查看扩容后SR集群FE和BE状态活跃,扩容的3个BE节点已加入集群,扩容无异常。
#Prometheus监控配置
监控新扩容的3台BE节点,在172.21.242.196节点上操作。
cd /usr/local/apps/prometheus
修改配置文件:vim prometheus.yml
- targets:
['172.21.242.196:8040','172.21.242.90:8040','172.21.242.217:8040','172.21.242.9:8040','172.21.242.185:8040','172.21.242.231:8040']
labels:
group: be
#先查看prometheus服务状态
systemctl status prometheus.service
#重启prometheus并查看服务状态
systemctl restart prometheus.service
systemctl status prometheus.service
说明:修改配置文件后重启服务,服务状态正常。
#访问prometheus
http://172.21.242.196:9090/targets?search=
说明:可以看到,新增3台be节点已加入监控采集服务。
#查看Grafana
http://172.21.242.196:3000/d/wpcA3tG8z/starrocks-overview?orgId=1&from=now-1h&to=now
2.7.2.6 缩容3台BE节点
172.21.242.9
172.21.242.185
172.21.242.231
#集群缩容be节点
./stargo cluster display sr-cluster
#逐台缩容-172.21.242.9
./stargo cluster scale-in sr-cluster --node 172.21.242.9:9060
BE是否被执行缩容可通过`show backends; `命令返回值中的`SystemDecommissioned` 是否为`true`来判断。
在BE开始缩容后,其上的tablet会自动迁移至集群其他节点,故BE的缩容进度可通过返回值中的`TabletNum`剩余数来粗估。
#查看缩容进度
show backends;
说明:172.21.242.9节点缩容完成。
注意:BE的缩容为异步操作,当前提示仅代表缩容命令执行完成。缩容命令执行后,后台会先将目标节点的tablet迁移至集群其他BE节点,在迁移完成后将该BE将自动脱离集群。Tablet迁移进度可通过"show backends;"语句查看TabletNum进行判断。若目标节点的tablet仅剩数十个且TabletNum长时间不减少,则可考虑执行"show proc '/statistic';"语句,在确认集群无不健康tablet副本后将目标BE手动Drop掉。
#逐台缩容-172.21.242.185
./stargo cluster display sr-cluster
./stargo cluster scale-in sr-cluster --node 172.21.242.185:9060
show backends;
./stargo cluster display sr-cluster
说明:172.21.242.185缩容已完成。
#逐台缩容-172.21.242.231
./stargo cluster scale-in sr-cluster --node 172.21.242.231:9060
show backends;
./stargo cluster display sr-cluster
说明:172.21.242.231缩容已完成。
#修改prometheus配置文件--172.21.242.196
cd /usr/local/apps/prometheus
vim prometheus.yml
#重启prometheus并查看服务状态
systemctl restart prometheus.service
systemctl status prometheus.service
http://172.21.242.196:9090/targets?search=
说明:prometheus缩容BE节点已剔除。
#Grafana展示
说明:Grafana界面已更新展示最新集群信息。
#查看库表数据
2.7.3 佛山-(物理机)压测环境-数字孪生StarRocks集群
172.21.227.7
172.21.227.8
172.21.227.9
172.21.227.10
172.21.227.11
172.21.227.12
#执行部署命令
cd /usr/local/apps/stargo-v2.3
./stargo cluster deploy sr-cluster v3.2.6 deploy-dev.yaml
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
说明:部署完成,有台BE起不来。
#通过mysql协议连接访问Starrocks
mysql -h172.21.227.7 -uroot -P 9030
#查看fe/be信息状态
SHOW FRONTENDS;
show backends;
#部署Prometheus
http://172.21.227.11:9090/targets?search=
说明:有一台be起不来,所以连接不上这台be。172.21.227.10
#grafana
http://172.21.227.11:3000/d/wpcA3tG8z/starrocks-overview?orgId=1
#创建新账号仅赋予查询权限
mysql -h172.21.227.7 -uroot -P 9030 -p
CREATE USER 'test' IDENTIFIED BY 'test123';
GRANT SELECT ON *.* TO 'test';
2.7.3.1 排查问题
问题一
BE节点:172.21.227.10启动失败
说明:grpc连接:9070端口失败。
排查:172.21.227.11、172.21.227.12节点能连接上9070端口,唯独172.21.227.10节点连不上9070端口,怀疑端口被占用,用该命令排查:netstat -tunlp | grep 9070,检测不到端口,说明没有占用9070端口。
解决:后面实在搞不懂是为什么,把端口号改成了:9080。
修改端口:统一修改3台BE节点conf目录中的配置文件be.conf。
先停止集群:
cd /usr/local/apps/stargo-v2.3
./stargo cluster stop sr-cluster
#修改be.conf文件
vim be.conf
starlet_port = 9080
#修改完成后重启集群
./stargo cluster start sr-cluster
#查看集群信息和状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
说明:集群FE和BE状态正常,172.21.227.10 BE节点状态也恢复正常。
问题二
BE节点:172.21.227.10启动失败
/data/starrocks/be/log
报错:端口8040连接不上,已被使用。
排查端口占用:netstat -tunlp | grep 8040
说明:没查到占用8040端口的进程,很奇怪。
解决办法:又停止集群,等了2分钟在启动集群,172.21.227.10节点BE又成功起来了。
问题三
延伸问题:
后面发现使用netstat -tunlp查询不到9070端口,但使用lsof -i:9070能查询到该端口。
在172.21.227.10、172.21.227.12节点上使用lsof -i:9070能查询到9070端口,172.21.227.11节点上没有。
说明:同事说9070可能是polardb的端口。但不知该端口是否会一直在线,还是临时启用。
2.7.4 佛山-多地多中心-数字孪生
2.7.4.1 数字孪生-主
#多地多中心-主
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.243.194 evoc-sr1 FE 2 4 100 100 HDD
172.21.243.45 evoc-sr2 FE 2 4 100 100HDD
172.21.243.31 evoc-sr3 FE 2 4 100 100 HDD
172.21.243.50 evoc-sr4 BE 2 4 100 100 HDD
172.21.243.193 evoc-sr5 BE 2 4 100 100 HDD
172.21.243.112 evoc-sr6 BE 2 4 100 100 HDD
#执行部署命令
./stargo cluster deploy sr-cluster v3.1.8 deploy-dev.yaml
#查看集群信息和状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
#mysql连接starrocks
-- 无密码
mysql -h172.21.243.194 -uroot -P9030
SHOW FRONTENDS;
show backends;
说明:mysql连接starrocks正常。
#Web端访问FE
http://172.21.243.194:8030/
#Web端访问BE
http://172.21.243.50:8040/
#访问Prometheus
http://172.21.243.50:9090
#访问Grafana
http://172.21.243.50:3000
配置Prometheus数据源
#导入监控模板
http://172.21.243.50:3000/d/wpcA3tG8z/starrocks-overview?orgId=1
2.7.4.1.1 集群升级3.1.8->3.2.6
#集群升级前查看下集群信息和状态
#升级
1. 上传升级安装包和修改文件repo.yaml
2. 执行升级命令
使用Stargo工具执行升级,升级过程:先升级BE节点,备份上传顺序:lib、bin、jdk。从备份bin开始停止BE节点,到备份上传完jdk后,再启动BE节点。(一台台执行)
BE全部节点升级完成后,再接着升级FE节点。(一台台执行)
cd /usr/local/apps/stargo-v2.3
./stargo cluster upgrade sr-cluster v3.2.6
#查看集群信息和状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
说明:集群升级过程正常,查看集群信息和状态正常。
#mysql连接starrocks集群
mysql -h172.21.243.194 -uroot -P 9030 -p
2.7.4.2 数字孪生-备
#多地多中心-备
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.243.7 evoc-sr1 FE 2 4 150 100 HDD
172.21.243.75 evoc-sr2 FE 2 4 150 100 HDD
172.21.243.63 evoc-sr3 FE 2 4 150 100HDD
172.21.243.111 evoc-sr4 BE 2 4 150 100 HDD
172.21.243.135 evoc-sr5 BE 2 4 150 100 HDD
172.21.243.234 evoc-sr6 BE 2 4 150 100 HDD
./stargo cluster deploy sr-cluster v3.1.8 deploy-dev.yaml
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
说明:集群部署成功,集群状态正常。
#mysql连接Starrocks
-- 无密码
mysql -h172.21.243.7 -uroot -P9030
-- 要密码
mysql -h172.21.243.7 -uroot -P 9030 -p
SHOW FRONTENDS;
show backends;
#Web端访问FE
http://172.21.243.7:8030
#Web端访问BE
http://172.21.243.111:8040
#访问prometheus
http://172.21.243.111:9090
#访问Grafana
http://172.21.243.111:3000
2.7.4.2.1 集群升级3.1.8->3.2.6
#升级前查看集群信息和集群状态
#升级
./stargo cluster upgrade sr-cluster v3.2.6
#查看升级后集群信息和状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
#mysql连接starrocks集群
mysql -h172.21.243.7 -uroot -P 9030 -p
2.7.5 佛山-测试环境-数字孪生
#手动部署Starrocks集群
IP 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.229.229 FE 4 8 50
172.21.229.209 FE 4 8 50
172.21.229.179 FE 4 8 50
172.21.229.180 BE 4 8 50 200
172.21.229.193 BE 4 8 50 200
172.21.229.149 BE 4 8 50 200
端口:9030
账号:test
密码:test123
登录starrocks
mysql -h172.21.229.229 -uroot -P 9030 (无密码方式)
mysql -h172.21.242.58 -uroot -P 9030 -p
#查看fe
SHOW frontends\G;
#查看be
SHOW PROC '/backends'\G;
#启动fe
./fe/bin/start_fe.sh --daemon (第一个fe节点这样操作)
#追加新fe节点这样操作
./fe/bin/start_fe.sh --helper 172.21.229.229:9010 --daemon
#启动be
./be/bin/start_be.sh --daemon
#添加fe
ALTER SYSTEM ADD FOLLOWER "172.21.229.209:9010";
ALTER SYSTEM ADD FOLLOWER "172.21.229.179:9010";
#添加be节点
ALTER SYSTEM ADD BACKEND "172.21.229.180:9050";
ALTER SYSTEM ADD BACKEND "172.21.229.193:9050";
ALTER SYSTEM ADD BACKEND "172.21.229.149:9050";
#创建账号
CREATE USER 'test' IDENTIFIED BY 'test123';
GRANT SELECT ON *.* TO 'test';
2.7.6 数字孪生-生产环境SR集群
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.43.147 FE 4 8 150 100
172.21.43.230 FE 4 8 150 100
172.21.43.188 FE 4 8 150 100
172.21.43.34 BE 4 8 150 300
172.21.42.41 BE 4 8 150 300
172.21.42.32 BE 4 8 150 300
172.21.42.215 BE 4 8 150 300
172.21.42.61 BE 4 8 150 300
172.21.42.89 BE 4 8 150 300
#创建新账号
CREATE USER 'prod' IDENTIFIED BY 'prod@123';
GRANT SELECT ON *.* TO 'prod';
#Starrocks集群安装
http://172.21.43.34:3000/login
账号密码:admin/123456
2.8 跳蚤市场项目
2.8.1 佛山测试环境-跳蚤市场StarRocks集群
集群资源配置
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.251.231 evoc-sr1 FE 4 8 100 50
172.21.251.234 evoc-sr2 FE 4 8 100 50
172.21.251.246 evoc-sr3 FE 4 8 100 50
172.21.251.172 evoc-sr4 BE 4 8 100 400
172.21.251.190 evoc-sr5 BE 4 8 100 400
172.21.251.196 evoc-sr6 BE 4 8 100 400
跳蚤市场集群环境配置安装。。。已记录详细部署过程,详见参照之前2.4.4章节部署过程,这里省略重复描述。
#修改配置文件
cd /usr/local/apps/stargo-v2.3
vim deploy-dev.yaml
vim repo.yaml
#执行安装命令
./stargo cluster deploy sr-cluster v3.1.8 deploy-dev.yaml
说明:安装成功。
#查看集群信息和集群状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
#通过浏览器访问集群FE、BE
http://172.21.251.231:8030/
http://172.21.251.172:8040/
#通过myslq访问StarRocks集群
mysql -h172.21.251.231 -uroot -P9030
SHOW FRONTENDS; //查看FE状态
show backends; //查看BE状态
show databases from default_catalog;
use information_schema;
show tables;
#重启集群
./stargo cluster restart sr-cluster
#部署监控prometheus
cd /usr/local/apps/prometheus
mkdir data //创建目录
vim prometheus.yml //配置文件
cd /etc/systemd/system/
vim prometheus.service
[Unit]
Description=Prometheus service
After=network.target
[Service]
User=root
Type=simple
ExecReload=/bin/sh -c "/bin/kill -1 `/usr/bin/pgrep prometheus`"
ExecStop=/bin/sh -c "/bin/kill -9 `/usr/bin/pgrep prometheus`"
ExecStart=/usr/local/apps/prometheus/prometheus --config.file=/usr/local/apps/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/apps/prometheus/data
[Install]
WantedBy=multi-user.target
systemctl daemon-reload #刷新文件
#prometheus启动
systemctl enable prometheus.service #开机启动
systemctl start prometheus.service #启动服务
systemctl status prometheus.service #启动状态
说明:启动成功,状态活跃。
prometheus默认使用的端口为9090,也可以使用netstat命令查看9090端口的状态:
#通过web浏览器访问Prometheus
Prometheus可以通过web页面进行简单的访问,通过浏览器打开9090端口,即可访问Prometheus的页面。
可使用谷歌浏览器访问Web界面:http://172.21.251.172:9090
http://172.21.251.172:9090/targets?search=
#Grafana安装配置和启动
配置操作省略,详情查看2.4章节。
#配置systemd管理
vim /usr/lib/systemd/system/grafana.service
#启动grafana
systemctl start grafana
#查看状态
systemctl status grafana
#设置开机启动
systemctl enable grafana
提示:启动正常, Active: active (running) 表示服务已成功启动。
#查看进程
Grafana默认使用的端口为3000,使用netstat命令验证端口监听状态:
netstat -nltp | grep 3000
#通过浏览器访问Grafana
使用浏览器访问172.21.251.172:3000,即可看到grafana页面,默认用户名和密码都是admin,初次登录会提示修改默认的登录密码,若暂时不希望修改密码,可以点击Skip跳过。跳过后即可进入到Grafana主界面。
这里使用默认密码登录,修改默认密码,账号:admin 新密码为:123456。
http://172.21.251.172:3000
#Grafana数据源配置
配置路径为:Configuration-->Data sources-->Add data source-->Prometheus
选择Prometheus数据源进行配置,需要修改的配置参数有:
7> Name:数据源的名称,可以自定义,例如starrocks_monitor。
8> URL:Prometheus的web地址:http://172.21.251.172:9090
9> 完成后单击页面下方的Save&Test,如果显示Data source is working,即表示数据源可用。
#配置DashBoard
导入文件:StarRocks-Overview-2.5.json
返回首页后,通过火狐浏览器访问Grafana上的快捷方式直达监控页面。
StarRocks Overview监控页面:
http://172.21.251.178:3000/d/wpcA3tG8z/starrocks-overview?orgId=1
2.8.1.1 mysql连接StarRocks集群
服务器地址:172.21.251.231,172.21.251.234,172.21.251.246 (可配置一个FE ip地址)
端口:9030
用户名:root
密码:evoc@1993
2.8.1.2 集群版本升级3.1.6->3.1.8
./stargo cluster upgrade sr-cluster v3.2.6
#查看集群信息和状态
说明:版本号已更新为v3.2.6,升级成功。
#mysql连接starrocks
mysql -h172.21.251.231 -uroot -P9030 -p
show frontends;
show backends;
2.8.1.3 复用测试环境,创建联调环境账号
#先用root用户登录
mysql -h172.21.251.231 -uroot -P 9030
#创建库
create database com9n1m_mall_db_liantiao;
#创建表
#创建新账号
CREATE USER 'test_liantiao' IDENTIFIED BY 'test_liantiao123';
#赋予权限
GRANT SELECT ON com9n1m_mall_db_liantiao.* TO 'test_liantiao';
#starrocks FE
172.21.251.231
172.21.251.234
172.21.251.246
# BE
172.21.251.172
172.21.251.190
172.21.251.196
端口:9030
联调账号:test_liantiao
联调账号密码:test_liantiao123
新库:com9n1m_mall_db_liantiao
#Flink(复用集群)
#job_manager
172.21.243.3
172.21.243.116
#task_manager
172.21.243.160
172.21.243.163
账号:flinktest
密码:flinktest123
2.8.2 光明-开发环境(公共环境)
#集群资源配置(FE和BE混合部署)
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.16.14.14 evoc-sr1 FE 4 4 100 100
172.16.14.15 evoc-sr2 FE 4 4 100 100
172.16.14.16 evoc-sr3 FE 4 4 100 100
172.16.14.14 evoc-sr1 BE 4 4 100 100
172.16.14.15 evoc-sr2 BE 4 4 100 100
172.16.14.16 evoc-sr3 BE 4 4 100 100
2.8.2.1 创建账号
mysql -h172.16.14.14 -uroot -P 9030
CREATE USER 'test' IDENTIFIED BY 'test123';
GRANT SELECT ON *.* TO 'test';
#修改密码
ALTER USER 'test' IDENTIFIED BY 'test123';
2.8.2.2 安装prometheus
systemctl start prometheus.service
systemctl status prometheus.service
http://172.16.14.14:9090/targets?search=
2.8.2.3 安装grafana
#配置systemd管理
vim /usr/lib/systemd/system/grafana.service
[Unit]
Description=Grafana
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/apps/grafana/bin/grafana server --homepath=/usr/local/apps/grafana
[Install]
WantedBy=multi-user.target
启动:systemctl start grafana
设置开机启动:systemctl enable grafana
查看状态:systemctl status grafana
http://172.16.14.14:3000/?orgId=1
2.8.3 佛山-预生产环境Starrocks集群
#集群资源配置
IP 主机名 角色 CPU(GB) 内存 系统盘(GB) 数据盘(GB)
172.21.242.58 FE 2 4 50
172.21.242.185 FE 2 4 50
172.21.242.237 FE 2 4 50
172.21.242.100 BE 2 4 50 300
172.21.242.146 BE 2 4 50 300
172.21.242.226 BE 2 4 50 300
#修改root密码
SET PASSWORD = PASSWORD('evoc@1993');
#创建新账号
CREATE USER 'prod' IDENTIFIED BY 'prod123';
GRANT SELECT ON *.* TO 'prod';
#更新密码
cd /root/.stargo/cluster/sr-cluster
vim meta.yaml
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)