[toc] 本篇主要安装及测试以下组件

  • FE:FrontEnd简称FE,是StarRocks的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。
  • BE:BackEnd简称BE,是StarRocks的后端节点,负责数据存储,计算执行,以及compaction,副本管理等工作。
  • MySQL-client:MySQL 命令行客户端,可以在服务器连接登录支持mysql协议的DB,StarRocks支持MySQL协议,所以也可以使用
  • SSB:Star schema benchmark(以下简称SSB)是学术界和工业界广泛使用的一个星型模型测试集,通过这个测试集合也可以容易的和其他OLAP产品进行性能对比。

一、部署准备

部署环境: 测试时候单机只用到最多8C,内存不超过16G ip|机器配置|FE|BE|MySQL-client|SSB -|-|-|-|-|- 172.16.11.110 |32C60G|❌|✅|❌|❌ 172.16.11.111 |32C60G|❌|✅|❌|❌ 172.16.11.112 |32C60G|❌|✅|❌|❌ 172.16.11.113 |32C60G|✅|✅|✅|✅

部署环境: 测试时候单机只用到最多8C,内存不超过16G 部署组件|部署路径 -|- FE|部署目录:/opt/StarRocks-2.0.0-GA/fe日志目录:/opt/StarRocks-2.0.0-GA/fe/log数据目录:/data/disk01/starrocks/storage BE|部署目录:/opt/StarRocks-2.0.0-GA/be日志目录:/opt/StarRocks-2.0.0-GA/be/log数据存储目录:/data/disk01/starrocks/storage ssb|部署目录:/data/disk01/ssb-poc/操作目录:/data/disk01/ssb-poc/outputmock数据目录:/data/disk01/ssb-poc/output/mock_data

  1. 下载资源包 wget https://www.starrocks.com/zh-CN/download/request-download/11
  2. 解压到/opt tar zxvf StarRocks-2.0.0-GA.tar.gz -C /opt

二、部署FE

  1. 创建元数据目录
cd /opt/StarRocks-2.0.0-GA/fe/
mkdir -p meta
  1. 启动FE进程 bin/start_fe.sh --daemon
  2. 查看日志是否成功启动
  • 如果FE启动失败,可能是由于端口号被占用,修改配置文件conf/fe.conf中的端口号http_port。
  • 使用jps命令查看java进程确认"StarRocksFe"存在。
  1. 也可以使用浏览器访问8030端口, 打开StarRocks的WebUI, 用户名为root, 密码为空

三、MySQL客户端访问FE

  1. 安装mysql-client(如果本机有mysql-client可以忽略此步骤)
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
yum install mysql-community-client.x86_64 -y
#安装失败GPG Key
#修改mysql-community.repogpgcheck=0
#再重新安装
  1. 连接starrocks mysql -h 127.0.0.1 -P9030 -uroot
  2. 查看FE状态:
mysql> SHOW PROC '/frontends'\G
*************************** 1. row ***************************
             Name: 172.16.11.113_9010_1643166244538
               IP: 172.16.11.113
         HostName: cdh-node8
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 350656662
             Join: true
            Alive: true
ReplayedJournalId: 663
    LastHeartbeat: 2022-01-26 11:40:51
         IsHelper: true
           ErrMsg: 
        StartTime: 2022-01-26 11:04:17
          Version: 2.0.0-GA-2ffdf30
1 row in set (0.01 sec)

Role为FOLLOWER说明这是一个能参与选主的FE;IsMaster为true,说明该FE当前为主节点。

四、部署BE

  1. 创建数据目录
cd /opt/StarRocks-2.0.0-GA/be/
mkdir -p /data/disk01/starrocks/storage
#修改be配置,添加配置
storage_root_path = /data/disk01/starrocks/storage
  1. 通过mysql客户端添加BE节点
mysql>ALTER SYSTEM ADD BACKEND "172.16.11.113:9050";
mysql>ALTER SYSTEM ADD BACKEND "172.16.11.112:9050";
mysql>ALTER SYSTEM ADD BACKEND "172.16.11.111:9050";
# 这里IP地址为和priority_networks设置匹配的IP,portheartbeat_service_port,默认为9050
#如出现错误,需要删除BE节点,应用下列命令:
#alter system decommission backend "be_host:be_heartbeat_service_port";
  1. 启动BE: /opt/StarRocks-2.0.0-GA/be/bin/start_be.sh --daemon
  2. 查看BE状态, 确认BE就绪
mysql> SHOW PROC '/backends'\G
*************************** 1. row ***************************
            BackendId: 10003
              Cluster: default_cluster
                   IP: 172.16.11.113
             HostName: cdh-node8
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8040
             BrpcPort: 8060
        LastStartTime: 2022-01-26 11:49:21
        LastHeartbeat: 2022-01-26 11:49:46
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 10
     DataUsedCapacity: .000 
        AvailCapacity: 930.853 GB
        TotalCapacity: 984.179 GB
              UsedPct: 5.42 %
       MaxDiskUsedPct: 5.42 %
               ErrMsg: 
              Version: 2.0.0-GA-2ffdf30
               Status: {"lastSuccessReportTabletsTime":"2022-01-26 11:49:21"}
    DataTotalCapacity: 930.853 GB
          DataUsedPct: 0.00 %
1 row in set (0.00 sec)

如果isAlive为true,则说明BE正常接入集群。如果BE没有正常接入集群,请查看log目录下的be.WARNING日志文件确定原因。

五、性能测试

  1. 下载ssb-poc工具包并编译
wget https://starrocks-public.oss-cn-zhangjiakou.aliyuncs.com/ssb-poc-0.9.3.zip
unzip ssb-poc-0.9.3.zip
mv ssb-poc-0.9.3 /data/disk01
cd /data/disk01/ssb-poc-0.9.3/ssb-poc
make && make install  

所有相关工具都会安装到output目录

  1. 生成100G数据脚本
cd output
chmod +x bin/*.sh
bin/gen-ssb.sh 100 mock_data
  1. 执行建表语句
# 测试100G数据
bin/create_db_table.sh ddl_100

完成后我们创建了6张表:lineorder, supplier, dates, customer, part, lineorder_flat 数量最大的表6亿条

  1. 通过stream load导入数据sudo sh bin/stream_load.sh mock_data
  2. 首先在客户端执行命令,修改并行度(类似clickhouse set max_threads = 8)
# 设置并行度,建议是每个集群节点逻辑核数的一半,以下以8为例
set global parallel_fragment_exec_instance_num = 8;

修改配置文件:ssb-poc/output/conf/starrocks.conf

[starrocks]
# for mysql cmd
# 从test1改为FE的ip或者host
mysql_host: 172.16.11.113
  1. 测试ssb多表查询 (SQL 参见 share/ssb_test/sql/ssb/):bin/benchmark.sh -p -d ssb
  2. 测试结果
  3. 向宽表中插入数据:bin/flat_insert.sh
  4. 测试宽表性能:bin/benchmark.sh -p -d ssb-flat

六、问题

多网卡导致启动失败

wait catalog to be ready. FE type: UNKNOWN. is ready: false

  1. 第一次启动失败,因为存在多网卡,解决办法,修改fe.conf,增加priority_networks = 172.16.11.0/24
  2. 如果还是启动不了,查看日志,FOLLOWER and node name: 依然是原来网卡地址
  3. 删除mete目录下的文件,再次重启,用新网卡配置启动成功

No module named ‘PyMySQL’

在执行导入测试表,python3或者PyMySQL依赖库找不到

  1. 云主机一般都带有python3,通过python3 -vpip3 list验证是否安装,如果没有安装安装一下即可
  2. 安装好python3之后用,pip3安装pymysql