CentOS7安装部署StarRocks

文章目录

CentOS7安装部署StarRocks

一、前言

1.简介

  • Apache Doris:Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。
  • StarRocks:StarRocks 基于 Apache Doris (incubating) 0.13 打造;StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。
  • 镜舟数据库:基于 StarRocks 发展起来的企业级商用数据库,满足金融、物流、汽车、能源、医疗等政企客户对技术支持、解决方案、生态建设、售后保障等方面的极致要求。

2.环境

  • Linux 发行版:CentOS-7-x86_64-DVD-1804.iso
  • JDK 版本:Java SE Development Kit 11.0.19
  • StarRocks 版本:2.5.13

StarRocks 开发文档

镜舟数据库官网

Doris 介绍

SelectDB 官网

CentOS7安装部署Doris

CentOS7安装部署CDH6.2.1

CentOS基础操作命令

CentOS对换home分区与root分区的存储空间

CentOS7安装部署Java11

CentOS7安装部署MySQL80

二、正文

1.StarRocks基础

1)架构图

系统架构 @ Architecture @ StarRocks Docs

StarRocks 存算分离架构 @ StarRocks Docs

  • FE 是 StarRocks 的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。每个 FE 节点都会在内存保留一份完整的元数据,这样每个 FE 节点都能够提供无差别的服务。

对于 StarRocks 生产集群,建议至少部署三个 Follower FE 节点,以防止单点故障。

  • BE 是 StarRocks 的后端节点,负责数据存储、SQL执行等工作。

对于 StarRocks 生产集群,建议至少部署三个 BE 节点,这些节点会自动形成一个 BE 高可用集群,避免由于发生单点故障而影响数据可靠性和服务可用性。

通过增加 BE 节点的数量来实现查询的高并发。

  • Compute Node(CN)是一种无状态的计算服务,本身不存储数据,仅负责 SQL 执行;通过添加 CN 节点为查询提供额外的计算资源,而无需改变集群中的数据分布;CN 节点自 v2.4 版本起支持。

2)通讯端口

检查环境配置 | StarRocks

  • FE 端口
端口 端口名称 端口说明
8030 http_port FE HTTP Server 端口
9020 rpc_port FE Thrift Server 端口
9030 query_port FE MySQL Server 端口
9010 edit_log_port FE 内部通讯端口
  • BE 端口
端口 端口名称 端口说明
9060 be_port BE Thrift Server 端口
8040 webserver_port BE HTTP Server 端口
9050 heartbeat_service_port BE 心跳服务端口
8060 brpc_port BE BRPC 端口
  • CN 端口
端口 端口名称 端口说明
9060 thrift_port CN Thrift Server 端口
8040 webserver_port CN HTTP Server 端口
9050 heartbeat_service_port CN 心跳服务端口
8060 brpc_port CN BRPC 端口
  • FE 元数据存放位置:meta_dir = /data/starrocks/metadata
  • BE 数据存放目录:storage_root_path = /data/starrocks/storage

2.部署服务器

集群名 IP 地址 实例
sr001 192.168.249.131 FE
sr002 192.168.249.132 BE
sr003 192.168.249.133 BE
sr004 192.168.249.134 CN

规划 StarRocks 集群 @ plan_cluster @ StarRocks Docs

通常,FE 服务不会消耗大量的 CPU 和内存资源。建议您为每个 FE 节点分配 8 个 CPU 内核和 16 GB RAM。

与 FE 服务不同,如果应用程序需要在大型数据集上处理高度并发或复杂的查询,BE 服务可能会使用大量 CPU 和内存资源。因此,建议为每个 BE 节点分配 16 个 CPU 内核和 64 GB RAM。

3.安装基础环境

在 4 台服务器上执行基础环境的安装和配置

1)安装JDK 11

2)修改机器名

  • 修改 4 台服务器的机器名
cmd 复制代码
#-- sr001
hostnamectl set-hostname sr001 --static
hostnamectl set-hostname sr001 --transient

#-- sr002
hostnamectl set-hostname sr002 --static
hostnamectl set-hostname sr002 --transient

#-- sr003
hostnamectl set-hostname sr003 --static
hostnamectl set-hostname sr003 --transient

#-- sr004
hostnamectl set-hostname sr004 --static
hostnamectl set-hostname sr004 --transient

3)安装GCC

cmd 复制代码
yum -y install gcc
gcc --version

4)关闭交换分区(swap)

  • 查询交换分区
cmd 复制代码
swapon --show
  • 关闭交换分区
cmd 复制代码
# 备用:打开交换分区:swapon -a
swapoff -a
  • 编辑 /etc/fstab
cmd 复制代码
vim /etc/fstab
  • 加入注释
cmd 复制代码
# /dev/mapper/centos-swap swap                    swap    defaults        0 0

5)时钟同步

  • 安装 rdate 软件包
cmd 复制代码
#安装rdate
yum -y install rdate

#同步时间
rdate -s time-b.nist.gov

#查看时间是否正确
date
  • 安装定时器软件包
cmd 复制代码
yum -y install crontab
  • 创建 crontab 任务
cmd 复制代码
crontab -e
  • 写入内容:20 秒同步一次
cmd 复制代码
*/20 * * * * /usr/bin/rdate -s time-b.nist.gov > /dev/null 2>&1
  • 重启 crontab 服务
cmd 复制代码
service crond reload
  • 其它时间同步服务器节点
节点位置 节点域名
东南大学 s1d.time.edu.cn
清华大学 s1e.time.edu.cn
清华大学 s2a.time.edu.cn
清华大学 s2b.time.edu.cn
北京邮电大学 s2c.time.edu.cn
上海交通大学 ntp.sjtu.edu.cn
北京邮电大学 s1a.time.edu.cn
北京大学 s1c.time.edu.cn
香港中文大学 clock.cuhk.edu.hk

6)关闭防火墙

  • 可禁用防火墙,或配置开放的端口,后者比较安全
cmd 复制代码
#--关闭防火墙
systemctl stop firewalld.service
#--开机禁用防火墙
systemctl disable firewalld.service
#--防火墙状态
systemctl status firewalld.service

7)SELinux

  • 禁用 SELinux
cmd 复制代码
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sed -i 's/SELINUXTYPE/#SELINUXTYPE/' /etc/selinux/config
setenforce 0

8)LANG 变量

cmd 复制代码
echo "export LANG=en_US.UTF8" >> /etc/profile
source /etc/profile

9)时区

cmd 复制代码
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock

10)ulimit 设置

  • 最大文件描述符
cmd 复制代码
ulimit -n 655350
  • 最大用户进程
cmd 复制代码
ulimit -u 40960

11)网络配置

  • 如果系统当前因后台进程无法处理的新连接而溢出,则允许系统重置新连接
cmd 复制代码
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
  • 设置监听 Socket 队列的最大连接请求数为 1024
cmd 复制代码
echo 1024 | sudo tee /proc/sys/net/core/somaxconn

12)高并发配置

cmd 复制代码
echo 120000 > /proc/sys/kernel/threads-max
echo 262144 > /proc/sys/vm/max_map_count
echo 200000 > /proc/sys/kernel/pid_max

4.集群部署

1)安装FE

FE 服务器:192.168.249.131

  • 创建安装目录
cmd 复制代码
mkdir /opt/starrocks
cd /opt/starrocks
  • 下载安装包,当前安装版本:2.5.13

Download StarRocks Free | StarRocks

cmd 复制代码
wget https://releases.starrocks.io/starrocks/StarRocks-2.5.13.tar.gz
  • 解压安装包
cmd 复制代码
tar -xzvf StarRocks-2.5.13.tar.gz
  • 移动 FE 文件夹到安装目录:/opt/starrocks/
cmd 复制代码
mv /opt/starrocks/StarRocks-2.5.13/fe/ /opt/starrocks/
  • 创建 FE 元数据目录
cmd 复制代码
mkdir -p /data/starrocks/metadata
chmod -R 777 /data/starrocks/metadata
  • 编辑配置文件
cmd 复制代码
vim ./fe/conf/fe.conf
  • 修改内容:
cmd 复制代码
# JAVA_OPTS 上面一行
JAVA_HOME=/opt/java/jdk-11.0.19

# 绑定 IP
priority_networks=192.168.249.131/24

# 元数据目录
meta_dir=/data/starrocks/metadata
  • 启动 FE
cmd 复制代码
cd /opt/starrocks
# 启动
./fe/bin/start_fe.sh --daemon
# (备用)停止
# ./fe/bin/stop_fe.sh
  • 测试启动是否成功,方法一:
cmd 复制代码
cat fe/log/fe.log | grep thrift
  • 输出以下内容,表示启动成功
cmd 复制代码
thrift server started with port 9020.
  • 测试启动是否成功,方法二:
  1. 浏览器访问:http://192.168.249.131:8030/api/bootstrap

  2. 成功提示:

html 复制代码
{"replayedJournalId":0,"queryPort":0,"rpcPort":0,"feStartTime":0,"status":"OK","msg":"Success"}

2)拷贝BE

FE 服务器:192.168.249.131

  • BE 服务器和 CN 服务器创建目录
cmd 复制代码
mkdir -p /opt/starrocks
  • 拷贝 BE 安装包至 BE 服务器和 CN 服务器
cmd 复制代码
scp -r /opt/starrocks/StarRocks-2.5.13/be root@192.168.249.132:/opt/starrocks/be
scp -r /opt/starrocks/StarRocks-2.5.13/be root@192.168.249.133:/opt/starrocks/be
scp -r /opt/starrocks/StarRocks-2.5.13/be root@192.168.249.134:/opt/starrocks/be

3)安装BE

BE 服务器:192.168.249.132、192.168.249.133

  • 创建安装目录
cmd 复制代码
cd /opt/starrocks
  • 创建存储目录
cmd 复制代码
mkdir -p /data/starrocks/storage
chmod -R 777 /data/starrocks/storage
  • 修改配置文件
cmd 复制代码
vim ./be/conf/be.conf
  • 修改内容:
  1. 绑定服务器 IP;注意区分不同服务器 IP

priority_networks=192.168.249.132/24

priority_networks=192.168.249.133/24

cmd 复制代码
# 绑定 IP
priority_networks=192.168.249.132/24

# 存储目录
storage_root_path=/data/starrocks/storage

# JAVA_HOME
JAVA_HOME=/opt/java/jdk-11.0.19
  • 限制一个进程可以拥有的VMA(虚拟内存区域)的数量
cmd 复制代码
vim /etc/sysctl.conf
  • 写入内容
cmd 复制代码
vm.max_map_count=2000000
fs.file-max=6553560
  • 加载并应用配置文件
cmd 复制代码
sysctl -p
  • 启动 BE
cmd 复制代码
cd /opt/starrocks
# 启动
./be/bin/start_be.sh --daemon
# (备用)停止
# ./be/bin/stop_be.sh
  • 测试启动是否成功,方法一:
cmd 复制代码
cat be/log/be.INFO | grep heartbeat
  • 输出以下内容,表示启动成功
cmd 复制代码
thrift server started with port 9020.
  • 测试启动是否成功,方法二:
  1. 浏览器访问:

http://192.168.249.132:8040/api/health

http://192.168.249.133:8040/api/health

  1. 成功提示:
html 复制代码
{"status": "OK","msg": "To Be Added"}

4)安装CN【可选】

BE 服务器:192.168.249.134

CN 节点是 StarRocks 的可选组件,CN 节点自 v2.4 版本起支持

  • 创建安装目录
cmd 复制代码
cd /opt/starrocks
  • 修改配置文件
cmd 复制代码
vim ./be/conf/cn.conf
  • 修改内容:
  1. 绑定服务器 IP;注意区分不同服务器 IP
cmd 复制代码
# 绑定 IP
priority_networks=192.168.249.134/24

# JAVA_HOME
JAVA_HOME=/opt/java/jdk-11.0.19
  • 限制一个进程可以拥有的VMA(虚拟内存区域)的数量
cmd 复制代码
vim /etc/sysctl.conf
  • 写入内容
cmd 复制代码
vm.max_map_count=2000000
fs.file-max=6553560
  • 加载并应用配置文件
cmd 复制代码
sysctl -p
  • 启动 BE
cmd 复制代码
cd /opt/starrocks
# 启动
./be/bin/start_cn.sh --daemon
#(备用)停止
# ./be/bin/stop_cn.sh
  • 测试启动是否成功
cmd 复制代码
cat be/log/cn.INFO | grep heartbeat
  • 输出以下内容,表示启动成功
cmd 复制代码
heartbeat has started listening port on 9050.

5)安装MySQL客户端

可忽略,使用 Navicat 替代

FE 服务器:192.168.249.131

  • 创建安装目录
cmd 复制代码
mkdir /opt/mysql
cd /opt/mysql
  • 下载安装软件包
cmd 复制代码
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-common-8.0.25-1.el7.x86_64.rpm 
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm 
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-libs-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-8.0.25-1.el7.x86_64.rpm
  • 安装 RPM 软件包
cmd 复制代码
rpm -Uvh *.rpm --nodeps --force

6)集群搭建

  • MySQL 客户端连接(无密码)
cmd 复制代码
mysql -h 192.168.249.131 -P 9030 -uroot -p
  • 新增两个 BE 和 一个 CN

扩容缩容 StarRocks

All commands @ StarRocks Docs

cmd 复制代码
# 备用(删除BE节点):ALTER SYSTEM DROPP BACKEND "192.168.249.132:9050";
ALTER SYSTEM ADD BACKEND "192.168.249.132:9050","192.168.249.133:9050";
# CN 节点(可选)
# 备用(删除CN节点):ALTER SYSTEM DROP COMPUTE NODE "192.168.249.134:9050";
ALTER SYSTEM ADD COMPUTE NODE "192.168.249.134:9050";
  • 修改密码
cmd 复制代码
SET PASSWORD FOR 'root' = PASSWORD('srdb123');
  • 设置数据库时区

设置时区 @ timezone @ StarRocks Docs

cmd 复制代码
# 查询当前时间
select NOW();
# 查询时区
SHOW VARIABLES LIKE '%time_zone%';
# 设置时区
SET global time_zone = 'Asia/Shanghai';
  • 节点状态
cmd 复制代码
# 查询 FE 节点状态
SHOW PROC '/frontends'\G
# 查询 BE 节点状态
SHOW PROC '/backends'\G
# 查询 CN
SHOW PROC '/compute_nodes'\G

7)测试

  • 创建数据库(MySQL 客户端执行)
cmd 复制代码
create database demo;
  • 创建数据表
cmd 复制代码
CREATE TABLE IF NOT EXISTS example_tb
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `date` DATE NOT NULL COMMENT "数据灌入日期时间",
    `city` VARCHAR(20) COMMENT "用户所在城市",
    `age` SMALLINT COMMENT "用户年龄",
    `sex` TINYINT COMMENT "用户性别",
    `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",
    `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",
    `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
    `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
)
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
"replication_num" = "1"
);
  • 输出表结构
cmd 复制代码
desc example_tb;
  • 插入数据
cmd 复制代码
insert into example_tb values
(10000,"2017-10-01","北京",20,0,"2017-10-01 06:00:00",20,10,10),
(10000,"2017-10-01","北京",20,0,"2017-10-01 07:00:00",15,2,2),
(10001,"2017-10-01","北京",30,1,"2017-10-01 17:05:45",2,22,22),
(10002,"2017-10-02","上海",20,1,"2017-10-02 12:59:12",200,5,5),
(10003,"2017-10-02","广州",32,0,"2017-10-02 11:20:00",30,11,11),
(10004,"2017-10-01","深圳",35,0,"2017-10-01 10:00:15",100,3,3),
(10004,"2017-10-03","深圳",35,0,"2017-10-03 10:20:22",11,6,6);
  • 查询数据
cmd 复制代码
SELECT * FROM example_tb;

8)WebUI

5.服务自启动

1)配置FE自启动

  • 创建 starrocks-fe.service ,写入内容(根据实际情况修改 ExecStartExecStop
cmd 复制代码
cat > /etc/systemd/system/starrocks-fe.service <<EOF
[Unit]
Description=StarRocks FE
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=root
Group=root
LimitCORE=infinity
LimitNOFILE=200000
Restart=on-failure
RestartSec=30
StartLimitInterval=120
StartLimitBurst=3
KillMode=none
ExecStart=/opt/starrocks/fe/bin/start_fe.sh --daemon 
ExecStop=/opt/starrocks/fe/bin/stop_fe.sh

[Install]
WantedBy=multi-user.target
EOF
  • 查看文件
cmd 复制代码
cat /etc/systemd/system/starrocks-fe.service

2)配置BE自启动

  • 创建 starrocks-be.service ,写入内容(根据实际情况修改 ExecStartExecStop
cmd 复制代码
cat > /etc/systemd/system/starrocks-be.service <<EOF
[Unit]
Description=StarRocks BE
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=root
Group=root
LimitCORE=infinity
LimitNOFILE=200000
Restart=on-failure
RestartSec=30
StartLimitInterval=120
StartLimitBurst=3
KillMode=none
ExecStart=/opt/starrocks/be/bin/start_be.sh --daemon
ExecStop=/opt/starrocks/be/bin/stop_be.sh

[Install]
WantedBy=multi-user.target
EOF
  • 查看文件
cmd 复制代码
cat /etc/systemd/system/starrocks-be.service

3)配置CN自启动

  • 创建 starrocks-cn.service ,写入内容(根据实际情况修改 ExecStartExecStop
cmd 复制代码
cat > /etc/systemd/system/starrocks-cn.service <<EOF
[Unit]
Description=StarRocks CN
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=root
Group=root
LimitCORE=infinity
LimitNOFILE=200000
Restart=on-failure
RestartSec=30
StartLimitInterval=120
StartLimitBurst=3
KillMode=none
ExecStart=/opt/starrocks/be/bin/start_cn.sh --daemon
ExecStop=/opt/starrocks/be/bin/stop_cn.sh

[Install]
WantedBy=multi-user.target
EOF
  • 查看文件
cmd 复制代码
cat /etc/systemd/system/starrocks-cn.service

4)启动服务

  • 重新加载配置
cmd 复制代码
systemctl daemon-reload
  • 启动服务
cmd 复制代码
systemctl start starrocks-fe
systemctl start starrocks-be
systemctl start starrocks-cn
  • 设置开机自启动
cmd 复制代码
systemctl enable starrocks-fe
systemctl enable starrocks-be
systemctl enable starrocks-cn
  • 查询服务状态
cmd 复制代码
systemctl status starrocks-fe
systemctl status starrocks-be
systemctl status starrocks-cn
相关推荐
小强签名设计2 天前
SQL语句整理五-StarRocks
数据库·starrocks·sql
京河小蚁4 天前
[bug] StarRocks borker load意向之外的bug
starrocks·broker
m0_375599734 天前
StarRocks:存算一体模式部署
starrocks
一条路上的咸鱼19 天前
离线数据同步变迁
starrocks·数据同步
hankl199022 天前
StarRocks-同步hive数据
starrocks·数据仓库
一条路上的咸鱼25 天前
一种小资源情况下RDS数据实时同步StarRocks方案
starrocks·数据同步
roman_日积跬步-终至千里1 个月前
【StarRocks】starrocks 3.2.12 【share-nothing】 多Be集群容器化部署
starrocks
crossoverJie1 个月前
推荐一些值得学习的开源项目和框架
starrocks·开源·pulsar
houzhizhen1 个月前
StarRocks 架构
starrocks
crossoverJie1 个月前
StarRocks 物化视图刷新流程及原理
数据库·starrocks