[2.0快速体验]Apache Doris 2.0 弹性计算节点快速体验

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 我们都知道Doris 目前是一个典型的Share-Nothing的架构,Doris 通过绑定数据和计算资源在同一个节点获得非常好的性能表现. 但随着Doris 计算引擎性能持续提高, 越来越多的用户也开始选择使用Doris直接查询数据湖数据. 这类场景是一种Share-Disk场景, 数据往往存储在远端的 HDFS/S3 上, 计算在 Doris 中, Doris 通过网络获取数据, 然后在内存完成计算. 而如果这两个负载都混合在同一个集群时, 对于目前 Doris 的架构就会出现以下不足:资源隔离差, 两个负载对集群的响应要求不一, 混合部署会有相互的影响,数据湖场景下磁盘利用率低:集

1. 概览

我们都知道Doris 目前是一个典型的Share-Nothing的架构,Doris 通过绑定数据和计算资源在同一个节点获得非常好的性能表现. 但随着Doris 计算引擎性能持续提高, 越来越多的用户也开始选择使用Doris直接查询数据湖数据. 这类场景是一种Share-Disk场景, 数据往往存储在远端的 HDFS/S3 上, 计算在 Doris 中, Doris 通过网络获取数据, 然后在内存完成计算. 而如果这两个负载都混合在同一个集群时, 对于目前 Doris 的架构就会出现以下不足:

  1. 资源隔离差, 两个负载对集群的响应要求不一, 混合部署会有相互的影响,
  2. 数据湖场景下磁盘利用率低:集群扩容时, 数据湖查询只需要扩容计算资源, 而目前只能存储计算一起扩容, 导致磁盘使用率变低
  3. 扩容效率差: 扩容后会启动Tablet数据的迁移, 整体过程比较漫长. 而数据湖查询有着明显的高峰低谷, 需要小时级弹性能力.
Shared Nothing:各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表DB2 DPF和Hadoop ,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。我们常说的 Sharding 其实就是Share Nothing架构,它是把某个表从物理存储上被水平分割,并分配给多台服务器(或多个实例),每台服务器可以独立工作,具备共同的schema,比如MySQL Proxy和Google的各种架构,只需增加服务器数就可以增加处理能力和容量。

针对上面这些不足的地方,我们专门设计出来一种用于联邦计算的 BE 节点角色:计算节点,这种角色的 BE 节点,专门处理数据湖这类远程的联邦查询. 原来的BE节点类型称为混合节点, 这类节点既能做SQL查询, 又有Tablet数据存储管理. 而计算节点只能做SQL查询, 它不会保存任何数据.

有了计算节点后, 集群部署拓扑也会发生变: 混合节点用于OLAP类型表的数据计算, 这个节点根据存储的需求而扩容, 而计算节点用于联邦查询, 该节点类型随着计算负载而扩容.

此外, 计算节点由于没有存储, 因此在部署时, 计算节点可以混部在HDD磁盘机器或者部署在容器之中

这样这种节点其实就变成了一个无状态的 BE 节点,我们可以非常容易的进行弹性伸缩,不需要想之前混合节点那样,在扩展集群的时候,需要等待 tablet 副本均衡完成,这个节点才能进行有效的负载。


2. 弹性节点使用

Doris的安装这里我就不做太多详细介绍了,具体的可以参照: Apache Doris 系列:入门篇-安装部署

需要注意的点:

FE 配置

在 fe.conf 里添加下面俩个配置

prefer_compute_node_for_external_table=true
min_backend_num_for_external_table=1
  1. prefer_compute_node_for_external_table : 如果设置为 true,对外部表的查询将优先分配给计算节点。计算节点的最大数量由 min_backend_num_for_external_table 控制。如果设置为 false,对外部表的查询将分配给任何节点
  2. min_backend_num_for_external_table : 仅在 prefer_compute_node_for_external_table 为 true 时生效。如果计算节点数小于此值,则对外部表的查询将尝试使用一些混合节点,让节点总数达到这个值。如果计算节点数大于这个值,外部表的查询将只分配给计算节点, 默认值是3,这里我演示因为节点数量问题,我设置成了1,

BE 配置

在be.conf 里添加下面配置,

be_node_role=computation

该配置项默认为mix, 即原来的BE节点类型, 设置为computation后, 该节点为计算节点.

我这里是将,192.168.0.128 和 192.168.0.129 这两个节点设置成计算节点

然后我们将节点加入到集群之后,并启动节点,查看 BE 的信息,可以看到,NodeRole 这个字段,如果是 mix 表示为混合节点,如果是computation表示为计算节点

mysql> show backends\G;
*************************** 1. row ***************************
            BackendId: 11007
              Cluster: default_cluster
                    IP: 192.168.0.114
              HostName: 192.168.0.114
        HeartbeatPort: 9050
                BePort: 9060
              HttpPort: 8040
              BrpcPort: 8060
        LastStartTime: 2023-06-03 21:51:24
        LastHeartbeat: 2023-06-03 21:51:40
                Alive: true
  SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 21
      DataUsedCapacity: 0.000
        AvailCapacity: 177.323 GB
        TotalCapacity: 196.735 GB
              UsedPct: 9.87 %
        MaxDiskUsedPct: 9.87 %
    RemoteUsedCapacity: 0.000
                  Tag: {"location" : "default"}
                ErrMsg:
              Version: doris-2.0.0-alpha-a925ec9
                Status: {"lastSuccessReportTabletsTime":"2023-06-03 21:51:26","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
              NodeRole: mix
*************************** 2. row ***************************
            BackendId: 11026
              Cluster: default_cluster
                    IP: 192.168.0.128
              HostName: 192.168.0.128
        HeartbeatPort: 9050
                BePort: 9060
              HttpPort: 8040
              BrpcPort: 8060
        LastStartTime: 2023-06-03 21:50:34
        LastHeartbeat: 2023-06-03 21:51:40
                Alive: true
  SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 0
      DataUsedCapacity: 0.000
        AvailCapacity: 177.323 GB
        TotalCapacity: 196.735 GB
              UsedPct: 9.87 %
        MaxDiskUsedPct: 9.87 %
    RemoteUsedCapacity: 0.000
                  Tag: {"location" : "default"}
                ErrMsg:
              Version: doris-2.0.0-alpha-a925ec9
                Status: {"lastSuccessReportTabletsTime":"2023-06-03 21:51:38","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
              NodeRole: computation
*************************** 3. row ***************************
            BackendId: 11045
              Cluster: default_cluster
                    IP: 192.168.0.129
              HostName: 192.168.0.129
        HeartbeatPort: 9050
                BePort: 9060
              HttpPort: 8040
              BrpcPort: 8060
        LastStartTime: 2023-06-03 21:49:52
        LastHeartbeat: 2023-06-03 21:51:40
                Alive: true
  SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 0
      DataUsedCapacity: 0.000
        AvailCapacity: 177.319 GB
        TotalCapacity: 196.735 GB
              UsedPct: 9.87 %
        MaxDiskUsedPct: 9.87 %
    RemoteUsedCapacity: 0.000
                  Tag: {"location" : "default"}
                ErrMsg:
              Version: doris-2.0.0-alpha-a925ec9
                Status: {"lastSuccessReportTabletsTime":"2023-06-03 21:51:02","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
              NodeRole: computation
3 rows in set (0.00 sec)

3. 测试

下面我们以 MySQL Catalog 外表为例来测试弹性节点的使用

创建MySQL Catalog

CREATE CATALOG mysql properties (
  "type"="jdbc",
  "jdbc.user"="root",
  "jdbc.password"="NewPass4321!",
  "jdbc.jdbc_url"="jdbc:mysql://192.168.0.250:3306/test",
  "jdbc.driver_url"="mysql-connector-java-8.0.25.jar",
  "jdbc.driver_class"="com.mysql.cj.jdbc.Driver"
)

查询 Catalog 外表

mysql> set enable_profile = true;
Query OK, 0 rows affected (0.00 sec)
mysql> select date,user_src,new_order,payed_order from mysql.test.order_analysis limit 2;
+---------------------+-------------------------+-----------+-------------+
| date               | user_src               | new_order | payed_order |
+---------------------+-------------------------+-----------+-------------+
| 2015-10-12 00:00:00 | 广告二维码             |     15253 |       13210 |
| 2015-10-14 00:00:00 | 微信朋友圈H5页面       |     17134 |       11270 |
+---------------------+-------------------------+-----------+-------------+
2 rows in set (0.03 sec)

查看 FE Web UI QueryProfile

查看我们刚才执行的 SQL Profile 可以看到,这个Catalog外表的计算是在计算节点上进行的,并不是在混合节点上



将外部表的数据导入到 Doris 内表里

mysql> create table test_01 as select * from mysql.test.order_analysis;
ERROR 1105 (HY000): Unexpected exception: errCode = 2, detailMessage = Failed to execute CTAS Reason: errCode = 2, detailMessage = Failed to find 3 backend(s) for policy: cluster=default_cluster | query=false | load=false | schedule=true | tags=[{"location" : "default"}] | medium=HDD
mysql>

这里可以看到通过Create table as Select这种才做是失败的,原因是因为,我这个时候只有一个混合BE节点,默认三副本,所以失败。同时也说明的弹性计算节点是不带存储的,不存储tablet副本信息。

下面在创建表的时候指定副本是 1 就可以正常创建表,并将数据导入进去。因为这里只有一个(192.168.0.114)节点是mix类型的节点,其他两个节点都是计算节点。

mysql> create table test_01 PROPERTIES("replication_num" = "1") as select * from mysql.test.order_analysis;
Query OK, 5061 rows affected (0.29 sec)
{'label':'insert_9c013d7ccf064a16_a7ca128d72869a35', 'status':'VISIBLE', 'txnId':'1'}
mysql> select count(*) from test_01;
+----------+
| count(*) |
+----------+
|     5061 |
+----------+
1 row in set (0.07 sec)
mysql>

下面我们在 Doris 内表上执行查询

我们在Web UI上同样可以看到内表执行的节点是在Mix类型的节点上。


image.png


计算节点下线

下线操作和之前 BE 节点的下线一样,只不过这个下线速度会非常的快,这是因为这个节点不保存 tablet 数据,下线的时候不需要进行tablet 副本的均衡操作。

alter system DECOMMISSION backend "192.168.0.128:9050";

image.png


4. 总结

是不是使用非常简单方便,同时对于数据湖外表计算需要快速弹性扩缩容的场景,既简单又快捷,快快体验起来吧

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
7天前
|
存储 JSON 物联网
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
本文我们将聚焦企业最普遍使用的 JSON 数据,分别介绍业界传统方案以及 Apache Doris 半结构化数据存储分析的三种方案,并通过图表直观展示这些方案的优势与不足。同时,结合具体应用场景,分享不同需求场景下的使用方式,帮助用户快速选择最合适的 JSON 数据存储及分析方案。
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
|
14天前
|
SQL 消息中间件 Java
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
通过兼容 Connector 插件,Apache Doris 能够支持 Trino/Presto 可对接的所有数据源,而无需改动 Doris 的内核代码。
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
|
21天前
|
存储 消息中间件 运维
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
招联内部已有 40+ 个项目使用 Apache Doris ,拥有超百台集群节点,个别集群峰值 QPS 可达 10w+ 。通过应用 Doris ,招联金融在多场景中均有显著的收益,比如标签关联计算效率相较之前有 6 倍的提升,同等规模数据存储成本节省超 2/3,真正实现了降本提效。
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
|
28天前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
15天前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
61 11
|
1月前
|
存储 数据挖掘 Apache
Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)
如何在 Docker 环境下快速搭建 Apache Doris + Apache Iceberg 测试 & 演示环境,并展示各功能的使用操作
Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)
|
21天前
|
关系型数据库 MySQL API
Apache Doris集群部署
Apache Doris集群部署
|
2月前
|
SQL 存储 关系型数据库
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
数字化转型的浪潮中,高效准确的数据分析能够帮助雨润集团快速洞察市场动态、优化供应链管理、提高生产效率。雨润集团引入了 Apache Doris 构建了统一实时数据仓库,实现了计算效率提升 30 倍、存储资源节省 90%、成本降低超 100 万、人员效率提升 3 倍,为智能化、高效化转型指明了方向。
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
|
2月前
|
SQL Apache 流计算
Apache Doris + Paimon 快速搭建指南|Lakehouse 使用手册(二)
为大家介绍 Lakehouse 使用手册(二)之 Apache Doris + Apache Paimon 搭建指南。

推荐镜像

更多