3

Druid 如何在将实时摄取的数据移交给深度存储之前对其进行持久化?

在文档中,Druid 有关于 intermedatepersistperiod 和 maxpendingpersists 的配置。但它并没有说明什么是中间持久性,它是如何工作的。

从字面上看,我假设它会定期为内存中的实时数据保留数据。给定以小时/天为单位的段粒度,如果没有机制在段时间结束之前保留数据,则会产生可用性和可靠性问题。

4

1 回答 1

1

好问题!对持久化的调用在 Appenderator 接口中定义,该接口提供了有关如何索引数据、如何将数据推送到深度存储以及如何在摄取期间持久化数据的 API。方法“Appenderator.persistAll()”的注释如下

Persist any in-memory indexed data to durable storage. This may be only somewhat durable, e.g. the machine's local disk.

该函数默认定义在 中AppenderatorImpl.javapersistAll()最终调用writeCommit()进行持久化,最终只是将值写入名为commit.json的 json 文件。

因此,为了回答您的问题,默认情况下,druid 仅通过写入 Peon 的磁盘来保持实时摄取的数据。

于 2019-09-14T01:54:36.000 回答