跳转到主要内容

摄入概述

在 Druid 中加载数据的过程称为摄入(Ingestion)索引(Indexing)。当您将数据摄入 Druid 时,Druid 会从源系统中读取数据并将其存储为名为 分片(Segments) 的数据文件。通常,每个分片文件包含数百万行数据。

对于大多数摄入方法,Druid 的 Middle Manager 进程或 Indexer 进程会负责加载源数据。

在摄入过程中,Druid 会创建分片并将其存储在 深层存储(Deep storage) 中。Historical 节点会将这些分片加载到内存中以响应查询。对于流式摄入,Middle Manager 和 Indexer 可以在数据到达时实时响应查询。有关更多信息,请参阅 存储概述

本主题介绍了流式和批处理摄入方法。以下主题描述了适用于所有 摄入方法 的概念和信息:

有关每种摄入方法特有的概念和配置的更多信息,请参阅相应摄入方法的主题。

摄入方法

下表列出了 Druid 最常见的数据摄入方法,并进行了对比,以帮助您为自己的场景选择最合适的方法。每种摄入方法都支持其特定的源系统。有关每种方法的工作原理以及特定于该方法的配置属性的详细信息,请查看其文档页面。

流式摄入

流式摄入有两种可选方案。流式摄入由持续运行的 Supervisor(监督者)控制。

方法KafkaKinesis
Supervisor 类型kafkakinesis
工作原理Druid 直接从 Apache Kafka 读取数据。Druid 直接从 Amazon Kinesis 读取数据。
能否摄入滞后数据?是。是。
是否保证仅处理一次(Exactly-once)?是。是。

批处理

批处理摄入有两种可选方案。批处理作业与一个在作业期间运行的控制器任务(Controller task)相关联。

方法原生批处理SQL
控制器任务类型index_parallelquery_controller
提交方式Tasks API 发送 index_parallel 规范。SQL task API 发送 INSERTREPLACE 语句。
并行度使用子任务(如果 maxNumConcurrentSubTasks 大于 1)。使用 query_worker 子任务。
容错性工作节点失败后自动重启。控制器任务失败会导致作业失败。控制器或工作节点任务失败会导致作业失败。
能否追加?是。是 (INSERT)。
能否覆盖?是。是 (REPLACE)。
外部依赖无。无。
输入源任何 inputSource任何 inputSource(使用 EXTERN)或 Druid 数据源(使用 FROM)。
输入格式任何 inputFormat任何 inputFormat
二级分区选项提供动态、哈希和基于范围的分区方法。详细信息请参阅 partitionsSpec范围分区 (CLUSTERED BY)。
汇总模式如果 tuningConfig 中的 forceGuaranteedRollup 为 true,则为完美汇总。始终完美。