1.问题描述
doris新增一个调度任务后,运行时长在10分钟以上。感觉是任务有问题,就看了一下doris监控。不看不知道,一看吓一跳。
任务没运行一次,都有一个be内存使用急剧上升,几乎打满。
2.处理过程
①pipeline引擎
查询资料,可以使用pipeline计算引擎(set enable_pipeline_engine = true;),多并行度运行。设置后并没有效果。
②分桶优化
由于数据量不大,结合doris官网推荐的单分桶数据即一个tablet的数据量控制在1GB - 10GB。所以我们设置的分桶数为1,这就是导致单节点内存异常的根源所在。因为分桶数为1,及时设置pipeline计算引擎,任务也只会在单节点运行(如果是2.1以上版本,使用pipeline计算引擎就可以得到解决,因为2.1对pipeline做了local shuffle优化,即使是单分桶也可以实现多并行度)。所以我们将分桶数设置为7(因为我们的be节点数为7),问题得以解决。
3.总结
doris的模型设计,分区的分桶数量建议最小为be节点的个数