Doris简介:
Doris最初是由百度大数据研发部研发,之前在百度使用时叫做Palo,在贡献给Apache社区后更名为Doris。之前在百度内部超过100台机器部署Doris,服务的产品线超过200条。
Doris是一个现代化的MPP(大规模并行处理)架构的分析型数据库。拥有压秒级的查询响应,能够有效的支持实时数据分析。且易于运维,能够支撑10PB以上的超大的数据集。(MPP架构的数据库是将任务并行的分散到多个的节点上,进行协同计算,在每个节点将各自的计算任务处理完成之后,再将计算的结果进行汇总,输出最终的结果)
Doris可以满足多种的数据分析需求,例如固的历史报表、实时数据分析、交互式数据和探索式的数据分析。
Doris的主要特点:
- MPP架构的分析型数据库
- 毫秒级别的响应速度
- 支持标准的SQL(兼容Mysql协议)
- 丰富的聚合模型,以及聚合表技术
- Rollup等预聚合技术
- 运维简单,弹性伸缩
- 高可用、高可靠
- 丰富的周边生态工具
- 向量化执行器
(具体可看官网:Doris官网)
Doris的主要架构:
Doris的主要架构分为FE(frontend)、BE(backend)两个角色、两个进程,不依赖于外部的组件,极易部署、运维,FE和BE都有很好的拓展性。
FE:存储和维护集群的元数据,负责接收和解析用户的查询请求,规划查询计化,调度查询结果。
FE主要分为三个角色:Leader、Follower、Observer
Leader和Follower主要是用来实现Doris集群的高可用,在Leader宕机之后,Follower节点能够迅速代替Leader的工作,能够实现实时恢复元数据,从而保证对Doris集群不造成任何影响。
Observer是用来拓展查询节点的,同时起到了元数据备份的作用,如果在感知到集群的查询有压力时,可以同通过添加Observer节点来达到提高集群查询的能力,注意:Observer只参与读取,不参与写入。
BE:负责数据的主要存储和计算,以及根据FE生成的物理执行计划,然后进行查询(分布式,多节点并行执行查询,统一汇总)。同时BE还会将数据存储为3副本或者多副本(可根据数据的权重以及集群的资源进行合理设置,可以动态调整)。
Broker:broker是一个无状态的进程。其中封装了文件系统的接口,能够为Doris提供访问外部数据源的能力(比如:HDFS、S3等)。通常在每一台节点上部署一个broker的示例即可。
MysqlClient:Doris是借助MysqlClient协议,所以MysqlClient可以直接访问Doris
Doris的编译部署:可参考官网:Doris部署
Doris常用端口:
Doris中FE、BE、Broker的扩容和缩容:
- 使用Mysql客户端登录,查看FE的状态:mysql -h ip -P 9030 -uroot -p xxxxx
- SHOW PROC '/frontends'\G; 可查看FE状态
- 将FE包的分发到准备添加为FE的
-
首次启动需要在启动命令后加参数:--helper leader主机: edit_log_port(9010)--daemon
-
通过 ALTER SYSTEM ADD FOLLOWER "host:9010"; 添加Follower
-
通过 ALTER SYSTEM ADD OBSERVER"host:9010"; 添加Observer
-
一个FE只能有一个Leader但是可以有多个Follower和Observer,其中Leader和Follower组成一个Paxos组,保证高可用,Leader宕机后Follower会进行选举,选举出新Leader,Observer不参与选举。
-
添加完成之后通过 SHOW PROC '/frontends'\G; 可查看FE状态,查看Alive是否为true,为True证明添加成功
-
删除FE的命令 ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";
- SHOW PROC '/backends'\G;
- BE、BROKER 和FE同理,使用 ALTER SYSTEM ADD BACKEND "host:9050";命令添加BE
- 删除BE:ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";(不推荐!!!!,会直接删除BE节点,且数据不可恢复)
-
推荐使用:ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 删除BE时会将该节点的数据向其他BE节点处进行迁移
-
BROKER的添加和删除:
-
ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";
-
ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";
-
ALTER SYSTEM DROP ALL BROKER broker_name;