关于Doris集群的扩容意见征询
13671653088 发布于2021-06 浏览:4106 回复:4
0
收藏

目标的数据流架构图

当前Doris集群环境:

Doris版本:0.14.7

服务器数量:13台

服务器配置:16核64G

FE Follower数量:3台独立部署

BE 数量:10台,2台与FE Observer混布,8台独立

FE Observer:2台,与BE混布

 

业务量级以及需求:

1.     整个数仓都在Doris上,Flink通过Stream load方式写Doris

2.     ODS近500张表

3.     ODS数据通过flink实时同步,每10秒钟同步一次所有500张表

4.     ODS事实表数据量2KW-10KW,日增量50W-100W

5.     业务存在大量历史数据更新操作,经常对全表数据更新,经常造成Flink需要同步全量数据,在Doris中合并

6.     离线ETL为T+1延迟,每天反刷前一天实时数据

7.     前端有应用直连Doris,需要有一定并发要求,100QPS下,对事实表简单的Group By Sum查询,延迟在100ms以下。

 

当前集群状态设置:

1.     ODS层使用Unique Key

2.     DWD与DWS层使用Aggrate Key,非主键列全部使用Replace_if_not_null方式

3.     ETL为自研工具,调度Python包读取Sql语句,执行ETL

4.     版本合并相关:

BE Compaction Score稳定状态维持在200左右

BE CPU占用稳定维持在50%

BE配置:compaction_task_num_per_disk=7

BE配置:max_cumulative_compaction_num_singleton_deltas=500

5.     内存设置相关:

全局变量:load_mem_limit = 4G;

全局变量:exec_mem_limit = 30G

执行内存影响DWD和DWS的离线ETL,设置超过30G,BE会OOM

设置24G,执行ETL显示执行内存不足

 

之后的计划:

我们当前只将一个业务线的客户数据放在了Doris上,还有两个其它业务线,以及公司内部数据,计划从KUDU集群迁移至Doris。这部分数据会导致整体数据量翻倍,ODS层的写入频次翻倍(再增加400张ODS表,也需要Flink实时写入同步)。DWS层也会有更多用户访问,应用接入。

 

因此需要考虑对Doris集群进行扩容或者架构调整。

目前有以下一些思路:

硬件角度

1.     对当前10个BE节点进行纵向扩容(增加单机cpu,内存)

2.     对集群进行横向扩容,增加BE节点数量

业务角度

1.     把ODS层(flink频繁写入,版本合并压力大)与其他层分离至不同Doris集群,

使得ODS的高频写入不影响其他层的ETL和查询

2.     不同的业务线,放在不同的Doris集群上,避免业务之间的相互影响。

3.     全部放在一个大集群中。

 

想寻求一下各位对于扩容的建议和意见,使用哪种思路扩容比较合适,亦或者有其它的扩容思路。

收藏
点赞
0
个赞
共4条回复 最后由IamStrangers回复于2021-06
#5IamStrangers回复于2021-06
#4 13671653088回复
感谢详尽的答复 关于问题1,感谢建议,我们会进行采纳,先对集群进行纵向扩容,通过硬件减缓OOM的问题。 关于问题2,我们目前使用的已经是SSD了,根据grafana监控显示,BE的磁盘读写维持在20%以下。 关于问题3,感觉这是一个相当有有用的功能。希望了解下,资源标签这项功能的版本,其大概的计划发布时间。此外,这项资源标签,主要隔离的是BE的运算资源,还是FE和BE都进行隔离。
展开

主要是进行BE节点级别的隔离,FE其实不用隔离,我们暂时还有遇到FE需要隔离的情况。

这个功能可能会在7月份发布

0
#413671653088回复于2021-06

感谢详尽的答复

关于问题1,感谢建议,我们会进行采纳,先对集群进行纵向扩容,通过硬件减缓OOM的问题。

关于问题2,我们目前使用的已经是SSD了,根据grafana监控显示,BE的磁盘读写维持在20%以下。

关于问题3,感觉这是一个相当有有用的功能。希望了解下,资源标签这项功能的版本,其大概的计划发布时间。此外,这项资源标签,主要隔离的是BE的运算资源,还是FE和BE都进行隔离。

0
#3IamStrangers回复于2021-06

这里有几个问题:

1. OOM的问题。

这个主要是因为目前Doris 的内存控制还不是很好,有些内存没有记录。导致即使配置了mem limit,也会有oom的问题,这个doris社区一直在改进。对于你这种有etl和ods层场景,比较建议使用大内存机器(128甚至256G)。如果CPU目前没吃满的话,建议纵向扩容。

2. Compaction的问题

Compaction Score在200有点高了,不知道你们是不是ssd,如果是ssd的话,应该会好很多,不然IO util 可能会很高,影响集群。

3. 业务之间隔离

后续版本我们会通过资源标签的方式对集群内的节点进行划分,从而进行集群内部节点级别的资源隔离,应该可以解决你的业务隔离的需求。

0
#2IamStrangers回复于2021-06

首先赞一下这个问题的详细程度~

0
快速回复
TOP
切换版块