StarRocks社区版安装

前置条件

三台Linux机器
Linux(Centos 7+)
Java 1.8
CPU支持avx2指令集(命令cat /proc/cpuinfo |grep avx2有结果代表支持,否则不支持)
获取StarRocks社区版安装包 StarRocks官网

基本概念

  1. FrontEnd简称FE,是StarRocks的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。
  2. BE:BackEnd简称BE,是StarRocks的后端节点,负责数据存储,计算执行,以及compaction,副本管理等工作。
  3. StarRocks中和外部HDFS/对象存储等外部数据对接的中转服务,辅助提供导入导出功能。
  4. Tablet: StarRocks中表的逻辑分片,也是StarRocks中副本管理的基本单位,每个表根据分区和分桶机制被划分成多个Tablet存储在不同BE节点上。
熟悉hadoop的可以跟StarRocks做一个对比。
hadoop是分布式的文件系统。
StarRocks是分布式的数据库。
FE -> NAMENODE
BE -> DATANODE
FE与NAMENODE都是管理节点
BE与DATANODE都是存储节点

集群安装

1. 解压安装包

tar -zxvf StarRocks.tar.gz -C /target-dir

配置环境变量 StarRocks_HOME = /target-dir
然后执行source 来刷新当前的shell环境

2. 配置FE

  1. 进入StarRocks_HOME目录下,修改conf/fe.conf文件
JAVA_OPTS = "-Xmx4096m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$STARROCKS_HOME/log/fe.gc.log"
根据需要修改-Xmx4096m,因为是测试集群,我这边不做修改
  1. 创建元数据目录
mkdir -p meta
  1. 启动进程
bin/start_fe.sh --daemon
// --daemon意思是启动守护线程

此时fe/里面生成了一些文件包括log/,我们可以通过log/fe.log来确认fe是否启动成功

2020-03-16 20:32:14,686 INFO 1 [FeServer.start():46] thrift server started.
2020-03-16 20:32:14,696 INFO 1 [NMysqlServer.start():71] Open mysql server success on 9030
2020-03-16 20:32:14,696 INFO 1 [QeService.start():60] QE service start.
2020-03-16 20:32:14,825 INFO 76 [HttpServer$HttpServerThread.run():210] HttpServer started with port 8030

如果包含以上信息则表示启动成功.
如果FE启动失败,可能是由于端口号被占用,修改配置文件conf/fe.conf中的端口号http_port。
使用jps命令查看java进程确认"StarRocksFe"存在。
使用浏览器访问8030端口, 打开StarRocks的WebUI, 用户名为root, 密码为空。
如果还不行,重启/重装解决一切问题UVU。

  1. 使用mysql打开StarRocks
mysql -h 127.0.0.1 -P9030 -u root
mysql> show proc '/frontends'\G;
********************* 1. row ***************************
             Name: ***.***.***.***_29011_1642065093675
               IP: ***.***.***.***
         HostName: cs01
      EditLogPort: 29011
         HttpPort: 28030
        QueryPort: 29030
          RpcPort: 29020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 811127722
             Join: true
            Alive: true
ReplayedJournalId: 101340
    LastHeartbeat: 2022-01-17 15:20:59
         IsHelper: true
           ErrMsg: 
Alive是true的话代表可以了

BE安装

  1. 进入BE目录下
    cd {StarRocks_HOME}/be
  2. 创建storage目录
    mkdir -p storage
  3. 通过客户端添加BE
mysql> alter system add backend "host:port" ;
-- port 为heartbeat_service_port

如果删除错误,则需要执行一下命令

alter system decommission backend "host:port";
-- 优雅删除BE
  1. 启动BE
bin/start_be.sh --daemon
  1. 查看BE的状态
show proc "/backends"\G;

如果所有的BE和节点Alive都是true,则代表没问题,否则需要看以一下StarRocks_HOME/be目录下的log文件夹下的日志be.WARNNING,如果依旧 不能解决则decomission节点后重新加入。

部署broker

  1. 进入对应目录
cd StarRocks_HOME/apache_hdfs_broker/
  1. 开启对应服务
bin/start_broker.sh --daemon
  1. 添加节点进入集群中
mysql> ALTER SYSTEM ADD BROKER broker1 "***.***.***.***:8000";
  1. 查看broker状态
MySQL> SHOW PROC "/brokers"\G ;
*************************** 1. row ***************************
          Name: broker1
            IP: ***.***.***.***
          Port: 8000
         Alive: true
 LastStartTime: 2022-01-17 19:08:35
LastUpdateTime: 2022-01-17 19:08:45
        ErrMsg: 
1 row in set (0.00 sec)

至此基本部署已经完毕,可以做本地测试和基本使用。

FE的高可用

官网介绍

FE的高可用集群采用主从复制架构, 可避免FE单点故障. FE采用了类raft的bdbje协议完成选主, 日志复制和故障切换. 在FE集群中, 多实例分为两种角色: follower和observer; 前者为复制协议的可投票成员, 参与选主和提交日志, 一般数量为奇数(2n+1), 使用多数派(n+1)确认, 可容忍少数派(n)故障; 而后者属于非投票成员, 用于异步订阅复制日志, observer的状态落后于follower, 类似其他复制协议中的learner角色。
FE集群从follower中自动选出master节点, 所有更改状态操作都由master节点执行, 从FE的master节点可以读到最新的状态. 更改操作可以从非master节点发起, 继而转发给master节点执行, 非master节点记录最近一次更改操作在复制日志中的LSN, 读操作可以直接在非master节点上执行, 但需要等待非master节点的状态已经同步到最近一次更改操作的LSN, 因此读写非Master节点满足顺序一致性. Observer节点能够增加FE集群的读负载能力, 时效性要求放宽的非紧要用户可以读observer节点。
FE节点之间的时钟相差不能超过5s, 使用NTP协议校准时间。
一台机器上只可以部署单个FE节点。所有FE节点的http_port需要相同。

步骤:

  1. 将节点添加到mysql中
alter system add follower "host:port" ;
  1. 通过helper命令启动其他的FE
bin/start_fe.sh --helper host:port --daemon
-- host 为主FE的host既你最早打开的FE
-- port 为 edit_log_port
  1. 打开mysql进行检查
mysql> show proc "/frontends"\G;
*************************** 1. row ***************************
             Name: ***.***.***.***_29011_1642065093675
               IP: ***.***.***.***
         HostName: cs01
      EditLogPort: 29011
         HttpPort: 28030
        QueryPort: 29030
          RpcPort: 29020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 811127722
             Join: true
            Alive: true
ReplayedJournalId: 102253
    LastHeartbeat: 2022-01-17 16:11:50
         IsHelper: true
           ErrMsg: 
*************************** 2. row ***************************
             Name: ***.***.***.***_29011_1642066329292
               IP: ***.***.***.***
         HostName: cs03
      EditLogPort: 29011
         HttpPort: 28030
        QueryPort: 29030
          RpcPort: 29020
             Role: FOLLOWER
         IsMaster: false
        ClusterId: 811127722
             Join: true
            Alive: true
ReplayedJournalId: 102252
    LastHeartbeat: 2022-01-17 16:11:50
         IsHelper: true
           ErrMsg: 
*************************** 3. row ***************************
             Name: ***.***.***.***_29011_1642066332437
               IP: ***.***.***.***
         HostName: cs02
      EditLogPort: 29011
         HttpPort: 28030
        QueryPort: 29030
          RpcPort: 29020
             Role: FOLLOWER
         IsMaster: false
        ClusterId: 811127722
             Join: true
            Alive: true
ReplayedJournalId: 102252
    LastHeartbeat: 2022-01-17 16:11:50
         IsHelper: true
           ErrMsg: 
3 rows in set (0.01 sec)
-- IsMaster 为true代表为主节点
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值