Apache Druid0.17版本冷热数据分离设置

Druid0.17版本冷热数据分离设置

有一个安装好的Druid集群,安装Druid集群请参考 Druid0.17.0版本集群实施文档

这里我已经按照上面的步骤向集群中写入了一个数据源。

集群规划

根据已安装的集群对Druid的数据服务器做一个规划

  • 主机名称列表

    • master 192.168.1.91
    • node1 192.168.1.92
    • node2 192.168.1.93
    • node3 192.168.1.94
    • node4 192.168.1.95
    • node5 192.168.1.96
  • node2 存储热数据(hot)分组

  • node3 存储冷数据(clod)分组

  • node4 node5 存储默认数据(default)分组

当前数据分布情况

  • 当前数据源 为demo 数据大小为380MB左右,副本大小为760MB左右,因为是2个副本,所以副本大小应该是数据大小的两倍。
2020611224926
  • 数据分布情况是四个Historical均匀分布,四个节点的大小是差不多的。
2020611225139

对冷热数据分布规划

  • 热数据 保留最近1个小时的数据,副本为2个
  • 冷数据 保留最近3个小时的数据,副本为1个
  • 默认数据 保留所有的数据,副本为1个

修改Historical的相关配置

对数据服务器Historical更改配置(更改 node2 节点的 )

vim $DRUID_HOME/conf/druid/cluster/data/historical/runtime.properties

druid.server.tier=hot
druid.server.priority=100

对数据服务器Historical更改配置(更改 node3 节点的 )

vim $DRUID_HOME/conf/druid/cluster/data/historical/runtime.properties

druid.server.tier=clod
druid.server.priority=100

改完之后,停止所有的数据服务 node2 node3 node4 node5 执行

停止
service --down

启动
nohup start-cluster-data-server 1>/dev/null 2>&1 &
202061123750

从上图就能看出来,默认规则的数据会分布在 node4 node5 在没有设置规则的时候使用的是默认的规则

设置规则

  • 点击设置规则
20206112399
  • 点击添加规则
2020611231428
  • 第一个规则
2020611231612
  • loadByPeriod 周期性

  • PT1H 最近1个小时

  • Include future 未来一直是这样

  • Replicants 1 副本为1个

  • Tier hot 热数据

  • 第二个规则

202061123198
  • loadByPeriod 周期性

  • PT1H 最近3个小时

  • Include future 未来一直是这样

  • Replicants 1 副本为1个

  • Tier hot 冷数据

  • 下一步

2020611232036
  • 描述信息 保存
2020611232110

数据分布结果是这样的,数据全部加载到 hot 节点

2020612096

[1] 第一次更改规则

去除 hot规则中 Include future 选项

202061202534

数据分布是这样的

202061202750

可以看到hot节点是保留了最新一个小时的数据,但是剩余的数据全部在cold节点,这样也是不对的

[2] 第二次更改规则

去除 cold规则中 Include future 选项

20206120302

数据分布是这样的

20206120317

可以看到hot节点数据还是一个小时,但是cold的数据全部没有了,default 两个节点都加载了全部的数据,因为默认规则是两个副本,还是有问题的

[3] 经过多次的配置之后发现,还是这样的问题,

一直出现这样的问题,我个人认为数据分三层似乎行不通

[4] 我决定把node3 设置为hot

vim $DRUID_HOME/conf/druid/cluster/data/historical/runtime.properties

druid.server.tier=hot
druid.server.priority=100

重启之后,数据分布是这样的

20206121018

更改规则 hot数据为2个副本

20206121142

当前的节点分布(把默认的副本改成了1个 删除了所有的规则)

202061211139

[5] 配置热数据保存最近2个小时 2个副本

202061211237

数据分布

202061211540

这样就能满足热数据多个副本,提高查询的效率,其他的数据加载一个副本,

[6] 加载最近4个小时的数据,前1小时为热数据,后3个小时为冷数据,其他的不要

20206121191

最终的数据分布也是不正确的。

经过多次的配置尝试

总结

Druid的新版的规则配置上,加载规则配置一个,删除规则配置一个。或者加载规则配置一个,然后会默认使用默认规则。

[1] 配置一个周期加载规则和一个删除规则,从图上看是加载了数据到hot节点,但是从segment-cache上看就能看到加载的不是最近2小时的,是几个小时之前的,当时查询似乎是没有问题

202061303743
202061303959

[2] 配置一个周期加载规则和一个删除规则,从图上看是加载了数据到default节点,但是从segment-cache上看就能看到加载的不是最近2小时的,是几个小时之前的,当时查询似乎是没有问题

202061303912
20206130390

[3] 配置一个周期加载规则和一个删除规则,hot节点一个副本,default一个副本,从图上看是加载了数据到两个节点节点,但是从segment-cache上看就能看到加载的不是最近2小时的

202061304022
202061304157

[4] 加载所有的数据,最近2个小时为hot数据2个副本,其余的为cold数据,1个副本,规则勾选include future选项。从结果上看是周期加载的最近10个小时的数据到hot节点上,剩余其他数据加载到了default节点上,使用的默认规则。

hot数据分布在hot节点
cold数据分布在default节点

2020617121025
2020617121043
202061712112

因为测试的时间还是比较短,而且有一个时区的问题,没有准确的看到具体的情况(我的机器的时区全部是CST),感觉时区这块有些影响,不然不会一直保留的是10个小时的数据。后面有机会在做测试,同时还有一个问题就是,当hot节点就一个是,设置副本大于1时,其实是不生效的,当hot节点有多个的时候才生效。

上面测试遇到很多的问题,就是设置了规则发现不加载,或者只加载到同一类型的节点上去,因为时间也是比较短,不能长时间观察,可能也是和时区有关系。这个问题,当时没有注意到,最后面发觉这方面问题,最近不想在测试了,后面找时间在测试吧。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容