当 apache druid 已经有超过 100 万个段时插入新段
Insert new segment when apache druid already have more them 1M segments
我有一个 apache druid 集群设置,其中包含 1 个主服务器、2 个数据服务器和 1 个查询服务器,以及作为深层存储的 apache cassandra。现在我的德鲁伊设置已经有超过 100 万个段和 15 个不同的数据源。
每当我尝试插入新数据时,有时都会出现 OutofMemeory 异常。
我想做的是,当我想插入新数据时,我想标记一些段unused
。这是问题所在,根据 druid doc 如果我将任何段标记为未使用德鲁伊将从深度存储中删除它。我不想要那个。插入新数据后,我想重新启用 unused
段。我该怎么做?
- Druid 不会从深层存储中删除
unused
段,直到您 运行 a kill task
。阅读 here
所以基本上,有 2 个步骤可以永久删除特定段:disable segment
通过 segment-interval 或 segmentId 然后 post a kill task
on druid server
- 只要一个段只被禁用,就可以重新加载。重新加载未使用的段 post 与德鲁伊服务器上的以下任务类似:
curl -X 'POST' -H 'Content-Type:application/json' -d '{ "interval" :
"interval-of-segment" }' http://localhost:8081/druid/coordinator/v1/datasources/datasourcename/markUsed
我有一个 apache druid 集群设置,其中包含 1 个主服务器、2 个数据服务器和 1 个查询服务器,以及作为深层存储的 apache cassandra。现在我的德鲁伊设置已经有超过 100 万个段和 15 个不同的数据源。 每当我尝试插入新数据时,有时都会出现 OutofMemeory 异常。
我想做的是,当我想插入新数据时,我想标记一些段unused
。这是问题所在,根据 druid doc 如果我将任何段标记为未使用德鲁伊将从深度存储中删除它。我不想要那个。插入新数据后,我想重新启用 unused
段。我该怎么做?
- Druid 不会从深层存储中删除
unused
段,直到您 运行 akill task
。阅读 here
所以基本上,有 2 个步骤可以永久删除特定段:disable segment
通过 segment-interval 或 segmentId 然后 post a kill task
on druid server
- 只要一个段只被禁用,就可以重新加载。重新加载未使用的段 post 与德鲁伊服务器上的以下任务类似:
curl -X 'POST' -H 'Content-Type:application/json' -d '{ "interval" :
"interval-of-segment" }' http://localhost:8081/druid/coordinator/v1/datasources/datasourcename/markUsed