基本概念三台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环境
- 进入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安装
部署broker进入BE目录下
cd {StarRocks_HOME}/be创建storage目录
mkdir -p storage通过客户端添加BEmysql> 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节点后重新加入。
- 进入对应目录
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代表为主节点
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)