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
相关推荐
crossoverJie2 天前
推荐一些值得学习的开源项目和框架
starrocks·开源·pulsar
houzhizhen4 天前
StarRocks 架构
starrocks
crossoverJie4 天前
StarRocks 物化视图刷新流程及原理
数据库·starrocks
Double@加贝1 个月前
Starrocks部署前期准备
starrocks
救救孩子把1 个月前
Starrocks表的数据库字段类型及与MySQL 的差异
数据库·starrocks·mysql
鸿乃江边鸟1 个月前
StarRocks 中如何做到查询超时(QueryTimeout)
大数据·starrocks
偏振万花筒2 个月前
【性能优化】低配starRocks常驻内存优化
大数据·数据库·starrocks·性能优化
凉茶冰4 个月前
DataX迁移数据到StarRocks超大表报too many version问题记录
starrocks·python·datax
AskHarries4 个月前
Spring Boot集成starrocks快速入门Demo
java·starrocks·spring boot·后端·mysql·streamload
csdn5659738504 个月前
一文入门云上StarRocks | EMR Serverless StarRocks
starrocks·云原生·serverless·emr