暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Apache Doris】周FAQ集锦:第 20 期

一臻数据 2024-08-30
133

  引言   

欢迎查阅本周的 Apache Doris 社区 FAQ 栏目!

在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和开发者分享有关 Apache Doris 的常见问题。

通过这个每周 FAQ 栏目,希望帮助社区小伙伴更好地了解和应用 Apache Doris,促进经验交流和技术共享。


 






      SQL问题      

Q1 doris查询时报: 

errCode = 2, detailMessage = Nereids cost too much time ( > 5s )

A1 通常可以调大如下参数解决: 

set global nereids_timeout_second = 30;
Q2 doris 外部表和内部表固定sql如何通过cache提高重复查询效率?
A2 Doris 自己管理的 Cache 目前均为 LRU 淘汰策略,均支持单独通过参数控制容量和淘汰时长。 
Data Cache 默认关闭,需要在 FE 和 BE 中设置相关参数进行开启。Data Cache 功能仅作用于针对文件的外表查询(如 Hive、Hudi )。对内表查询,或非文件的外表查询(如 JDBC、Elasticsearch)等无影响。 
-- 单个会话中开启 Data Cache 
SET enable_file_cache = true
-- 全局开启 Data Cache 
SET GLOBAL enable_file_cache = true

在2.1.3及以上版本,Nereids优化器在fe的内存中保存缓存的关键信息,比如非确定函数及其评估值,在关键信息未发生变化时可以跳过sql解析,优化了sql cache的查询速度。 
# 确保 fe.conf 的cache_enable_sql_mode=true(默认是 true) 
vim fe/conf/fe.conf 
cache_enable_sql_mode=true 

-- 在 MySQL 命令行中设置变量 
set [global] enable_sql_cache=true; doris cache 

内存分析内存可查阅: 
https://doris.apache.org/zh-CN/docs/dev/admin-manual/memory-management/memory-analysis/doris-cache-memory-analysis/
Q3 doris中针对非主键又是不等连接的字段,有什么适合的索引?场景是创建时间加不到主键去
A3 原则上不等连接性能较差,2.1的版本社区加上了不等连接的rf,会有一定优化。
这种场景建议从连接字段上分析一下有没有改进的空间,比如字符串变int 或 null变not null。
Q4 doris插入大量数据的时候报错: 
[S1000]: Packet for query is too large 
(2,734,157 > 1,048,576). 
You can change this value on the server by 
setting the 'max_allowed_packet' variable.

A4 如下:

-- 全局调大相关参数
set global max_allowed_packet = 104857600;

-- 查看相关参数修改后的值
show variables like '%max_allowed_packet%'




      数据操作问题      

Q5 doris升级后,查询结果是对的,插入目标表后就会出现空值?

A5 通常原因是升级后此变量为false,致insert into select没有走pipeline引擎: 
-- 开启 
set global enable_nereids_dml_with_pipeline = true;

Q6 flink-doris-connector 是否兼容flink 1.20

A6 支持,master分支即可。
flink-doris-connector内容可查阅:
https://doris.apache.org/zh-CN/docs/dev/ecosystem/flink-doris-connector/

Q7 doris 2.1.3版本使用回写hive的功能时报:

Failed to execute CTAS Reason: 
errCode = 2, detailMessage = Unknown engine name: hive

A7 使用hive回写功能时,需要注意几个点:

-- 1. 开启全局新优化器 
set global enable_nereids_planner = true 

-- 2. 关闭回退 
set global enable_fallback_to_original_planner=false 

一些从老版本升级上来的集群,上述参数的默认值可能还是老的,所以需要手动调整。另外,建议升级至>= 2.1.5 的稳定版本。

Q8 doris 弹性计算节点CN,如果sql是外部表和内部表关联时,是如何查询的(外部表在什么节点查,内部表在什么节点查,中间聚合又在什么节点执行)?
A8 能利用到的节点,是 内表能用的节点,和外表能用的节点的合集。CN弹性计算节点内容可查阅: 
https://doris.apache.org/zh-CN/docs/dev/lakehouse/compute-node



      运维常见问题      

Q9 一共只有96G内存,doris是分成3个32G内存的节点快,还是只有一个96G的节点快?

A9 只有一个快。
单个大内存节点可以避免数据在多个节点之间的传输开销,特别是对于一些需要大量内存进行复杂计算的任务。此外,管理一个节点相对来说比管理多个节点更加简单。



      其它问题      

Q10 doris是否有集群规模对应能支持多少数据量查询的压测数据?

A10 集群规模评估没有通用的压测数据指标。 
可以先参考1C : 4G Mem,1C : 50G 数据的常规模式来估算;例如 20T(密集型热数据/非全量数据) * 1024 = 20480G 50 ≈ 409C,目前这个规模的计算存储节点预估 64C * 6 = 384C;硬盘建议最好是SSD的,be属于计算密集型的组件,iops要求较高。 
实际的集群规模,与业务相关度特别高,比如是日志类数据,是一些报表数据之类的,还是查询是多表关联居多,还是单表的?这个对于扫描量而言差距都较大;又比如假设数据是按天级存储的,虽然有一个T,但可能是存了一年的,那每天可能就3个G,其实如果按天去查询的话,扫描量就很小。所以,需要根据业务数据进行压测评估,通常和场景并发及数据需求计算复杂度有关。


往期推荐

走进开源,拥抱开源

【Apache Doris】周FAQ集锦:第 19 期

【Apache Doris】周FAQ集锦:第 18 期

【Apache Doris】周FAQ集锦:第 17 期

【Apache Doris】周FAQ集锦:第 16 期

【Apache Doris】周FAQ集锦:第 15 期

【Apache Doris】周FAQ集锦:第 14 期

【Apache Doris】周FAQ集锦:第 13 期

【Apache Doris】周FAQ集锦:第 12 期

【Apache Doris】周FAQ集锦:第 11 期

【Apache Doris】周FAQ集锦:第 10 期









关于社区






Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。 
如果您对 Apache Doris 感兴趣,可以通过以下入口访问官方网站、社区论坛、GitHub和dev邮件组:
💡官网文档:https://doris.apache.org 
💡社区论坛:https://ask.selectdb.com 
💡GitHub:https://github.com/apache/doris 
💡dev邮件组:dev@doris.apache.org
非常欢迎您在社区论坛中与其他用户分享您的使用经验和技巧,或者向dev邮件组提交反馈和意见。
相信,您的参与将帮助Apache Doris变得更加完善。

▼   点击阅读原文,发现更多精彩!

文章转载自一臻数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论