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

news/2024/4/21 1:23:13/

​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: 11007Cluster: default_clusterIP: 192.168.0.114HostName: 192.168.0.114HeartbeatPort: 9050BePort: 9060HttpPort: 8040BrpcPort: 8060LastStartTime: 2023-06-03 21:51:24LastHeartbeat: 2023-06-03 21:51:40Alive: trueSystemDecommissioned: false
ClusterDecommissioned: falseTabletNum: 21DataUsedCapacity: 0.000AvailCapacity: 177.323 GBTotalCapacity: 196.735 GBUsedPct: 9.87 %MaxDiskUsedPct: 9.87 %RemoteUsedCapacity: 0.000Tag: {"location" : "default"}ErrMsg:Version: doris-2.0.0-alpha-a925ec9Status: {"lastSuccessReportTabletsTime":"2023-06-03 21:51:26","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0NodeRole: mix
*************************** 2. row ***************************BackendId: 11026Cluster: default_clusterIP: 192.168.0.128HostName: 192.168.0.128HeartbeatPort: 9050BePort: 9060HttpPort: 8040BrpcPort: 8060LastStartTime: 2023-06-03 21:50:34LastHeartbeat: 2023-06-03 21:51:40Alive: trueSystemDecommissioned: false
ClusterDecommissioned: falseTabletNum: 0DataUsedCapacity: 0.000AvailCapacity: 177.323 GBTotalCapacity: 196.735 GBUsedPct: 9.87 %MaxDiskUsedPct: 9.87 %RemoteUsedCapacity: 0.000Tag: {"location" : "default"}ErrMsg:Version: doris-2.0.0-alpha-a925ec9Status: {"lastSuccessReportTabletsTime":"2023-06-03 21:51:38","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0NodeRole: computation
*************************** 3. row ***************************BackendId: 11045Cluster: default_clusterIP: 192.168.0.129HostName: 192.168.0.129HeartbeatPort: 9050BePort: 9060HttpPort: 8040BrpcPort: 8060LastStartTime: 2023-06-03 21:49:52LastHeartbeat: 2023-06-03 21:51:40Alive: trueSystemDecommissioned: false
ClusterDecommissioned: falseTabletNum: 0DataUsedCapacity: 0.000AvailCapacity: 177.319 GBTotalCapacity: 196.735 GBUsedPct: 9.87 %MaxDiskUsedPct: 9.87 %RemoteUsedCapacity: 0.000Tag: {"location" : "default"}ErrMsg:Version: doris-2.0.0-alpha-a925ec9Status: {"lastSuccessReportTabletsTime":"2023-06-03 21:51:02","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0NodeRole: 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类型的节点上。

计算节点下线

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

alter system DECOMMISSION backend "192.168.0.128:9050";

4. 总结

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

如果你想快读体验,并想做体验中遇到问题能获取社区的快速支持,可以添加我的微信:


http://www.ppmy.cn/news/220821.html

相关文章

如何保存联想锁屏壁纸?

本机保存路径: C:\ProgramData\Lenovo\devicecenter\LockScreen\cache此目录里面缓存了所有出现过的联想锁屏壁纸。 顺便提一下,联想锁屏壁纸真香! 如果没有找到文件夹的,勾选显示隐藏文件夹。

如何保存window10锁屏壁纸

首先找到存放window10的锁屏壁纸文件夹,方法如下: 1.同时点击键盘上的组合键“WinR”,调出“运行”窗口,在输入框内复制下面的内容并粘贴,点回车按钮,系统会打开锁屏壁纸的默认存放文件夹。 %localappdata…

电脑锁屏壁纸提取方法

1、Windows的壁纸都保存在一个叫做 Assets 的隐藏文件夹里,打文件开资源管理器,在地址栏入 %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets 后按回车键,即可快速跳转至这个隐藏的文件…

Windows电脑系统锁屏界面壁纸如何获取

1、按windowsE键打开文件资源管理器,输入以下路径到上方的路径窗口里回车C:\Users\Administrator\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets 打开Assets文件夹; Users指的就是用户&#xff1b…

windows 11 锁屏壁纸路径

windows 11 锁屏壁纸路径 一、确认用户名 C:\Users\Administrator\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets 红色位置参考下图。 二、然后把路径复制到“此电脑”,下图位置: 三、按回车到目…

【PC】如何导出windows锁屏壁纸

最简便的方法 1.运行,输入以下,回车 %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState 2.壁纸就在Assets文件夹里 复制出来之后需要转换格式(加上.jpg的后缀就可以打开) 里面的壁纸…

联想电脑锁屏壁纸的缓存目录,历史壁纸+当前显示的锁屏壁纸,珍藏一下!

C盘竟藏着一堆, 一、联想电脑锁屏壁纸的缓存位置 (历史缓存,超级多) C:\ProgramData\Lenovo\devicecenter\LockScreen\cache PS:直接复制路径,到Windows资源管理器搜索一下即可。 二、联想电脑锁屏壁纸的…

组策略统一锁屏壁纸

注意:只能在Windows8系统以上的专业版、企业版、服务器才能生效 1.打开组策略管理,因为是统一全部人,直接在整个域上链接GPO 2.命名 3.右键编辑新创建的GPO 4.找到计算机配置-策略-管理模板-控制面板-个性化-强制显示特定的默认锁屏界面图像…

轻松获取windows10锁屏壁纸

1.同时按下键盘上 [Win R] 键,打开运行对话框(Win键就是键盘左下角Ctrl键右边的windows徽标键); 2.将下面这条命令复制到输入框中点击确定; %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5…

android 锁屏独立壁纸

之前的一个项目开发的支持锁屏壁纸和桌面壁纸。 开始时,有考虑从lockscreen做文章。在锁屏时,切换锁屏壁纸,进入home,再切换home壁纸。效果很差,卡顿,效率极低。 后来只能从WallpaperManager,WindowManag…

如何获取Windows 10的锁屏壁纸

本功能仅限于Windows 10锁屏界面设置为聚焦模式的用户,设置聚焦模式后才会每天自动下载不同的壁纸。 如果没有开启锁屏界面聚焦模式那么只有系统默认壁纸。 打开路径 C:\Users\XXX\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyew…

win10锁屏壁纸的提取方法

win10锁屏壁纸每隔几天就会更新,并且存储在特定的文件夹下面,提取方法也很简单: 先找到当前用户的 C:\Users\Administrator\AppData\Local\Packages文件夹 搜索Microsoft.Windows.ContentDeliveryManager 字符,会有以这个字符开…

如何获得Win10联想锁屏的壁纸(联想锁屏的壁纸灰常好看,那么我们如何获得呢?)

我是小康小白,一个平平无奇的Java小白。热爱有趣的文字,生活和远方。每天开机最眼馋的就是联想锁屏的壁纸了,那么我们如何获得呢? 1.打开我的电脑—C盘 2.打开Windows文件夹 3.找到其中的Web文件夹 4.打开Screen文件夹 5.里面就可…

kafka 集群是如何选择 leader,你知道吗?

前言 kafka集群是由多个broker节点组成,这里面包含了许多的知识点,以下的这些问题你都知道吗? 你知道topic的分区leader是怎么选举的吗? 你知道zookeeper中存储了kafka的什么信息吗?起到什么做呢? 你知道kafka消息…

win7锁屏壁纸更换,解除壁纸256Kb限制教程

参考文献: 百度经验连接:点击打开链接 贴吧某大神贴连接:点击打开链接 今天闲来无事,看着桌面,锁屏壁纸越来越不入眼,正好最近迷恋滑板,就想着把自己的桌面壁纸跟锁屏壁纸弄个滑板&#xff0c…

如何找到win10的锁屏推送壁纸

如何找到win10的锁屏推送壁纸 大家好,我们经常使用win10的时候有没有发现,win10锁屏的壁纸每天都会变而且特别精美,有的壁纸真的想下载下来自己设置为壁纸,可是怎么能保存每个壁纸呢,错过了第二天就变成另外的了&#…

【2022年】Win11修改锁屏界面、登录界面背景图片方法(亲测有效)

最近想给自己的电脑换个壁纸,桌面壁纸自定义已经玩的很熟了,就想设置一个登录界面的壁纸。毕竟每次锁屏(winL),或者是开机输密码的时候都是那个大蓝色背景(见图1),看久了也累了。故作…

一键获取Windows锁屏壁纸

一键获取Windows锁屏壁纸 win10锁屏壁纸每日一图,图片质量相当赞,但奈何系统并没有提供保存方法,每次发现自己喜欢的壁纸都要手动去壁纸的保存目录一个个的找啊翻啊,真心麻烦,而且与壁纸一起存放的还要其他文件&#…

android 锁屏壁纸和桌面壁纸的设置实现

在flyme系统下面,有个类是可以用来设置桌面壁纸的,叫做WallpaperManager,调用该类的setBitmap(),即可。但是锁屏壁纸的设置却无法直接调用这个类的某些方法。 需要用到反射调用。反射调用可以参考以下两篇文章: 1.通过java反射调…

Win10锁屏壁纸位置在哪?默认锁屏壁纸怎么提取

http://jingyan.baidu.com/article/fedf07375ea25135ad897761.html C:\Users\MIS\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets 备注一下: MIS:是你要的用户名文件夹 Microsoft.Windows.ContentD…