编者荐语:
来自PowerData-徐振超的精彩文章
以下文章来源于数据极客圈 ,作者徐振超
[
数据极客圈 .
一入大数据深似海?别怕!“数据极客圈” 就是你的救生圈,走对圈子跟对人,趣析数据、畅聊趋势,快进圈子!
](#)
在使用 Apache Doris 进行数据导入时,经常会遇到导入性能不理想的情况。今天我们就来深入分析这些问题的原因及其解决方案!
1
Stream Load 导入慢
Stream Load 支持通过 HTTP 协议将本地文件或数据流导入到 Doris 中的一种方式,其速度还是相当可以的,具体取决于用户的实际资源情况。但如果导入速度慢,可以根据下列简单步骤进行排查:
排查方法
- 监控搜集 BE 的 CPU、内存、IO 等资源使用情况,确保资源充足。
- 根据 Load ID 和 Txn ID 在 BE.INFO 日志中搜索慢请求,重点查看进行输送的 Coordinator BE (即 Stream Load 发送的那个 BE)。
- 检查客户端到 BE 的网络连通情况,如实时 ping 延迟和网络带宽。
- 客户端如何向 BE 发送数据,如果发送过程之序自身就慢,导致 Stream Load 总时间为长。
- 检查是否触发了内存下刷,可以通过搜索 BE.INFO 中的
reducing
日志确认。 - 导入对应的并发数是否过高,如果并发数超过 HTTP Server 线程数 (默认为 48),就可能导致接收客户端数据慢。
- 确认是否导入 Mow 表,因 Mow 表需要计算 delete bitmap,并分析计算时间。
另外: 可以看看sync\_tablet\_meta 参数的状态(sync\_tablet\_meta 设置为false的话, BE 元数据rocksdb之前就没有sync,断电可能会出现丢数据情况。设置为true的话,在hdd上 sync操作会比较费)
案例分享
1.fe和be是混布的,共用单块磁盘,master fe节点的磁盘IO打满导致stream load导入慢
2.网络慢导致的问题
注意⚠️: flink 写入的底层也是stream load,所以flink写入慢的情况可参考上述步骤分析。
2
Routine Load 消费慢
Doris 可以通过 Routine Load 导入方式持续消费 Kafka Topic 中的数据。Doris 通过这种方式可以实时生成导入任务不断消费 Kakfa 集群中指定 Topic 中的消息。如果存在消费慢的情况,可以根据下列步骤进行排查:
排查方法
1. 检查 Routine Load 配置,确认配置正确,参考文档。
2. 使用 SHOW ROUTINE LOAD
查看 abortedTaskNum
,是不是很多,很多表明 Task 一直失败,需要在 FE 日志中根据 Job ID 查详细失败原因。
3. 如果配置没有问题,且 Task 没有失败,检查是否存在资源瓶颈。
4. 如果没有资源瓶颈,分析 Kafka 是否慢。 可在 BE 日志中搜索 blocking get time(us)
,如有显著高值,如下:
blocking get time(us): 10018529, blocking put time(us): 1691
表明 Kafka 慢了,看下kafka的问题。
案例分享
1. 磁盘是共享的,其他服务把盘io打满了
3
Insert Into Select 导入慢
INSERT INTO 支持将 Doris 查询的结果导入到另一个表中。如果在进行 Insert Into Select 操作时发现性能慢,可根据下列步骤进行解决:
排查步骤
- 利用
SET dry_run_query = true
先运行查询,确认是否为查询慢导致。 - 如果是 Doris 2.0 到 2.1.3 之间的版本,设置
enable_nereids_dml = true
,启用新最优化器。2.1.3之后默认开启了。 - 2.1 以上 set enable\_memtable\_on\_sink\_node = false 测试下非前移对导入的影响。
注意⚠️:MemTable 前移在 2.1 版本中默认开启,用户无需修改原有的导入命令即可获得大幅性能提升。如果在使用过程中遇到问题、希望回退到原有的导入方式,可以在 MySQL 连接中设置环境变量 enable\_memtable\_on\_sink\_node=false 来关闭 MemTable 前移。
- 2.1 以上 Set enable\_strict\_consistency\_dml = false 测试下关 shuffle对导入的影响。
注意⚠️:启用 shuffle 可能会导致数据在 SINK 上分布不均衡
- Set experimental\_enable\_pipeline\_engine = false 和 experimental\_enable\_pipeline\_x\_engine= false 试试关 pipeline
- 非 pipeline 模式调大 parallel\_fragment\_exec\_instance\_num 增大并发
- Pipeline 模式调大 parallel\_pipeline\_task\_num 增大并发
在上面三种方式导入过程中,如果上面的方法,仍然不能确定具体原因,可以通过设置 enable_profile = true
获取导入的 Profile 来具体分析分析慢的原因。自己不会分析的话,可以联系Doris社区同学,妥妥没问题~
往期推荐
[
](http://mp.weixin.qq.com/s?__b...
Doris的Stream Load那些事儿,你踩过哪些“坑”?
如何排查 Apache Doris 中 "Failed to commit txn" 导入失败问题?
完
●
数据极客圈子介绍
●
圈子1
Apache Doris社区是目前国内最活跃的开源社区(之一)。Apache Doris(Apache 顶级项目) 聚集了世界全国各地的用户与开发人员,致力于打造一个内容完整、持续成长的互联网开发者学习生态圈!
如果您对Apache Doris感兴趣,可以通过以下入口访问官方网站、社区论坛、GitHub和dev邮件组:
💡官网文档:https://doris.apache.org
💡社区论坛:https://ask.selectdb.com
💡GitHub:https://github.com/apache/doris
💡dev邮件组:mailto:dev@doris.apache.org
可以加作者微信(Faith\_xzc)直接进Doris官方社区群
圈子2
PowerData是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的数据开源社区。
社区整理了一份每日一题汇总及社区分享PPT,内容涵盖大数据组件、编程语言、数据结构与算法、企业真实面试题等各个领域,帮助您提升自我,成功上岸。
可以加作者微信(Faith\_xzc)直接进PowrData官方社区群
叮咚✨ “数据极客圈” 向你敞开大门,走对圈子跟对人,行业大咖 “唠” 数据,实用锦囊天天有,就缺你咯!快快关注数据极客圈,共同成长!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。