Druid中的Kafka Indexing Service源码分析

druid接入kafka indexing service整个流程 先介绍下我们的druid集群配置 Overload 1台 Coordinator 1台 Middle manager 3台 Broker 3台 Historical一共12台,其中cold 6台,hot 6台 druid版本:0.10, 0.9之后即可支持Kafka indexing service 目前的druid主要用来做批量灌入,包括天级,小时级,五分钟级 由于这个五分... 阅读详情


Kafka Indexing Service开发的目的是为了增强Kafka中数据的实时摄入。其特性如下:

  • 保障数据摄入的Exactly Once。
  • 可以摄入任意时间戳的数据,而不仅仅是当前数据。
  • 可以根据Kafka分区的变化二调整任务的数量。

影响数据摄入Exactly Once的主要因素是Kafka的Offset管理。Kafka Indexing Service为了实现Exactly Once语义,去掉了windowPeriod,并采用底层API实现了对Offset的事务管理。

Kafka Indexing Service的类图如下:


其中:

KafkaSupervisor

负责整个Kafka Indexing Service的创建以及其整个生命周期的管理,它监管Kafka Indexing Service的状态来完成协调移交,管理失败,同时保障添加/删除Kafka 分区以后的可扩展性以及任务的多副本执行。

TaskGroups

是KafkaSupervisor管理partition,Offset和Indexing service的数据结构,用来保障任务的多副本执行。每个TaskGroups中的所有任务做的都是相同的事情。读取分配给TaskGroups的所有partition的数据,而且都是从相同的Offset开始读取。通过修改replicas的值来调整任务副本数量。

KafkaPartitions
用来记录Kafka的Topic以及Partition -> Offset关系映射。

KafkaIndexTask

从KafkaIOConfig的startPosition中的offset处开始读取数据,一直到endPartition的结束Offset处结束读取,发布移交segment。在执行过程中,startPosition中的Offset不会变,endPosition的Offset初始设置为: Long.MAX_VALUE。KafkaSupervisor通过修改endPosition的值来结束任务的执行。运行中的任务有两种状态:读取和发布。任务会保持读取状态,直到达到taskDuration以后进入发布状态。接下来会保持发布状态,直到生成segment,并推送至Deep Storage,然后His节点加载。或者达到completionTimeout的时间。

Appenderator

用来索引数据,采用LSM-Tree结构。这个模块负责索引和查询数据,并将Segment推送到Deep Storage中,他只将Segment信息发布到元数据存储中。

FiniteAppendratorDriver

驱动Appendrator完成有限流式数据的索引,在索引结束后执行移交操作。它完成Appenderator不能做的那些事情,包括SegmentAllocator将数据分配到指定的Segment,监控移交等。

Kafka Indexing Service利用Kafka的底层Consumer接口,从传入startOffsets Map{partition, startOffset} 处读取数据,使用FiniteAppendratorDriver构建Segment。FiniteAppendratorDriver采用有限流失数据的处理方式,读取固定时间段的数据。

FiniteAppendratorDriver会带来副作用,会产生一些碎片化的Segment,特别是日志跨时段乱序延迟严重的情况。

如何使用?

将该Extension添加到Overlord和MiddleManager中:

druid.extensions.loadList=["other-modules", "kafka-indexing-service"]

通过 http://<OVERLORD_IP>:<OVERLORD_PORT>/druid/indexer/v1/supervisor 来提交任务。


使用Kafka、Flink、Druid构建实时数据系统架构 Kafka、Flink和Druid一起使用时,可以创建一个实时数据架构,减少这些等待时间。在这篇文章中,我们将探讨如何利用Kafka、Flink、Druid实现广泛的实时数据系统架构。 阅读详情

相关推荐

Druid Kafka indexing task停不下来,不进行Handoff

问题描述:Kafka indexing task,过了taskDuration仍在运行、ingest实时数据,不生成segments,导致coordinator console中最近的segments都是0B(即没有生成segments,数据都在middlemanager上)。 原因分析: 1).  默认配置中supervisor的workerThreads(default == mi

yxx1173的博客 2448

Druid.io index_realtime实时任务源码分析

tranquility 配合 index_realtime (备份,窗口等)完成实时数据流的持久化,查询等处理 形象类比入门 因为druid.io源码不少类都用了【消防】相关的术语,所以类比下是有必要的,阅读源代码也会相对容易一点。其中【消防员】这个角色尤为重要,负责了主要的接【消防水带】,开【消防栓】灭火工作。 【实时数据】 —> 水流 ----> 数据来源 【处理任务主体对象】—>【消防员】----> 核心处理 【持久化】—> [要灭的火] —> 数据落地 大体流程

master-dragon的专栏 1461

使用Druid将数据加载到Kafka

最后,我们运行了Druid加载任务,并验证了数据加载的结果。通过这种方式,我们可以实现将实时数据加载到Kafka中,为后续的流处理和实时分析提供支持。首先,我们需要在Kafka中创建一个主题(topic),作为数据加载的目标。接下来,我们需要配置Druid的加载任务,以将数据发送到Kafka主题。完成配置后,我们可以运行Druid加载任务,将数据发送到Kafka主题。这将显示Kafka主题中的所有数据,如果你看到了你预期的数据,则说明Druid成功将数据加载到Kafka中。三、配置Druid加载任务。

DeoSql的博客 285

Druid Kafka索引服务的Task动态伸缩

一、Kafka Indexing Service 运行原理 1、简介 Kafka Indexing Service 是 Druid 推出的利用 Druid 的索引服务实时消费 Kafka 数据的插件。该插件会在 Overlord 中启动一个 supervisor,supervisor 启动之后会负责创建task、调度task到Middlemanager中运行,并管理监控整个task...

weixin_38736107的博客 1593

cadence——MOS晶体管I-V特性曲线仿真

MOS晶体管I-V特性曲线仿真 目标:使用cadence绘制晶体管的I-V特性曲线(dc仿真) 流程: 新建原理图,将MOS管的栅极电压设为变量Vg,漏极电压设为变量Vd 打开ADEL,点击Variables——Copy From Cellview添加变量;并选择dc仿真,对Vd进行扫描 以Vg作为参变量进行仿真,点击Tools——Parametric Analysis进行设置 选择漏极电流作为输出,进行仿真即可得到I-V特性曲线 ...

skycmq的博客 1万+

Godot 4.x 实现 JRPG 回合制战斗系统:架构、状态机与实战优化

游戏开发中,状态机是管理复杂逻辑流转的核心设计模式,尤其在回合制战斗这类事件驱动的场景中。其原理是通过定义有限的状态和明确的转移条件,来控制系统在不同阶段的行为,从而实现清晰、可维护的流程控制。这项技术的价值在于能够将杂乱的条件判断代码结构化,降低模块间的耦合度,提升代码的可读性和可扩展性。在游戏开发领域,状态机广泛应用于角色AI、UI流程、战斗系统等场景。本文以Godot引擎为例,深入探讨如何运用节点与信号驱动架构,构建一个健壮的JRPG(日式角色扮演游戏)回合制战斗系统。内容涵盖从核心的**状态机**设

weixin_33749242的博客 500

Druid配置——Kafka Indexing Service(Kafka索引服务)

Kafka Indexing Service Kafka索引服务可以在Overlord上配置,通过管理Kafka索引任务的创建和生命周期来促进Kafka的消费。这些索引任务使用Kafka自己的分区和偏移机制读取事件,因此能够提供完全一次摄取的保证。他们还能够从Kafka读取非近期事件,并且不受使用Tranquility对其他摄取机制施加的窗口期限的影响。主管监督索引任务的状态,以协调切换,管理故障...

Niclas的博客 2036

专治疑难系列 - 解决打印机凭证冲突问题

一、问题描述 二、解决方法 三、问题已解决

Passerby_Wang的博客 2万+

apache druid 实时加载kafka 中的数据(一)

简介 apache druid是分布式列存储的OLAP框架。还是一个时间序列数据库。本篇文章主要是druid在kafka加载数据的配置。由于druid升级情况太快,本人的环境还是在0.13,主要改动方面还是UI,新的版本在UI方面更适合新手入门。 文章如有帮助,请关注微信公共号...

极客编程的专栏 1718

GAN网络详解析

介绍目前常见的GAN网络,以及GAN网络的基本组成

wm199的博客 6507

Win11+Ubuntu18.04+Ubuntu20.04三系统安装与卸载

以下情况均为个人情况:1.插入启动 U 盘后,登录时可以按F12(拯救者Y7000,不同电脑不同)进入BIOS,选择从启动盘启动。2.。3.5.在win基础上,安装第一个Ubuntu系统后,系统启动界面类似如下第一张图,Ubuntu不显示版本号。安装第二个Ubuntu系统后,系统启动界面如下第二张图,如果想更改启动项的名称,可自行查阅相关资料。

weixin_61686291的博客 2541

bootstrap 数据加载中提示_apache druid 实时加载kafka 中的数据

简介apache druid 是分布式列存储的 OLAP 框架。还是一个时间序列数据库。本篇文章主要是druid 在kafka 加载数据的配置。由于druid 升级情况太快,本人的环境还是在0.13,主要改动方面还是UI,新的版本在UI方面更适合新手入门。最终使用druid时,是0.9版本,当时在kafka加载数据推荐的方式是两种Tranquilitykafka index serviceTran...

weixin_39962125的博客 190

关于 SAP UI5 应用 url 中的特殊符号 # 的作用介绍

符号在 SAP UI5 的 URL 中不仅仅是一个分隔符,更是动态路由、状态管理和深链接的关键所在。通过合理使用,开发者可以实现高效、流畅的用户体验,同时保持系统的可维护性和扩展性。通过 SAP UI5 提供的灵活路由机制,企业应用可以轻松实现复杂导航需求,同时为用户提供直观的交互体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 415

Druid源码解析之Segment

上篇我们介绍了Druid的Column相关实现原理,本次介绍Segment的实现原理。Column在Druid中用于管理单列,Segment则用于管理一组列。这组列包括了Dimension和Metric。我们首先看下Segment的定义接口:public interface Segment extends Closeable { public String getIdentifier(); ...

小龙的博客 2731

基于MATLAB的Hough变换指针式仪表识别

综上所述,本文介绍了如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。通过图像预处理、Hough变换和直线提取,我们可以准确地检测指针的位置,并进一步进行仪表读数。本文将介绍如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。在指针式仪表识别中,我们可以利用Hough变换来检测仪表盘上的指针。以上是基于MATLAB的Hough变换指针式仪表识别的详细步骤和源代码示例。根据指针在仪表盘上的位置,我们可以进行角度计算或使用其他技术来获取准确的读数。

techDM的博客 466

高性能优化的本质

在很早之前,处理器性能的提升一般是通过减小元器件的尺寸,增加元器件的数量,提高主频来实现,这也是摩尔定律所说的,但是由于功耗的影响,主频不能一直增加。后来,由于英伟达的GPU的并行计算的出现,逐渐打破摩尔定律,人们利用多核,SIMD,SIMT来处理大量相同计算的数据,这极大的提高了效率。计算机的算力得到了巨大的提升,但是并行是困难的,对于有数据依赖的程序来说,处理并行是一件及其困难的事,但对于一些简单的数学库的计算,并行的实现相对简单。

发狂的小花的博客 274

apache druid 与kafka整合使用

前言 在上一篇,我们了解了apache druid的搭建,以及如何快速导入外部数据源到apache druid中进行数据分析和使用 本篇,我们结合一个实际的简单的应用场景,来说说apache druid如何在实际项目中进行使用 业务场景 如下所示,是一个很常见的数据分析的业务,通常来说,很多实时或准实时的数据(这里理解为外部数据源)需要通过kafka进行中转,即发送到kafka中, apache druid提供了导入外部数据源的功能,可以接收来自kafka指定topic的数据,然后支持数据分析,将kafka

congge 4974

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Druid使用Kafka Indexing Service方式push数据以及实时节点pull数据步骤

  Druid中从kafka摄入数据,存在两种方式,一种是pull,需要依赖实时节点,一种是push,需要依赖Kafka Indexing Service(kafka索引服务)     注:在0.9.1.1版本前使用Tranquility-Kafka组件接入实时数据,由于存在时间窗口,即在时间窗口内的数据会被提交给Firehose,时间窗口外的数据则会被丢弃;如果Tranquility-Kafka...

千林的博客 3700

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策

通过使用实时分析,企业可以快速有效地对用户行为模式做出反应。这使他们能够利用可能错过的机会,防止问题变得更糟。Apache Kafka 是一个流行的事件流平台,可用于实时摄取从多个垂直领域(如物联网、金融交易、库存等)的各种来源生成的数据/事件。然后,这些数据可以流式传输到多个下游应用程序或引擎中,以便进一步处理和最终分析,以支持决策。Apache Flink 是一个强大的引擎,用于在到达 Kaf...

1293

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

DRUID: kafka-indexing-service如何使用

kafka-indexing-service如何使用

sidongxue2的专栏 6550

druid中 kafka-indexing-service 的用法

 kafka-indexing-service官网下载地址: http://www.mvnjar.com/io.druid.extensions/druid-kafka-indexing-service/jar.html这个index service 可以解决transquity的一些问题;官方的地址在: http://druid.io/docs/latest/development/exten...

大树叶 技术专栏 1787

kafka+druid

启动kafka Apache Kafka是一个高吞吐量的消息中间件,可以和Druid配合使用。本教程中使用的是Kafka 0.9.0.0,可以通过如下指令下载kafka: curl -O http://www.us.apache.org/dist/kafka/0.9.0.0/kafka_2.11-0.9.0.0.tgz tar -xzf kafka_2.11-0.9.0.0.tgz cd k...

eagooqi的专栏 2872

[转]Druid概述

1.Apache Druid简介 Apache Druid是一个分布式的、面向列的、实时分析数据库,旨在快速获取大量数据并将其编入索引,并对大型数据集进行快速的切片和切分分析(“OLAP查询),常用于实时摄取、快速查询和对时间依赖性很高的数据库用户。因此,Druid可以为可视化的分析应用程序提供强力的数据源支持,或用作需要快速聚合的高并发API的后端。Druid最适合面向事件的数据。 Apache Druid通常位于存储或处理层与最终用户之间,并充当查询层以服务于分析工作负载。 常见应用领域.

Admans的专栏 1738

Apache Druid 数据摄取---本地数据和kafka流式数据

Durid概述 Apache Druid是一个集时间序列数据库、数据仓库和全文检索系统特点于一体的分析性数据平台。本文将带你简单了解Druid的特性,使用场景,技术特点和架构。这将有助于你选型数据存储方案,深入了解Druid存储,深入了解时间序列存储等。 Apache Druid是一个高性能的实时分析型数据库。 上篇文章,我们了解了Druid的加载方式, 咱么主要说两种,一种是加载本地数据,一种是通过kafka加载流式数据。 数据摄取 4.1 加载本地文件 我们导入演示案例种的演示文件 4.1.1.

博学谷狂野架构师的博客 1248
上一篇: druid 理解规划
下一篇: 什么是一致性Hash算法?
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值