Druid使用Kafka Indexing Service方式push数据和使用实时节点pull数据两种方式对比

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

 Druid中从kafka摄入数据,存在两种方式,一种是pull,需要依赖实时节点,一种是push,需要依赖Kafka Indexing Service(kafka索引服务)

     注:在0.9.1.1版本前使用Tranquility-Kafka组件接入实时数据,由于存在时间窗口,即在时间窗口内的数据会被提交给Firehose,时间窗口外的数据则会被丢弃;如果Tranquility-Kafka临时下线,会导致Kafka中数据“过期”从而被丢弃,无法保证数据完整性,同时这种“copy service”的使用模式不仅占用大量CPU与内存,又不满足原子操作,所以在0.9.1.1版本后,建议使用Druid的新特性Kafka Indexing Service,Druid内部使用Kafka高级Consumer API保证exactly-once semantics,尽最大可能保证数据完整性。

使用Kafka Indexing Service方式push数据


步骤一:下载Kafka Indexing Service扩展,将扩张加入到druid目录下的extensions目录下。

步骤二:将扩展绑定在middlemanager以及overlord上,在开发中,实际配置方案为直接配置/opt/druid/conf/druid/_common/common.runtime.properties,在druid.extensions.loadList中加入Kafka Indexing Service,

如图:

如果不进行配置,无法使用kafka索引服务

步骤三:在druid目录下的var目录下新建tmp目录作为java.io.tmpdir(jvm.config配置文件)目录。如果目录不存在。Druid报错

步骤四:编写Json配置文件:示例如下

{
  "type": "kafka",
  "dataSchema": {
    "dataSource": "kafka3",//Druid中的表名
    "parser": {
      "type": "string",
      "parseSpec": {
        "format": "json",
        "timestampSpec": {//时间戳列
          "column": "timestamp",
          "format": "auto"
        },
        "dimensionsSpec": {//维度列
          "dimensions": ["timestamp","from"],
          "dimensionExclusions": []
        }
      }
    },
    "metricsSpec": [//指标列
      {
        "name": "count",
        "type": "count"
      },
      {
        "name": "PVSum",
        "fieldName": "PVSum",
        "type": "longSum"
      },
      {
        "name": "UVSum",
        "fieldName": "UVSum",
        "type": "longSum"
      }
    ],
    "granularitySpec": {//查询维度
      "type": "uniform",
      "segmentGranularity": "DAY",
      "queryGranularity": "NONE"
    }
  },
  "tuningConfig": {//优化型配置
    "type": "kafka",
    "maxRowsPerSegment": 75000,
    "workerThreads":2
  },
  "ioConfig": {//指明数据来源
    "topic": "zhangzl",
    "consumerProperties": {
      "bootstrap.servers": "ip1:9092,ip2:9092,ip3:9092"
    },
    "useEarliestOffset":true,
    "taskCount": 1,
    "replicas": 1,
    "taskDuration": "PT1M"
  }
}
 步骤五: 确认workerThreads配置为(taskCount * replicas +1);

 步骤六:调整配置项useEarliestOffset为true,否则druid只会读取最新数据,不会从beginning开始读取数据。

 

实时节点pull数据步骤


注:使用tranquility为0.8.2版本,在使用过程中尝试使用0.8.0版本以及0.8.1版本均为成功,具体原因不明,下载地址:http://static.druid.io/tranquility/releases/tranquility-distribution-0.8.2.tgz

步骤一:将下载好的tranquility-distribution-0.8.2.tgz解压后的目录移动到Druid的home目录下。

步骤二:编辑配置文件,示例如下:

{
    "dataSources": [{
        "spec": {
            "dataSchema": {
                "parser": {
                    "type": "string",
                    "parseSpec": {
                        "timestampSpec": {//时间戳列,必须指定,实时节点根据该列对时间窗口进行判断
                            "column": "timestamp",
                            "format": "auto"
                        },
                        "dimensionsSpec": {//维度列
                            "dimensions": ["timestamp", "from"],
                            "dimensionExclusions": []
                        },
                        "format": "json"
                    }
                },
                "dataSource": "twitter",//Druid中的表名
                "granularitySpec": {
                    "type": "uniform",
                    "segmentGranularity": "DAY",
                    "queryGranularity": "NONE"
                },
                "metricsSpec": [{//指标列
                        "name": "count",
                        "type": "count"
                    },
                    {
                        "name": "PVSum",
                        "fieldName": "PVSum",
                        "type": "longSum"
                    },
                    {
                        "name": "UVSum",
                        "fieldName": "UVSum",
                        "type": "longSum"
                    }
                ]
            },
            "tuningConfig": {
                "type": "realtime",
                "maxRowsInMemory": "75000",//内存中存储的最大数据量,超过该数据量之后会刷新到Druid中
                "intermediatePersistPeriod": "PT1M",//时间窗口
                "windowPeriod": "PT10M"//延时窗口,超过时间窗口后的数据,如果还在延时窗口中,则还会被处理,超过延时窗口的数据会被丢弃
            }
        },
        "properties": {
            "task.partitions": "2",
            "task.replicants": "2",
            "topicPattern": "twitter"//kafka topic
        }
    }],
    "properties": {
        "zookeeper.connect": "ip1:2181,ip2:2181,ip3:2181",//druid zk
        "zookeeper.timeout": "PT20S",
        "druid.selectors.indexing.serviceName": "druid/overlord",
        "druid.discovery.curator.path": "/druid/discovery",
        "kafka.zookeeper.connect": "ip1:2182,ip2:2182,ip3:2182",//kafka zk
        "kafka.group.id": "tranquility-kafka",
        "consumer.numThreads": "2",
        "commit.periodMillis": "15000",
        "reportDropsAsExceptions": "false"
    }
}
步骤三:进入到目录下使用如下命令:bin/tranquility kafka -configFile <配置文件路径>进行启动

步骤四:使用kafka生产消息,注:时间戳列采用yyyy-MM-ddTHH:mm:ssZ格式,否则数据无法解析,应该可以配置,但未找到配置点。

索引服务与实时节点比较:
在Druid重启时,索引服务不会丢数据,但是对于实时节点,如果重启太慢,数据超过了时间窗口以及延时窗口,这部分数据会被丢弃。

索引服务实际是在指定时间内处理数据,然后将数据积压,可以配置提交时间,到达提交时间时进行提交。

索引服务在Druid重启后,不会重读消费过的数据,也就是offset不会从begining开始,数据不会重叠。

索引服务出现在tranquility服务之后,实际是对实时节点的一个补充,但是索引服务只在0.9.1.1版本之后进行支持
--------------------- 
作者:De-Bug 
来源:优快云 
原文:https://blog.youkuaiyun.com/qq_34985719/article/details/80468817 
版权声明:本文为博主原创文章,转载请附上博文链接!

druid数据摄入 数据摄入 Druid的数据摄入有两种方式,一种是流式数据源,一种是静态数据源 数据源种类 静态数据源:数据已经生产完毕,不会有新数据产生的数据源,静态数据通常表现为离线数据,静态服务可以通过实时节点摄入,也可以通过索引服务启动一个任务摄入。 流式数据源:指的是持续不断地生产数据的数据源。如日志,消息队列等。对于流式数据的摄取,Druid提供了两种方法,分别是Push(推送)和Pull(拉取... 阅读详情

相关推荐

使用Druid将数据加载到Kafka

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

DeoSql的博客 284

apache druid 与kafka整合使用

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

congge 4974

【信息科学与工程学】计算机科学与自动化——第三百零四篇 高性能系统开发指南01

高并发:限流、熔断、降级高性能:红包拆分、多级缓存、大Key/热Key拆分、Pipeline、线程池、RocketMQ零丢失、幂等、分布式锁、集群缩容、分批入库海量数据处理:日志分表分片、跨表查询、冷热分层、大数据引擎服务器选型系统安全:网关安全、服务器安全、云存储安全、风控、监控、测试数据一致性:缓存与数据库一致性、大厂方案、蓝绿回滚、流量一致性、流程一致性项目与团队管理:流程问题、管理问题(风险、成本、人员、文档、培训)稳定性建设:上线三板斧、线上五步闭环、混沌工程、容量规划。

weixin_49199313的博客 249

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

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

博学谷狂野架构师的博客 1248

MATLAB实战:手把手教你实现WVD信号分析(附完整代码与避坑指南)

本文通过MATLAB实战,手把手教你实现Wigner-Ville分布(WVD)信号分析。文章提供了从零构建WVD函数的完整代码,并重点解析了使用解析信号、处理交叉项、优化计算效率等关键避坑指南,帮助工程师高效处理非平稳信号,获得高分辨率的时频分析结果。

purple的博客 1081

STM32F407 FreeRTOS+LVGL移植实战:从驱动适配到性能优化

本文详细介绍了在STM32F407开发板上移植FreeRTOS和LVGL的实战经验,涵盖硬件准备、驱动适配、性能优化等关键步骤。通过TFTLCD屏幕驱动优化、DMA加速和任务优先级调整,显著提升界面流畅度,为嵌入式GUI开发提供实用解决方案。

weixin_29190651的博客 632

使用docker安装zookeeper、kafka、druid进行摄取数据

Druid中的所有数据都被组织成段,这些段是数据文件,通常每个段最多有几百万行。在Druid中加载数据称为摄取,它包括从源系统读取数据并基于该数据创建段。在大多数摄取方法中,加载数据的工作由MiddleManager进程完成。 Druid数据存储在数据源中,与传统关系型数据库中的表类似。 Druid把数据集分为三个部分: Timestamp column(时间戳):将时间字段单独处理,是因为Druid的所有查询都是围绕时间轴进行的。 Dimension columns(维度列): 维度列是数据的属性,是按原

qq_41358574的博客 3533

(二)MS-MPI多机通信

1.关于MPI多机通信 一台计算机处理数据的能力是有限的,MPI的主要作用就是用来实现并行计算机,即将多台主机联机,实现大规模、高性能的计算机机群。我们知道一台计算机同时运行多个进程时,由于计算机资源是共享的,多个进程都会占用一些资源,每个进程运行的效率就会降低,比如当一台计算机同时跑着多个大型应用时会变得非常卡顿。所谓多机通信,可以理解为将本应该在同一台主机上运行的多个进程分配到多台主机上,以往...

xinwuya_的博客 4392

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

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

千林的博客 3700

算法竞赛推荐书单

前言 入坑算法竞赛已经一年半了,在这期间也读了不少关于算法竞赛的书,这些书对我的帮助还是蛮大的。平时看题解多是个人零散的题解,很难以系统的去学习,认认真真的挑选1-2本书来阅读,无论是从思维能力还是文字表达能力都会得到提升,以下都是我自己读过的书进行一下分享,难度由浅入深,部分书籍浅尝而止。 入门:《啊哈!算法》 适合:总题量150以下初步掌握C语言的萌新 一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点,通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松

TGX的博客 8241

基于YOLOv5与海康工业相机的高分辨率实时检测实践

本文详细介绍了基于YOLOv5与海康工业相机的高分辨率实时检测实践,通过优化相机配置、网络传输和YOLOv5模型适配,实现了每秒15帧以上的实时检测性能,缺陷识别准确率高达99.2%。特别适用于电子元件焊接点检测、精密齿轮齿痕检查等对微小缺陷敏感的场景。

weixin_30872499的博客 474

【Druid】(八)Apache Druid 核心插件 Kafka Indexing Service & SLS Indexing Service

本文将介绍在 E-MapReduce 中如何使用 Apache Druid Kafka Indexing Service 实时消费 Kafka 数据。

云祁QI 1098

手机VPN的连接方法分享

6、返回到VPN页面,可以看到刚刚新添加的VPN,点击开启VPN后面的开关。5、在打开的添加VPN的页面中输入VPN的信息后点击右上角的“保存”按钮。7、待VPN开关开启后,可以看到添加的VPN正在连接的提示信息了。2、在打开的小米手机设置页面中点击“更多连接方式”的菜单项。3、然后在打开的更多连接方式页面中点击VPN的菜单项。4、在打开的VPN设置页面中点击“添加VPN”的按钮。1、首先在手机屏幕左右的滑动,找到手机的设置图标。

惠惠软件 3万+

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

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

1293

22、自动化地图制作与Pandas数据处理

本文介绍了在ArcGIS Pro中使用arcpy.mp模块进行自动化地图制作的关键技术,涵盖地图元素的访问、移动与文本修改,以及将布局批量导出为JPEG、PNG和PDF格式的方法。同时,文章深入探讨了Pandas在数据处理和地理空间分析中的应用,特别是Spatially Enabled DataFrames(SEDFs)的使用。通过综合案例展示了地图更新与数据清洗、分析的结合,提升了地图制作与数据处理的效率,为GIS自动化工作流提供了实用指南。

w8x9y0z1的博客 79

【eclipse】win 10:eclipse 4.9 下载、安装和汉化(支持中英切换)

目录 一、eclipse下载 二、eclipse安装 三、eclipse在线汉化 四、eclipse离线汉化(推荐) 一、eclipse下载 ①官网下载地址(收费):https://www.eclipse.org/downloads/点击前往下载 ②【推荐】我的百度网盘下载地址(包括离线汉化包):点击下载 提取码:0nfw ③eclipse4.9其他地址下载:http...

顾三殇 —— 博客空间(软件测试) 1万+

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

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

极客编程的专栏 1718

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大数据-153 Apache Druid 实时接入 Kafka:从摄取到查询的完整实战

「Kafka→Apache Druid」的实时摄取实战:以网络流量 JSON 为例,通过 Druid 控制台的 Streaming/Kafka 向导完成接入、解析时间列(ts→__time)、设定维度与指标(count、max(packets)、min(bytes)、sum(cost)),并在 Rollup=minute 和按日分区(uniform)下生成可查询的 segments,最终用 SQL 验证结果。文中演示环境包含 Kafka 2.7.2(ZK 模式,单节点);Druid版本以控制台

谢谢你的喜欢 我们一起无限进步 5275

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Mac Mouse Fix终极配置指南:3种方法让普通鼠标秒变苹果触控板

还在为Mac上的鼠标体验不佳而烦恼吗?Mac Mouse Fix这款免费开源工具能彻底改变你的鼠标使用体验!无论你使用的是10美元的普通鼠标还是高端游戏鼠标,这款强大的鼠标增强工具都能让你的鼠标操作体验媲美甚至超越苹果触控板。本文将为你提供完整的Mac Mouse Fix安装配置指南,帮助你快速提升鼠标使用效率。 ## 为什么需要Mac Mouse Fix鼠标增强工具? Mac系统对第三方鼠标

gitblog_00534的博客 1085

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大数据-156 Apache Druid+Kafka 实时分析实战:JSON 拉平摄取与 SQL 指标全流程

Scala Kafka Producer 将订单/点击数据写入 Kafka Topic(示例 topic: druid2),在 Druid 中通过 Kafka Indexing Service 进行连续摄取。由于原始记录为嵌套 JSON(orders 内含 products 数组),先进行 JSON 拉平预处理,随后在 Druid 设置正确的 timestampSpec,禁用 Rollup,并以 SQL 执行核心指标:订单总数、用户总数、按状态/支付方式聚合、订单金额 TopN 等。文中给出从“摄取配置

谢谢你的喜欢 我们一起无限进步 1万+

Kafka原理pull与push

Broker Kafka集群包含一个或多个服务器,这种服务器被称为broker Topic 每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处) Partition parition是物理上的概念,...

这个很科学的博客 2万+

Druid 使用 Kafka 将数据载入到 Kafka

将数据载入到 Kafka 现在让我们为我们的主题运行一个生成器(producer),然后向主题中发送一些数据! 在你的 Druid 目录中,运行下面的命令: cd quickstart/tutorial gunzip -c wikiticker-2015-09-12-sampled.json.gz > wikiticker-2015-09-12-sampled.json 在你的 Kafka 的安装目录中,运行下面的命令。请将 {PATH_TO_DRUID} 替换为 Druid 的安装目录:

HONEY MOOSE 536

Apache Druid 从Kafka加载数据 -- 全流程分析

目录 一、Kafka 创建topic、生产者 二、向kafka生产数据 三、Apache Druid 配置DataSource 数据源 1) Start 2) Connect 3) Pase Data 4) Pase Time 5) Transform【可跳过】 6)Filter 【可跳过】 7)Configure Schema【重点配置】 8)Partition 9) Tune 10) Pulish 11) Edit Json spec 四、查询示例说明 一、Kafka 创

认知 行动 坚持 2046

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的专栏 2871

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

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

Niclas的博客 2036
上一篇: Mac上Intellij IDEA使用spring-boot热部署
下一篇: Hadoop、Spark、HBase与Redis的适用性见解
千淘万漉
博客等级 码龄10年 115粉丝 99原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值