• 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 端口
    端口端口名称端口说明
    8030http_portFE HTTP Server 端口
    9020rpc_portFE Thrift Server 端口
    9030query_portFE MySQL Server 端口
    9010edit_log_portFE 内部通讯端口
    • BE 端口
    端口端口名称端口说明
    9060be_portBE Thrift Server 端口
    8040webserver_portBE HTTP Server 端口
    9050heartbeat_service_portBE 心跳服务端口
    8060brpc_portBE BRPC 端口
    • CN 端口
    端口端口名称端口说明
    9060thrift_portCN Thrift Server 端口
    8040webserver_portCN HTTP Server 端口
    9050heartbeat_service_portCN 心跳服务端口
    8060brpc_portCN BRPC 端口
    • FE 元数据存放位置:meta_dir = /data/starrocks/metadata
    • BE 数据存放目录:storage_root_path = /data/starrocks/storage

    2.部署服务器

    集群名IP 地址实例
    sr001192.168.249.131FE
    sr002192.168.249.132BE
    sr003192.168.249.133BE
    sr004192.168.249.134CN

    规划 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 台服务器的机器名
    #-- 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3)安装GCC

    yum -y install gcc
    gcc --version
    
    • 1
    • 2

    4)关闭交换分区(swap)

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

    5)时钟同步

    • 安装 rdate 软件包
    #安装rdate
    yum -y install rdate
    
    #同步时间
    rdate -s time-b.nist.gov
    
    #查看时间是否正确
    date
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 安装定时器软件包
    yum -y install crontab
    
    • 1
    • 创建 crontab 任务
    crontab -e
    
    • 1
    • 写入内容:20 秒同步一次
    */20 * * * * /usr/bin/rdate -s time-b.nist.gov > /dev/null 2>&1
    
    • 1
    • 重启 crontab 服务
    service crond reload
    
    • 1
    • 其它时间同步服务器节点
    节点位置节点域名
    东南大学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)关闭防火墙

    • 可禁用防火墙,或配置开放的端口,后者比较安全
    #--关闭防火墙
    systemctl stop firewalld.service
    #--开机禁用防火墙
    systemctl disable firewalld.service
    #--防火墙状态
    systemctl status firewalld.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    7)SELinux

    • 禁用 SELinux
    sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    sed -i 's/SELINUXTYPE/#SELINUXTYPE/' /etc/selinux/config
    setenforce 0
    
    • 1
    • 2
    • 3

    8)LANG 变量

    echo "export LANG=en_US.UTF8" >> /etc/profile
    source /etc/profile
    
    • 1
    • 2

    9)时区

    cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    hwclock
    
    • 1
    • 2

    10)ulimit 设置

    • 最大文件描述符
    ulimit -n 655350
    
    • 1
    • 最大用户进程
    ulimit -u 40960
    
    • 1

    11)网络配置

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

    12)高并发配置

    echo 120000 > /proc/sys/kernel/threads-max
    echo 262144 > /proc/sys/vm/max_map_count
    echo 200000 > /proc/sys/kernel/pid_max
    
    • 1
    • 2
    • 3

    4.集群部署

    1)安装FE

    FE 服务器:192.168.249.131

    • 创建安装目录
    mkdir /opt/starrocks
    cd /opt/starrocks
    
    • 1
    • 2
    • 下载安装包,当前安装版本:2.5.13

    Download StarRocks Free | StarRocks

    wget https://releases.starrocks.io/starrocks/StarRocks-2.5.13.tar.gz
    
    • 1
    • 解压安装包
    tar -xzvf StarRocks-2.5.13.tar.gz
    
    • 1
    • 移动 FE 文件夹到安装目录:/opt/starrocks/
    mv /opt/starrocks/StarRocks-2.5.13/fe/ /opt/starrocks/
    
    • 1
    • 创建 FE 元数据目录
    mkdir -p /data/starrocks/metadata
    chmod -R 777 /data/starrocks/metadata
    
    • 1
    • 2
    • 编辑配置文件
    vim ./fe/conf/fe.conf
    
    • 1
    • 修改内容:
    # JAVA_OPTS 上面一行
    JAVA_HOME=/opt/java/jdk-11.0.19
    
    # 绑定 IP
    priority_networks=192.168.249.131/24
    
    # 元数据目录
    meta_dir=/data/starrocks/metadata
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 启动 FE
    cd /opt/starrocks
    # 启动
    ./fe/bin/start_fe.sh --daemon
    # (备用)停止
    # ./fe/bin/stop_fe.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 测试启动是否成功,方法一:
    cat fe/log/fe.log | grep thrift
    
    • 1
    • 输出以下内容,表示启动成功
    thrift server started with port 9020.
    
    • 1
    • 测试启动是否成功,方法二:
    1. 浏览器访问:http://192.168.249.131:8030/api/bootstrap

    2. 成功提示:

    {"replayedJournalId":0,"queryPort":0,"rpcPort":0,"feStartTime":0,"status":"OK","msg":"Success"}
    
    • 1

    2)拷贝BE

    FE 服务器:192.168.249.131

    • BE 服务器和 CN 服务器创建目录
    mkdir -p /opt/starrocks
    
    • 1
    • 拷贝 BE 安装包至 BE 服务器和 CN 服务器
    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
    
    • 1
    • 2
    • 3

    3)安装BE

    BE 服务器:192.168.249.132、192.168.249.133

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

    priority_networks=192.168.249.132/24

    priority_networks=192.168.249.133/24

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

    ​ http://192.168.249.132:8040/api/health

    ​ http://192.168.249.133:8040/api/health

    1. 成功提示:
    {"status": "OK","msg": "To Be Added"}
    
    • 1

    4)安装CN【可选】

    BE 服务器:192.168.249.134

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

    • 创建安装目录
    cd /opt/starrocks
    
    • 1
    • 修改配置文件
    vim ./be/conf/cn.conf
    
    • 1
    • 修改内容:
    1. 绑定服务器 IP;注意区分不同服务器 IP
    # 绑定 IP
    priority_networks=192.168.249.134/24
    
    # JAVA_HOME
    JAVA_HOME=/opt/java/jdk-11.0.19
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 限制一个进程可以拥有的VMA(虚拟内存区域)的数量
    vim /etc/sysctl.conf
    
    • 1
    • 写入内容
    vm.max_map_count=2000000
    fs.file-max=6553560
    
    • 1
    • 2
    • 加载并应用配置文件
    sysctl -p
    
    • 1
    • 启动 BE
    cd /opt/starrocks
    # 启动
    ./be/bin/start_cn.sh --daemon
    #(备用)停止
    # ./be/bin/stop_cn.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 测试启动是否成功
    cat be/log/cn.INFO | grep heartbeat
    
    • 1
    • 输出以下内容,表示启动成功
    heartbeat has started listening port on 9050.
    
    • 1

    5)安装MySQL客户端

    可忽略,使用 Navicat 替代

    FE 服务器:192.168.249.131

    • 创建安装目录
    mkdir /opt/mysql
    cd /opt/mysql
    
    • 1
    • 2
    • 下载安装软件包
    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
    
    • 1
    • 2
    • 3
    • 4
    • 安装 RPM 软件包
    rpm -Uvh *.rpm --nodeps --force
    
    • 1

    6)集群搭建

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

    扩容缩容 StarRocks

    All commands @ StarRocks Docs

    # 备用(删除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";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 修改密码
    SET PASSWORD FOR 'root' = PASSWORD('srdb123');
    
    • 1
    • 设置数据库时区

    设置时区 @ timezone @ StarRocks Docs

    # 查询当前时间
    select NOW();
    # 查询时区
    SHOW VARIABLES LIKE '%time_zone%';
    # 设置时区
    SET global time_zone = 'Asia/Shanghai';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 节点状态
    # 查询 FE 节点状态
    SHOW PROC '/frontends'\G
    # 查询 BE 节点状态
    SHOW PROC '/backends'\G
    # 查询 CN
    SHOW PROC '/compute_nodes'\G
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 设置用户的最大连接数

    SHOW PROPERTY | StarRocks

    SET PROPERTY | StarRocks

    # 查询最大连接数
    SHOW PROPERTY;
    SHOW PROPERTY FOR 'root';
    # 设置最大连接数
    SET PROPERTY FOR 'root' 'max_user_connections' = '1000';
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7)测试

    • 创建数据库(MySQL 客户端执行)
    create database demo;
    
    • 1
    • 创建数据表
    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"
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 输出表结构
    desc example_tb;
    
    • 1
    • 插入数据
    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 查询数据
    SELECT * FROM example_tb;
    
    • 1

    8)WebUI

    • 浏览器访问:http://192.168.249.131:8030
    • 账号:root
    • 密码:输入客户端修改的密码(srdb123);默认无密码

    5.服务自启动

    1)配置FE自启动

    • 创建 starrocks-fe.service ,写入内容(根据实际情况修改 ExecStartExecStop
    cat > /etc/systemd/system/starrocks-fe.service <
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 查看文件
    cat /etc/systemd/system/starrocks-fe.service
    
    • 1

    2)配置BE自启动

    • 创建 starrocks-be.service ,写入内容(根据实际情况修改 ExecStartExecStop
    cat > /etc/systemd/system/starrocks-be.service <
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 查看文件
    cat /etc/systemd/system/starrocks-be.service
    
    • 1

    3)配置CN自启动

    • 创建 starrocks-cn.service ,写入内容(根据实际情况修改 ExecStartExecStop
    cat > /etc/systemd/system/starrocks-cn.service <
cat /etc/systemd/system/starrocks-cn.service
  • 1

4)启动服务

systemctl daemon-reload
  • 1
systemctl start starrocks-fe
systemctl start starrocks-be
systemctl start starrocks-cn
  • 1
  • 2
  • 3
systemctl enable starrocks-fe
systemctl enable starrocks-be
systemctl enable starrocks-cn
  • 1
  • 2
  • 3
systemctl status starrocks-fe
systemctl status starrocks-be
systemctl status starrocks-cn
  • 1
  • 2
  • 3
  • 相关阅读:
    容器服务(三)自动化监控 Prometheus、Grafana
    tomcat springboot war包 部署
    互联网时代下的品牌传播怎么做
    spring事务
    DS-Net:可落地的动态网络,实际加速1.62倍,快改造起来 | CVPR 2021 Oral
    【Linux】在Xilinx平台上实现UVC Gadget(2)- 解决dwc3驱动bug
    个人数学建模算法库之线性规划模型
    shell脚本的国际化——gettext与pot、po、mo
    猿创征文|搭建第一个Spring Boot项目
    struts2.x笔记
  • 原文地址:https://blog.csdn.net/u011424614/article/details/134277602