StarRocks社区版安装

StarRocks社区版安装,第1张

StarRocks社区版安装 前置条件

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

基本概念
    FrontEnd简称FE,是StarRocks的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。BE:BackEnd简称BE,是StarRocks的后端节点,负责数据存储,计算执行,以及compaction,副本管理等工作。StarRocks中和外部HDFS/对象存储等外部数据对接的中转服务,辅助提供导入导出功能。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
    进入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,因为是测试集群,我这边不做修改
    创建元数据目录
mkdir -p meta
    启动进程
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。

    使用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安装
    进入BE目录下
    cd {StarRocks_HOME}/be创建storage目录
    mkdir -p storage通过客户端添加BE
mysql> alter system add backend "host:port" ;
-- port 为heartbeat_service_port

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

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

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

部署broker
    进入对应目录
cd StarRocks_HOME/apache_hdfs_broker/
    开启对应服务
bin/start_broker.sh --daemon
    添加节点进入集群中
mysql> ALTER SYSTEM ADD BROKER broker1 "***.***.***.***:8000";
    查看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需要相同。

步骤:

    将节点添加到mysql中
alter system add follower "host:port" ;
    通过helper命令启动其他的FE
bin/start_fe.sh --helper host:port --daemon
-- host 为主FE的host既你最早打开的FE
-- port 为 edit_log_port
    打开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代表为主节点

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5704870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存