如何正确配置德鲁伊以触发定期终止任务

How to configure druid properly to fire a periodic kill task

我一直在尝试让 druid 定期触发 kill 任务以清理未使用的段。

这些是负责它的配置变量

druid.coordinator.kill.on=true
druid.coordinator.kill.period=PT45M
druid.coordinator.kill.durationToRetain=PT45M
druid.coordinator.kill.maxSegments=10

从上面的配置来看,我的心智模型是,一旦摄取的数据被标记为未使用,kill 任务将触发并删除早于 45 分钟的段,同时保留 45 分钟的数据。 perioddurationToRetain 是让我困惑的配置变量,不太确定如何利用它们。任何帮助将不胜感激。

druid.coordinator.kill.on=true 的注意事项是段已从列入白名单的数据源中删除。白名单默认为空。 要使用所有数据源填充白名单,请将 killAllDataSources 设置为 true。一旦我这样做了,kill 任务就会按预期启动并从 s3 (COS) 中删除这些段。这已针对 Druid 版本 0.18.1 进行了测试。

现在,虽然可以在构建映像时设置上述配置属性,但 killAllDataSources 需要通过 API 进行设置。这也可以通过德鲁伊 UI 设置。

当您单击该选项时,会出现一个模式杀死所有数据源。单击 True,您应该会看到一个 kill 任务(下面的 Ingestion ---> Tasks)在指定的时间间隔内触发。将它作为 runtime.properties 的一部分或某种我们可以在构建德鲁伊图像时设置值的通用配置文件真的很好。

使用 crontab 对我们来说效果很好。

如果你想在德鲁伊之外控制段删除,那么你必须使用一个根据你想要的间隔运行的计划任务,并在德鲁伊中注册 kill-tasks。它可以增加您对段的控制,因为当它们消失时,您将无法恢复它们。可以用这个脚本陪你:

https://github.com/mostafatalebi/druid-kill-task