背景:最近几年OLAP数据库可谓是百家争鸣,许多产品都陆陆续续的展现出来,不过最近据说StarRocks的综合能力比较好,对比于Clickhouse这种强大的竞品也毫不逊色!
下方是官方给出的一些资料介绍,我这里截取了几张比较重要的图(官方文档传送门:StarRocks @ StarRocks_intro @ StarRocks DocsStarRockshttps://docs.starrocks.com/zh-cn/main/introduction/StarRocks_intro)
1.发展路程
2.生态情况
3.ClickHouse对比StarRocks
下面是集群的搭建过程以及遇到的坑:
一、下载官方的tar包
这里有社区版和收费版,是国内百度开源的一款产品并且有一定的商业性质。和阿里云DataX走的路线是一样的,有开源和收费版本!
我这里并没有下载最新版2.1,而是1.9版的最新版
二、在Linux部署StarRocks
1.首先需要Linux需要JDK环境,建议使用jdk8
安装之前先使用命令检查CPU是否支持,有信息输出则支持,没信息输出则不支持建议更换机器
cat /proc/cpuinfo |grep avx2
2.解压安装包
tar -zxvf StarRocks-1.19.7.tar.gz -C ../module
3.编辑fe.conf 根据实际情况分配内存资源
官方默认是8G,可根据实际情况调整,我这里就不改了
4.fe目录下创建文件夹 meta
mkdir -p meta
5.启动fe进程
/opt/module/StarRocks-1.19.7/fe/bin/start_fe.sh --daemon
6.使用mysql连接查看fe节点信息
mysql -h hadoop102 -uroot -P9030
SHOW PROC '/frontends'\G
这里出现问题了:明明我的nat模式下主机ip是192.168.1.102但是starrocksfe节点却显示192.168.122.1,这个问题疑惑了我很久,在官网论坛寻找的解决方案
都说是配置这两个参数能有效果
但是结果不尽人意
但是我还不死心,总感觉自己配错了,于是把所有可能出现的情况全部配置了一遍
在fe.conf文件中:
方案1、什麽都不添加 mysql客户端正常启动 但是SHOW PROC '/frontends'\G ip显示192.168.122.1
方案2、priority_networks = 192.168.1.102 mysql客户端无法启动
方案3.、frontend_address = 192.168.1.102 mysql客户端无法启动
方案4、priority_networks = 192.168.1.102/24 mysql客户端无法启动
方案5、priority_networks = 192.168.1.102/16 mysql客户端可以启动 但是 SHOW PROC '/frontends'\G 依然显示 192.168.122.1
mysql客户端无法启动如下图所示:
一看到这,所有可能都试了,都没有解决,于是就打起了修改virbr0网卡ip地址的方案
接下来尝试着把virbr0网卡的ip也改为192.168.1.102,其实这样子是可以的,两块网卡使用同一个ip地址(这种技术在业界已经很成熟了)
vim /etc/libvirt/qemu/networks/default.xml
跟改为
然后重启机器,此时看不到virbr0网卡不显示了,具体情况俺也不清楚,不是这网络方面的行家
再次 SHOW PROC '/frontends'\G 显示正常
现在只是在hadoop102机器部署了starrocks,现在需要在其他机器部署
将StarRocks-1.19.7分发到hadoop103和hadoop104机器上
7.添加其他节点的fe
然后hadoop03和hadoop04分别开启fe进程
/opt/module/StarRocks-1.19.7/fe/bin/start_fe.sh --daemon
最后每个机器都有fe进程
ALTER SYSTEM ADD FOLLOWER "hadoop103:9010";
ALTER SYSTEM ADD OBSERVER "hadoop104:9010";
再次在hadoop102上 SHOW PROC '/frontends'\G 就有三台机器都部署了fe节点
hadoop103和hadoop104的fe节点并不是alive,是官网的一个bug,不影响后续使用
8.部署be节点
be目录下创建storage文件夹
mkdir -p storage
在每台机器上启动be节点 /opt/module/StarRocks-1.19.7/be/bin/start_be.sh --daemon
添加be节点
ALTER SYSTEM ADD BACKEND "hadoop102:9050";
ALTER SYSTEM ADD BACKEND "hadoop103:9050";
ALTER SYSTEM ADD BACKEND "hadoop104:9050";
成功后如图
9.部署broker节点
每台机器启动broker进程
/opt/module/StarRocks-1.19.7/apache_hdfs_broker/bin/start_broker.sh --daemon
ALTER SYSTEM ADD BROKER broker1 "hadoop102:8000";
ALTER SYSTEM ADD BROKER broker2 "hadoop103:8000";
ALTER SYSTEM ADD BROKER broker3 "hadoop104:8000";
三、使用StarRocks
以下是使用官网的建表样例
创建表 @ Create_table @ StarRocks Docs创建表https://docs.starrocks.com/zh-cn/main/quick_start/Create_table
四、出现错误中重新安装的所有命令(很快捷,部署过程1min以内)
出现问题重装starrocks:
所有机器 cd /opt/module/ && rm -rf StarRocks-1.19.7/
第一台机器 tar -zxvf /opt/software/StarRocks-1.19.7.tar.gz -C /opt/module
第一台机器 cd /opt/module/StarRocks-1.19.7/fe && mkdir -p meta
第一台机器 cd /opt/module/StarRocks-1.19.7/be && mkdir -p storage
第一台机器 /opt/module/StarRocks-1.19.7/fe/bin/start_fe.sh --daemon
第一台机器 mysql -h hadoop102 -uroot -P9030
第一台机器 SHOW PROC '/frontends'\G
第一台机器 xsync /opt/module/StarRocks-1.19.7
fe节点在第二、三台机器首次启动
/opt/module/StarRocks-1.19.7/fe/bin/start_fe.sh --helper hadoop102:9010 --daemon
fe节点在第二、三台机器后续启动
/opt/module/StarRocks-1.19.7/fe/bin/start_fe.sh
所有机器
/opt/module/StarRocks-1.19.7/be/bin/start_be.sh --daemon
/opt/module/StarRocks-1.19.7/apache_hdfs_broker/bin/start_broker.sh --daemon
第一台机器
ALTER SYSTEM ADD FOLLOWER "hadoop103:9010";
ALTER SYSTEM ADD OBSERVER "hadoop104:9010";
ALTER SYSTEM ADD BACKEND "hadoop102:9050";
ALTER SYSTEM ADD BACKEND "hadoop103:9050";
ALTER SYSTEM ADD BACKEND "hadoop104:9050";
ALTER SYSTEM ADD BROKER broker1 "hadoop102:8000";
ALTER SYSTEM ADD BROKER broker2 "hadoop103:8000";
ALTER SYSTEM ADD BROKER broker3 "hadoop104:8000";
SHOW PROC '/frontends'\G
SHOW PROC '/backends'\G
SHOW PROC '/brokers'\G
create database example_db;
use example_db;
CREATE TABLE IF NOT EXISTS detailDemo (
make_time DATE NOT NULL COMMENT "YYYY-MM-DD",
mache_verson TINYINT COMMENT "range [-128, 127]",
mache_num SMALLINT COMMENT "range [-32768, 32767] ",
de_code INT COMMENT "range [-2147483648, 2147483647]",
saler_id BIGINT COMMENT "range [-2^63 + 1 ~ 2^63 - 1]",
pd_num LARGEINT COMMENT "range [-2^127 + 1 ~ 2^127 - 1]",
pd_type CHAR(20) NOT NULL COMMENT "range char(m),m in (1-255) ",
pd_desc VARCHAR(500) NOT NULL COMMENT "upper limit value 65533 bytes",
us_detail STRING NOT NULL COMMENT "upper limit value 65533 bytes",
relTime DATETIME COMMENT "YYYY-MM-DD HH:MM:SS",
channel FLOAT COMMENT "4 bytes",
income DOUBLE COMMENT "8 bytes",
account DECIMAL(12,4) COMMENT "",
ispass BOOLEAN COMMENT "true/false"
) ENGINE=OLAP
DUPLICATE KEY(make_time, mache_verson)
PARTITION BY RANGE (make_time) (
START ("2022-03-11") END ("2022-03-15") EVERY (INTERVAL 1 day)
)
DISTRIBUTED BY HASH(make_time, mache_verson) BUCKETS 8
PROPERTIES(
"replication_num" = "3",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.start" = "-3",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "8"
);
desc detailDemo;
可能出现的问题SHOW PROC '/backends'\G 并不是所有节点都是alive,重启机器过段时间即可,猜想是组件还不够稳定,或者我的机器自身故障,但是重启就能解决,三台机器都重启啊!
五、总结
1.目前只是初步搭建简易版starrocks集群供体验,把这个流程走通。
2.部署过程中发现的问题如下:
1)fe节点显示192.168.122.1问题,并不是主机的ip,这个问题蛮严重的后面会导致部署无法成功
2)fe节点的状态显示有两台是 Alive: false(据说是自身的bug),欢迎其他同学在评论区讨论!
六、展望
希望StarRocks能给用户带来良好的体验,在OLAP领域不断完善!