当前位置: 首页 > news >正文

Apache Doris 入门教程31:计算节点

需求场景​

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

  1. 资源隔离差, 两个负载对集群的响应要求不一, 混合部署会有相互的影响.
  2. 集群扩容时, 数据湖查询只需要扩容计算资源, 而目前只能存储计算一起扩容, 导致磁盘使用率变低.
  3. 扩容效率差, 扩容后会启动Tablet数据的迁移, 整体过程比较漫长. 而数据湖查询有着明显的高峰低谷, 需要小时级弹性能力.

解决方案​

实现一种专门用于联邦计算的BE节点角色: 计算节点, 计算节点专门处理数据湖这类远程的联邦查询. 原来的BE节点类型称为混合节点, 这类节点既能做SQL查询, 又有Tablet数据存储管理. 而计算节点只能做SQL查询, 它不会保存任何数据.

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

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

Compute Node的使用​

配置​

在BE的配置文件be.conf中添加配置项:

be_node_role=computation

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

可以通过show backends\G命令看到其中NodeRole字段的值, 如果是mix, 则为混合节点, 如果是computation, 则为计算节点

*************************** 1. row ***************************BackendId: 10010Cluster: default_clusterIP: 10.248.181.219HeartbeatPort: 9050BePort: 9060HttpPort: 8040BrpcPort: 8060LastStartTime: 2022-11-30 23:01:40LastHeartbeat: 2022-12-05 15:01:18Alive: trueSystemDecommissioned: falseClusterDecommissioned: falseTabletNum: 753DataUsedCapacity: 1.955 GBAvailCapacity: 202.987 GBTotalCapacity: 491.153 GBUsedPct: 58.67 %MaxDiskUsedPct: 58.67 %RemoteUsedCapacity: 0.000Tag: {"location" : "default"}ErrMsg:Version: doris-0.0.0-trunk-80baca264Status: {"lastSuccessReportTabletsTime":"2022-12-05 15:00:38","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0NodeRole: computation

使用​

在 fe.conf 中添加配置项

prefer_compute_node_for_external_table=true
min_backend_num_for_external_table=3

参数说明请参阅:FE 配置项

当查询时使用MultiCatalog功能时, 查询会优先调度到计算节点。

一些限制​

  • 计算节点由配置项控制, 但不要将混合类型节点, 修改配置为计算节点.

未尽事项​

  • 计算外溢: Doris内表查询, 当集群负载高的时候, 上层(TableScan之外)算子调度到计算节点中.
  • 优雅下线: 当节点下线的时候, 任务新任务自动调度到其他节点; 等待老任务后全部完成后节点再下线; 老任务无法按时结束时, 能够让任务能够自己结束.
http://www.lryc.cn/news/130663.html

相关文章:

  • Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find
  • 2021年9月全国计算机等级考试真题(二级C语言)
  • 串口通讯
  • 自动拉取 GitHub 仓库更新的脚本
  • 如何获得Android 14复活节彩蛋
  • 国产32位单片机XL32F001,带1 路 12bit ADC,I2C、SPI、USART 等外设
  • typescript基础之null和undefined
  • php_mb_strlen指定扩展
  • 利用OpenCV光流算法实现视频特征点跟踪
  • 探索无限创造力的星辰大道,画出想象的浩瀚宇宙!-turtle
  • 企业数字化转型大数据湖一体化平台项目建设方案PPT
  • 【3Ds Max】车削命令的简单使用(以制作花瓶为例)
  • Python 3 使用HBase 总结
  • Maven方式构建SpringBoot项目
  • 不花一分钱,利用免费电脑软件将视频MV变成歌曲音频MP3
  • 运营知识之用户运营(一)触达用户的几种方式
  • cocos creator pageView 循环展示 广告牌功能
  • PyTorch Lightning:通过分布式训练扩展深度学习工作流
  • 无涯教程-Perl - splice函数
  • 归并排序:从二路到多路
  • 【Vue】运行项目报错 This dependency was not found
  • Shell编程之正则表达式
  • QGraphicsView 实例3地图浏览器
  • Windows基础安全知识
  • 自定义注解和自定义注解处理器来扫描所有带有某个特定注解的Controller层
  • 浏览器渲染原理 - 输入url 回车后发生了什么
  • 大文本的全文检索方案附件索引
  • 35_windows环境debug Nginx 源码-CLion配置CMake和启动
  • 收集的一些比较好的git网址
  • 容斥原理 博弈论(多种Nim游戏解法)