2020-04-08 11:18:21 +08:00

4.9 KiB
Raw Blame History

数据摄入

综述

Druid中的所有数据都被组织成这些段是数据文件通常每个段最多有几百万行。在Druid中加载数据称为摄取或索引,它包括从源系统读取数据并基于该数据创建段。

在大多数摄取方法中加载数据的工作由Druid MiddleManager 进程(或 Indexer 进程完成。一个例外是基于Hadoop的摄取这项工作是使用Hadoop MapReduce作业在YARN上完成的尽管MiddleManager或Indexer进程仍然参与启动和监视Hadoop作业。一旦段被生成并存储在 深层存储它们将被Historical进程加载。有关如何在引擎下工作的更多细节请参阅Druid设计文档的存储设计 部分。

如何使用本文档

当前正在阅读的这个页面提供了通用Druid摄取概念的信息以及 所有摄取方法 通用的配置信息。

每个摄取方法的单独页面提供了有关每个摄取方法独有的概念和配置的附加信息。

我们建议您先阅读(或至少略读)这个通用页面,然后参考您选择的一种或多种摄取方法的页面。

摄入方式

下表列出了Druid最常用的数据摄取方法帮助您根据自己的情况选择最佳方法。每个摄取方法都支持自己的一组源系统。有关每个方法如何工作的详细信息以及特定于该方法的配置属性请查看其文档页。

流式摄取

最推荐、也是最流行的流式摄取方法是直接从Kafka读取数据的 Kafka索引服务 。如果你喜欢KinesisKinesis索引服务 也能很好地工作。

下表比较了主要可用选项:

Method Kafka Kinesis Tranquility
Supervisor类型 kafka kinesis N/A
如何工作 Druid直接从 Apache Kafka读取数据 Druid直接从Amazon Kinesis中读取数据 Tranquility, 一个独立于Druid的库用来将数据推送到Druid
可以摄入迟到的数据 Yes Yes No(迟到的数据将会被基于 windowPeriod 的配置丢弃掉)
保证不重不丢Exactly-once Yes Yes No

批量摄取

从文件进行批加载时,应使用一次性 任务,并且有三个选项:index_parallel(本地并行批任务)、index_hadoop基于hadoopindex(本地简单批任务)。

一般来说如果本地批处理能满足您的需要时我们建议使用它因为设置更简单它不依赖于外部Hadoop集群。但是仍有一些情况下基于Hadoop的批摄取可能是更好的选择例如当您已经有一个正在运行的Hadoop集群并且希望使用现有集群的集群资源进行批摄取时。

此表比较了三个可用选项:

方式 本地批任务(并行) 基于Hadoop 本地批任务(简单)
任务类型 index_parallel index_hadoop index
并行? 如果 inputFormat 是可分割的且 tuningConfig 中的 maxNumConcurrentSubTasks > 1, 则 Yes Yes No每个任务都是单线程的
支持追加或者覆盖 都支持 只支持覆盖 都支持
外部依赖 Hadoop集群用来提交Map-Reduce任务
输入位置 任何 输入数据源 任何Hadoop文件系统或者Druid数据源 任何 输入数据源
文件格式 任何 输入格式 任何Hadoop输入格式 任何 输入格式
Rollup modes 如果 tuningConfig 中的 forceGuaranteedRollup = true, 则为 Perfect(最佳rollup) 总是Perfect最佳rollup 如果 tuningConfig 中的 forceGuaranteedRollup = true, 则为 Perfect(最佳rollup)
分区选项 可选的有Dynamic, hash-basedrange-based 三种分区方式,详情参见 分区规范 通过 partitionsSpec中指定 hash-basedrange-based分区 可选的有Dynamichash-based二种分区方式,详情参见 分区规范

Druid数据模型

数据源

主时间戳列

维度

指标

Rollup

什么是rollup

启用或者禁用rollup

rollup示例

最大化rollup比率

最佳rollup VS 尽可能rollup

分区

为什么分区

如何设置分区

摄入规范

dataSchema

dataSource
timestampSpec
dimensionSpec
metricsSpec
granularitySpec
transformSpec
过时的 dataSchema 规范

ioConfig

tuningConfig