Doris使用中,频繁用到的命令
原文地址:https://mp.weixin.qq.com/s/thq5iWadV7UbZ4BMKAfbbw
0. 查看集群的状态
当一个Doris集群部署完成,如果想要知道当前集群的一些运行状态,可以通过如下命令来查看。
0.1 查看master(FE)的运行状态
show frontends\G;
会显示当前集群有多少个FE,以及其角色状态,还有其他相关信息。
0.2查看slaver(be)的运行状态
show backends\G;
0.3 集群增加主节点
ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";
添加follow角色
ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";
添加observer角色
运行这个命令后,再配置好并启动FE节点,才能将新的主节点加入到集群中。
0.4 集群增加从节点
ALTER SYSTEM ADD BACKEND "be_host:be_heartbeat_service_port";
同样,运行这个命令后,再配置好并启动BE节点,才能将新的从节点加入到集群中。
0.5 查看集群中每张表的存储占用状态
show data;
可以看到每张表的存储占用空间,以及每张表当前创建了多少分片,可以看到表dns_logs01,虽然是空表,但是在建表的时候因为指定了分桶数量为5,且其默认副本数量为3。
因此即便没有数据,它也占用了15个分片。
同时也可以看出来,当前集群的存储磁盘配额为1024TB(1P),才用了96GB,空间还剩非常多。
0.6 查看单张表在集群的存储分布情况
ADMIN SHOW REPLICA DISTRIBUTION FROM db_name.table_name;
可以知道每张表在每台BE中的数据存储比例,以及是否有存储的倾斜。
1. 导入数据的相关命令
我们知道,Doris提供了多种数据导入方式,而且呢,很多导入方式都是异步进行的,也就是你的导入命令一执行,“啪”,就返回了。
于是对于其导入状态:正在导、导完成了、还是失败了呢,你还得通过导入状态查看命令来查。
1.1 routine load导入方式
这个导入方式很有意思,官方文档说目前就支持kafka一种数据源,其导入命令是这样式的:
官方文档给这个load起名的时候还给带了个库名example_db,其实在真正使用时是不需要的,麻烦,就test1就行。
当然,如果你忘记了当初创建的load叫什么,也可以这么查看:
show routine load\G;
这样一来,就把所有的的通过routine load的历史记录给查询出来了。
如果你记得具体的load任务名,那就最好了,那就用这个命令。
show routine load for test4\G;
如果想暂停导入任务:
pause routine load FOR test4;\G;
想再次启动:
resume routine load FOR test4;\G;
直接停掉,不再导入:
stop routine load FOR test4;\G;
而stop之后,就不能再次恢复。
1.2 stream load导入方式
这种导入方式是同步的,因此就没有提供导入进度的命令查看方式,而且呢,官网给的导入样例主要是通过crul命令行的方式来进行(也可以通过http client方式)。
虽然官方给的例子都是用来导入单个文件的数据,且单个文件不能太大(因为默认10分钟就会超时)。
但是,从上两篇我写的关于Doris的文章内容我们知道,当我们用spark的streaming方式或者flink的steaming方式去写Doris表的时候,其写入的逻辑实现方式本质也是这个stream load。
1.3 其他导入方式
Doris还是提供了其他的一些导入方式,比如broker导入,MySQL load等,暂时没有用过。
2. 物化视图的状态查看
Doris的物化视图其特殊之处在于,它是一种“依附”在基础表之上的,将原本查基础表耗时较久的操作,给提前把结果算出来准备好的一种机制。
因为创建物化视图本质上,是一个数据重新计算与写入的操作,因此对于一个本来就有数据的基础表来说,这个物化视图的创建过程就是耗时的,所以,它被设计成了一个异步操作。
2.1 查看物化视图(或rollup)创建的进度
命令有两种。
可以这么写:
show alter table rollup;
也可以这么写:
show alter table materialized view;
不管你实际创建的是rollup还是materialized view,查询出来的结果都一样,以上命令会把所有历史的、以及正在创建的结果都展现出来。
如果怕查询出来的结果太多,查询条件可以精确到具体的库名以及表名:
show alter table materialized view from example_db where TableName='table_name';
等你确认物化视图(或者rollup)创建成功之后(FINISHED),就可以在你的基础表中看到了(在FINISHED之前是看不到的,也不生效)。
2.2 确认物化视图(或rollup)已经生效
desc dns_logs_from_kafka all;
输出结果:
这些输出的rollup或者物化视图名字,代表已经创建成功(数据计算和写入完毕),可以起到查询加速的作用。
2.3 删除物化视图(以及rollup)
物化视图跟rollup虽然在查看的时候用的命令是一样的,但是删除时候又不一样了(因为创建的时候命令不一样)。
删除rollup:
ALTER TABLE db_name.table_name DROP ROLLUP rollup_name;
删除物化视图:
drop materialized view view_name on table_name;
撤销正在创建的rollup(此时数据还在写入rollup):
CANCEL ALTER TABLE ROLLUP FROM db_name.table_name;
3. 索引创建进度的查看
我们知道,Doris除了原本内置的索引外(指定的排序字段),还可以额外指定几个少数的用户级索引,比如Bitmap索引,以及BloomFilter(2.0版本之后还会支持更多)。
3.1 查看某张表的索引情况(创建成功之后):
show index from table_name;
但是要知道,创建索引是需要时间的(同样需要重新计算和写入数据),而如果索引正在创建中呢。
3.2 查看正在创建的(所有表)索引(或修改的字段):
SHOW ALTER TABLE COLUMN\G;
这个时候,所有跟字段修改有关的操作都会被查询出来,包括用户索引的创建。
3.3 查看具体某张表的索引(或正在修改的字段)创建情况:
SHOW ALTER TABLE COLUMN WHERE TableName = "table_name"
3.4 取消正在创建的索引(或正在修改的字段):
CANCEL ALTER TABLE COLUMN FROM table_name;
以上,算是最近这段时间以来使用Doris过程中,一些比较趁手的辅助开发的命令,觉得有必要记录下来
SHOW ALTER TABLE COLUMN WHERE TableName = “table_name”
3.4 取消正在创建的索引(或正在修改的字段):
CANCEL ALTER TABLE COLUMN FROM table_name;
以上,算是最近这段时间以来使用Doris过程中,一些比较趁手的辅助开发的命令,觉得有必要记录下来