Druid 加载 Kafka 流数据 KafkaSupervisorIOConfig 配置信息表

可用的字段和配置信息,请参考表格。

需要注意的是配置的段的定义为为: ioConfig

字段(Field) 类型(Type) 描述(Description) 是否必须(Required)
topic String 从 Kafka 中读取数据的 主题(topic)名。你必须要指定一个明确的 topic。例如 topic patterns 还不能被支持。 Y
inputFormat Object inputFormat 被指定如何来解析处理数据。请参考 the below section 来了解更多如何指定 input format 的内容。 Y
consumerProperties Map<String, Object> 传递给 Kafka 消费者的一组属性 map。这个必须包含有一个 bootstrap.servers 属性。这个属性的值为: <BROKER_1>:<PORT_1>,<BROKER_2>:<PORT_2>,... 这样的服务器列表。针对使用 SSL 的链接: keystoretruststorekey 可以使用字符串密码,或者使用 Password Provider 来进行提供。 Y
pollTimeout Long Kafka 消费者拉取数据等待的时间。单位为:毫秒(milliseconds)The length of time to wait for the Kafka consumer to poll records, in N(默认=100))
replicas Integer 副本的数量, 1 意味着一个单一任务(无副本)。副本任务将始终分配给不同的 workers,以提供针对流程故障的恢复能力。 否(no)(默认值:1)
taskCount Integer 在一个 replica set 集中最大 reading 的数量。这意味着读取任务的最大的数量将是 taskCount * replicas, 任务总数(reading + publishing)是大于这个数值的。请参考 Capacity Planning 中的内容。如果 taskCount > {numKafkaPartitions} 的话,总的 reading 任务数量将会小于 taskCount N(默认=1))
taskDuration ISO8601 Period 任务停止读取数据并且将已经读取的数据发布为新段的时间周期 N(默认=PT1H)
startDelay ISO8601 Period supervisor 开始管理任务之前的等待时间周期。 N(默认=PT1S)
period ISO8601 Period supervisor 将要执行管理逻辑的时间周期间隔。请注意,supervisor 将会在一些特定的事件发生时进行执行(例如:任务成功终止,任务失败,任务达到了他们的 taskDuration)。因此这个值指定了在在 2 个事件之间进行执行的最大时间间隔周期。 N(默认=PT30S)
useEarliestOffset Boolean 如果 supervisor 是第一次对数据源进行管理,supervisor 将会从 Kafka 中获得一系列的数据偏移量。这个标记位用于在 Kafka 中确定最早(earliest)或者最晚(latest)的偏移量。在通常使用的情况下,后续的任务将会从前一个段结束的标记位开始继续执行,因此这个参数只在 supervisor 第一次启动的时候需要。 否(no)(默认值: false)
completionTimeout ISO8601 Period 声明发布任务为失败并终止它 之前等待的时间长度。如果设置得太低,则任务可能永远不会发布。任务的发布时刻大约在 taskDuration (任务持续)时间过后开始。 N(默认=PT30M)
lateMessageRejectionStartDateTime ISO8601 DateTime 用来配置一个时间,当消息时间戳早于此日期时间的时候,消息被拒绝。例如我们将这个时间戳设置为 2016-01-01T11:00Z 然后 supervisor 在 2016-01-01T12:00Z 创建了一个任务,那么早于 2016-01-01T11:00Z 的消息将会被丢弃。这个设置有助于帮助避免并发(concurrency)问题。例如,如果你的数据流有延迟消息,并且你有多个需要在同一段上操作的管道(例如实时和夜间批处理摄取管道)。 N(默认=none)
lateMessageRejectionPeriod ISO8601 Period 配置一个时间周期,当消息时间戳早于此周期的时候,消息被拒绝。例如,如果这个参数被设置为 PT1H 同时 supervisor 在 2016-01-01T12:00Z 创建了一个任务,那么所有早于 2016-01-01T11:00Z 的消息将会被丢弃。 个设置有助于帮助避免并发(concurrency)问题。例如,如果你的数据流有延迟消息,并且你有多个需要在同一段上操作的管道(例如实时和夜间批处理摄取管道)。请注意 lateMessageRejectionPeriod 或者 lateMessageRejectionStartDateTime 2 个参数只能指定一个,不能同时赋值。 N(默认=none)
earlyMessageRejectionPeriod ISO8601 Period 用来配置一个时间周期,当消息时间戳晚于此周期的时候,消息被拒绝。例如,如果这个参数被设置为 PT1H,taskDuration 也被设置为 PT1H,然后 supervisor 在 2016-01-01T12:00Z 创建了一个任务,那么所有晚于 2016-01-01T14:00Z 的消息丢会被丢弃,这是因为任务的执行时间为 1 个小时,earlyMessageRejectionPeriod 参数的设置为 1 个小时,因此总计需要等候 2 个小时。 注意: 任务有时候的执行时间可能会超过任务 taskDuration 参数设定的值,例如,supervisor 被挂起的情况。如果设置 earlyMessageRejectionPeriod 参数过低的话,在任务的执行时间超过预期的话,将会有可能导致消息被意外丢弃。 N(默认=none)

如上面表格的配置信息,我们可以对 Kafka 中的配置进行一些调整来满足特定的项目消息需求。

如果你对需要调整的默认值不是非常了解和清楚的话,可以使用默认值,通常默认值不是最优的,但是可能是能够保障能正确工作的最低配置。