我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

简介

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

文章如有帮助,请关注微信公共号。

image/20191117/2180795b57ab6fbd1673371230364131

最终使用druid时,是0.9版本,当时在kafka加载数据推荐的方式是两种

  • Tranquility

  • kafka index service

Tranquility

是用于将流实时推送到Druid的工具包。是一个独立,需要单独下载。

image/20191117/a2a764720080c55aba5f0ffcb680ccaf

** 其特点**

无缝地处理分区,复制,服务发现和架构过渡,而无需停机。集成了http server,Samza,Spark ,Storm,Flink 等工具。

可以自由的控制向druid,主动发送数据。

** 劣势**

本身具有时间窗,超过时间窗的数据直接丢弃。

版本落后,由于没有官方组织维护,目前版本只是兼容值0.9.2,后面druid升级后,Tranquility未及时升级,有些新的api 无法适配。

kafka index service

这是druid 自身携带的扩展插件,使用时,需要在common.runtime.properties 文件中的属性 druid.extensions.loadList 添加druid-kafka-indexing-service。

**  其特点**

支持实时查询按时间分segment,非实追加到对应时间的segment 。

通过算法把Peon分配到 不同的【 Middle Managers】上实现分布式

加大对应kafka的topic的partition数量 加大taskCount的值,产生更多的Peon

创建 supervisor

f9bd98cf3eee4087a1224404338e75af.png

0754ffcee0e6467795d91c46513b3e78.png

上面是一个完整的supervisor的内容,主要包含type,dataSchema,tuningConfig,ioConfig 四个部分

  • type

标记类型,supervisor  的类型 就是kafka.

  • dataSchema

数据库的配置,主要包含dataSource,parser,metricsSpec,granularitySpec

dataSource

druid的数据库名称。

parser

配置与解析数据。简单理解就是kafka中的数据与druid存储之间的关系映射。主要包含以下配置

timestampSpec

配置处于的位置 dataSchema->parser->timestampSpec

druid 本身是时间序列数据库,故此时间就是数据的主键。由于druid 在 0.9后,已经不支持设置时区了,时间都是采用的utc格式。druid查询时,可以设置时区。包括一些roll-up操作都是按照utc时间进行。如有必须需改动源码。

dimensionsSpec

位置:dataSchema->parser->dimensionsSpec

维度。数据库需要存储的字段,需要与kafka中的对应。

dimensions

是一个数组类型,默认字段的类型都是string

可以设置字段的类型,例如{ "type": "long", "name": "userId" }

metricsSpec

位置:dataSchema->metricsSpec

度量。此值roll-up 启用是才有意义。

`{      "name": "theta_customer_id",

"type": "thetaSketch",

"fieldName": "customer_id"
           } `

name: druid中字段的名称。

type:指标类型。thetaSketch 去重。还支持doubleSum,longSum,doubleMin,doubleMax 等聚合类型。

fieldName:kafka中 属性的名称

granularitySpec

位置:      dataSchema->granularitySpec

segmentGranularity: Segment粒度(SegmentGranularity)表示每一个实时索引任务中产生的Segment所涵盖的时间范围。

queryGranularity:查询粒度。例如 {"queryGranularity":"DAY"} 查询的最小粒度就是DAY,经过roll-up后,维度完全一样的数据,一天范围内将聚合为一条数据。

  • tuningConfig

调优相关的配置。

配置一个segment大小。

调整压缩算法。

  • ioConfig

    消费者的配置。对于kafak index service 就是kafka 消费者一个配置。

    下面的实例,配置了kafka的topic,启动的任务数量,任务执行的时间,kafka的地址。

    completionTimeout:这个值将发布任务声明为失败并终止之前等待的时间。如果设置得太低,您的任务可能永远不会发布。任务的发布时间大约在taskDuration过去之后开始。默认是30M,为防止任务未发布,调整为与任务时间一致(PT3600S)

"ioConfig": {        

"topic": "com.test",       

 "replicas": 1,         "taskCount": 1,     

   "taskDuration": "PT3600S",     

   "consumerProperties": {        

   "bootstrap.servers": "10.0.0.1:9096,10.0.0.1:9096"    

   },     

   "completionTimeout": "PT3600S"  

 }

提交supervisor

提交至overlord节点。

2f49e0f1fe694035a9e06f017ff6db08.png

新版中出现界面配置

第一种,根据界面的配置向导来加载kafka数据

访问:8888  端口

image/20191117/58c59c6b6e40848307f379ebc3ffb148

image/20191117/36f69bc8e54b7f5d02bd0350ae602104

image/20191117/c5c5fb2f1ae5b8b763b2f3fe16ddc426

一直按照向导配置,就可以自动生成supervisor的配置 很方便。

第二种,通过页面 提供的Submit supervisor提交 相应的json文件

image/20191117/ad5be9a4216eaa6182307dd8f4569979

总结

简单介绍了下supervisor  重点配置的具体含义,由于篇幅问题,详细的配置还需要去官网文档中查看。本文的目的就是通过个人使用 kafka index service时一些新得,帮助新手能快速跑通第一个druid实例。

文章如有帮助,请关注微信公共号。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

简介 apache druid 是分布式列存储的 OLAP 框架。还是一个时间序列数据库。本篇文章主要是druid 在kafka 加载数据的配置。由于druid 升级情况太快,本人的环境还是在0.13,主要改动方面还是UI,新的版本在UI方面更适合新手入门。
apache druid 实时加载kafka 中的数据(一)
2016-08-16

layui table如何结合后端API实现数据动态加载?(layui table与后端API的数据实时加载策略)

layuitable结合后端API实现数据动态加载,通过发送异步请求从后端获取数据,利用layuitableAPI解析和加载响应数据。通过定义URL、方法和参数向后端发送异步请求,处理后端响应并将其加载到layuitable中。layuitable提供reload、setCols、page、limit和done方法用于动态加载数据。优化策略包括分页、缓存、懒加载和服务端渲染,提高性能和用户体验。通过结合后端API,layuitable能够支持实时数据更新,保持客户端与后端同步,并灵活集成各种后端技术。
layui table如何结合后端API实现数据动态加载?(layui table与后端API的数据实时加载策略)
2024-04-02

怎么在Android应用中实现一个加载数据帧动画效果

这期内容当中小编将会给大家带来有关怎么在Android应用中实现一个加载数据帧动画效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。实现步骤:1、xml布局
2023-05-31

中项目启动时实现初始化方法的加载参数是什么

中项目启动时实现初始化方法的加载参数是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。springboot项目启动,初始化方法加载参数今天我看到项目中用到了
2023-06-22

怎么用Python中的PyQt5制作一个获取网络实时数据NBA数据播报GUI功能

这篇文章主要讲解了“怎么用Python中的PyQt5制作一个获取网络实时数据NBA数据播报GUI功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python中的PyQt5制作一个获取
2023-06-20

编程热搜

目录