快速上手Doris(一)

快速上手Doris(一),第1张

快速上手Doris(一) 一、前言

hello,我是857-毛哥(兼奇峰空降业务)经纪人,我的宗旨是解决老毛子二十多年单身生活(二十多年了,连妹妹都手都没有碰过,在线征婚!!!),同时也负责奇峰全国空降业务。

接下来即将由我带着大家开车上高速,xdm赶紧抓紧时间上车了!!!!!

二、Doris介绍

Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。

Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!

三、Doris核心特性
MPP ( Massively Parallel Processing ),即大规模并行处理,在数据库非共享集群中,每个节点 都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上, 每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服 务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。 简单来说,MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各 自部分的结果汇总在一起得到最终的结果 ( 与 Hadoop 相似 )。

    现代化MPP结构

    秒级查询返回延时

    支持标准SQL语言,兼容Mysql协议

    向量化执行器

    高效的聚合技术

    新型预聚合技术Rollup

    高性能、高可用、高可靠

    极简运维,d性伸缩

三、Doris编译
详细Doris编译参考:https://doris.apache.org/zh-CN/installing/compilation.html
四、Doris安装及部署
详细Doris安装及部署可参考:https://doris.apache.org/zh-CN/installing/install-deploy.html
五、数据划分

broker:Doris集群单个节点

FE:Frontend,即 Doris 的前端节点。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。

BE:Backend,即 Doris 的后端节点。主要负责数据存储与管理、查询计划执行等工作。

如上图,Doris 的整体架构分为两层。多个 FE 组成第一层,提供 FE 的横向扩展和高可用。多个 BE 组成第二层,负责数据存储与管理。本文主要介绍 FE 这一层中,元数据的设计与实现方式。
​
FE 节点分为 follower 和 observer 两类。各个 FE 之间,通过 bdbje(BerkeleyDB Java Edition)进行 leader 选举,数据同步等工作。
​
follower 节点通过选举,其中一个 follower 成为 leader 节点,负责元数据的写入 *** 作。当 leader 节点宕机后,其他 follower 节点会重新选举出一个 leader,保证服务的高可用。
​
observer 节点仅从 leader 节点进行元数据同步,不参与选举。可以横向扩展以提供元数据的读服务的扩展性。
​
注:follower 和 observer 对应 bdbje 中的概念为 replica 和 observer。下文可能会同时使用两种名称。

Table:数据都以表(Table)的形式进行逻辑上的描述,类似Mysql的Table。一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。

Partition:通过Table的单个或多个key列进行数据分区,能有效提升查询效率,降低单个目录数据存储压力。支持 Range 和 List 的划分方式。

Range 分区

分区列通常为时间列,以方便的管理新旧数据。

Partition 支持通过 VALUES LESS THAN (...) 仅指定上界,系统会将前一个分区的上界作为该分区的下界,生成一个左闭右开的区间。通过,也支持通过 VALUES [...) 指定同时指定上下界,生成一个左闭右开的区间。

通过 VALUES [...) 同时指定上下界比较容易理解。这里举例说明,当使用 VALUES LESS THAN (...) 语句进行分区的增删 *** 作时,分区范围的变化情况:

如上 expamle_range_tbl 示例,当建表完成后,会自动生成如下3个分区:

p201701: [MIN_VALUE,  2017-02-01)
p201702: [2017-02-01, 2017-03-01)
p201703: [2017-03-01, 2017-04-01)

当我们增加一个分区 p201705 VALUES LESS THAN ("2017-06-01"),分区结果如下:

p201701: [MIN_VALUE,  2017-02-01)
p201702: [2017-02-01, 2017-03-01)
p201703: [2017-03-01, 2017-04-01)
p201705: [2017-04-01, 2017-06-01)

此时我们删除分区 p201703,则分区结果如下:

p201701: [MIN_VALUE,  2017-02-01)
p201702: [2017-02-01, 2017-03-01)
p201705: [2017-04-01, 2017-06-01)

注意到 p201702 和 p201705 的分区范围并没有发生变化,而这两个分区之间,出现了一个空洞:[2017-03-01, 2017-04-01)。即如果导入的数据范围在这个空洞范围内,是无法导入的。

继续删除分区 p201702,分区结果如下:

p201701: [MIN_VALUE,  2017-02-01)
p201705: [2017-04-01, 2017-06-01)
空洞范围变为:[2017-02-01, 2017-04-01)

现在增加一个分区 p201702new VALUES LESS THAN ("2017-03-01"),分区结果如下:

p201701:    [MIN_VALUE,  2017-02-01)
p201702new: [2017-02-01, 2017-03-01)
p201705:    [2017-04-01, 2017-06-01)

可以看到空洞范围缩小为:[2017-03-01, 2017-04-01)

现在删除分区 p201701,并添加分区 p201612 VALUES LESS THAN ("2017-01-01"),分区结果如下:

p201612:    [MIN_VALUE,  2017-01-01)
p201702new: [2017-02-01, 2017-03-01)
p201705:    [2017-04-01, 2017-06-01) 

即出现了一个新的空洞:[2017-01-01, 2017-02-01)

综上,分区的删除不会改变已存在分区的范围。删除分区可能出现空洞。通过 VALUES LESS THAN 语句增加分区时,分区的下界紧接上一个分区的上界。

不可添加范围重叠的分区。

List 分区

分区列支持 BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DATE, DATETIME, CHAR, VARCHAR 数据类型,分区值为枚举值。只有当数据为目标分区枚举值其中之一时,才可以命中分区。

Partition 支持通过 VALUES IN (...) 来指定每个分区包含的枚举值。

下面通过示例说明,进行分区的增删 *** 作时,分区的变化。

如上 example_list_tbl 示例,当建表完成后,会自动生成如下3个分区:

p_cn: ("Beijing", "Shanghai", "Hong Kong")
p_usa: ("New York", "San Francisco")
p_jp: ("Tokyo")

当我们增加一个分区 p_uk VALUES IN ("London"),分区结果如下:

p_cn: ("Beijing", "Shanghai", "Hong Kong")
p_usa: ("New York", "San Francisco")
p_jp: ("Tokyo")
p_uk: ("London")

当我们删除分区 p_jp,分区结果如下:

p_cn: ("Beijing", "Shanghai", "Hong Kong")
p_usa: ("New York", "San Francisco")
p_uk: ("London")

不可添加范围重叠的分区。

Bucket:数据在各个分区内的划分规则。如果不使用 Partition,则描述的是对整个表的数据的划分规则(支持多个分桶列,但必须是key列)。

Tablet:用户数据被水平划分为若干个数据分片.各个 Tablet 之间的数据没有交集,并且在物理上是独立存储的。

六、问题思考

如何保证Doris FE元数据不丢失和一致性?

如何备份Doris EF元数据?

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

原文地址: http://outofmemory.cn/zaji/5716067.html

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

发表评论

登录后才能评论

评论列表(0条)

保存