保留或者自动的删除数据

在Apache Druid中,Coordinator进程使用规则来确认应该向集群中加载或者从集群中删除哪些数据。这些规则主要用于数据保留和查询执行,并且都是在Coordinator控制台进行设置(http://coordinator_ip:port)

有三种类型的规则:加载规则、删除规则和广播规则。 加载规则表示如何将段分配给不同的Historical进程层,以及每个层中应存在多少个段的副本。删除规则表示何时应从集群中完全删除段。最后,广播规则表示不同数据源的段在Historical中应该如何共存。

Coordinator从元数据存储中加载一组规则,规则可能特定于某个数据源或者可以配置一组默认的规则。 规则是按顺序读取的,因此规则的顺序非常重要。 Coordinator将在所有的状态为used的段之间循环, 并将每个段与应用的第一条规则相匹配, 每个段只能匹配一条规则。

请注意:推荐使用Coordinator的控制台来配置规则,当然了, 也可以使用Coordinator的HTTP接口来通过编程进行配置规则

加载规则

加载规则表示一个Historical层中应该存在多少个段的副本。请注意:如果加载规则仅用于保留某个时间间隔或周期的数据,则必须附带删除规则。如果不包括删除规则,则默认规则(loadForever)将保留不在指定间隔或周期内的数据。

永久加载规则

{
  "type" : "loadForever",
  "tieredReplicants": {
    "hot": 1,
    "_default_tier" : 1
  }
}
  • type: 该字段都是"loadForever"
  • tieredReplicants: 一个JSON对象,其中键是层名称,值是该层的副本数。

间隔加载规则

{
  "type" : "loadByInterval",
  "interval": "2012-01-01/2013-01-01",
  "tieredReplicants": {
    "hot": 1,
    "_default_tier" : 1
  }
}
  • type: 该字段都是"loadByInterval"
  • interval: 表示ISO-8601时间间隔的JSON对象
  • tieredReplicants: 一个JSON对象,其中键是层名称,值是该层的副本数。

周期加载规则

{
  "type" : "loadByPeriod",
  "period" : "P1M",
  "includeFuture" : true,
  "tieredReplicants": {
      "hot": 1,
      "_default_tier" : 1
  }
}
  • type: 该字段都是"loadByPeriod"
  • period: 表示ISO-8601时间周期的JSON对象
  • includeFuture: 一个JSON布尔值,指示加载周期是否应包括未来。此属性是可选的,默认值为true。
  • tieredReplicants: 一个JSON对象,其中键是层名称,值是该层的副本数。

删除规则

删除规则表示何时应从集群中删除段。

永久删除规则

{
  "type" : "dropForever"
}
  • type: 该字段都是"dropForever"

所有匹配到这个规则的段将从集群中删除

间隔删除规则

{
  "type" : "dropByInterval",
  "interval" : "2012-01-01/2013-01-01"
}
  • type: 该字段都是"dropByInterval"
  • interval: 表示ISO-8601时间间隔的JSON对象

如果interval间隔包含了段的interval,则这个段会被删除

周期删除规则

{
  "type" : "dropByPeriod",
  "period" : "P1M",
  "includeFuture" : true
}
  • type: 该字段都是"dropByPeriod"
  • period: 表示ISO-8601时间周期的JSON对象
  • includeFuture: 一个JSON布尔值,指示加载周期是否应包括未来。此属性是可选的,默认值为true。

周期规则之前删除

{
  "type" : "dropBeforeByPeriod",
  "period" : "P1M"
}
  • type: 该字段都是"dropBeforeByPeriod"
  • period: 表示ISO-8601时间周期的JSON对象

请注意:dropBeforeByPeriod + loadForever 等价于 loadByPeriod(includeFuture = true) + dropForever

广播规则

广播规则表示一个数据源的段应该由集群中的以下服务类型来加载: Historical, Brokers, Tasks和Indexers

请注意: 广播段只能通过Historical来直接查询,但它们当前支持加载到其他类型的服务是用来支持Join查询。

永久广播规则

{
  "type" : "broadcastForever"
}
  • type: 该字段都是"broadcastForever"

此规则适用于数据源的所有段,涵盖所有间隔。

间隔广播规则

{
  "type" : "broadcastByInterval",
  "interval" : "2012-01-01/2013-01-01"
}
  • type: 该字段都是"broadcastByInterval"
  • interval: 表示ISO-8601时间间隔的JSON对象

周期广播规则

{
  "type" : "broadcastByPeriod",
  "period" : "P1M",
  "includeFuture" : true
}
  • type: 该字段都是"broadcastByPeriod"
  • period: 表示ISO-8601时间周期的JSON对象
  • includeFuture: 一个JSON布尔值,指示加载周期是否应包括未来。此属性是可选的,默认值为true。

永久地删除数据

Druid可以完全从集群中删除数据,擦除元数据存储条目,并从深度存储中删除标记为unused的任何段的数据(通过规则从集群中删除的段始终标记为unused)。你可以向Overlord 提交一个 Kill任务 来完成这个任务。

重新加载已经删掉的数据

从Druid集群中删除的数据不能仅使用规则重新加载。要在Druid中重新加载丢弃的数据,必须首先设置保留期(即将保留期从1个月更改为2个月),然后在Druid Coordinator控制台中或通过Druid Coordinator端点将属于数据源的所有段标记为已用。

渝ICP备16001958号 | Copyright © 2020 apache-druid.cn All right reserved,powered by Gitbook最近一次修改时间: 2021-11-16 16:54:31

results matching ""

    No results matching ""