![](https://img-blog.csdnimg.cn/20200509113901449.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
druid.io
druid.io源码,集群相关运维,其它扩展知识的整理总结,实践出真知,总结思考促成长
master-dragon
weixin:dwl_1270530306
展开
-
druid.io 自定义实时任务调度策略
接上一篇《druid.io 实时和离线任务使用的MiddleManager分离【工作总结】》主要是实时任务调度问题,其实网上也已经有博文或者类似文章思路说明是可以参考的;调度总是可以考虑很多因素的,这可以是专门的一块知识,比如hadoop yarn就是一个很好的参考,快手似乎就采用了这种方式;但是我这里还是能力有限,没有用yarn,还是总结下实际的项目调整方案和实践流程。总之对比之前有改进就可以认为是个优秀的事情,但是不应该满足于此。留个 todo目录背景 & 考虑点预期效果&如何证明原创 2020-12-17 22:44:50 · 276 阅读 · 0 评论 -
druid.io + tranquility实时任务的表现,借助2020双11总结下
目录问题总结运维自动化?需求反复/事后通?设计上和能力不够?双11和平时的区别?druid.io表现总结个人操作总结主要是总结下本人在双11的运维工作和一些思考问题总结运维自动化?不少问题还是通过告警,然后人工判断再操作这里是可以自动化的,判断的条件要抽象符合逻辑(机器指标没有找运维,自身系统指标就开发,脚本能用就上),操作可以封装(有操作,有回退),就不怕什么需求反复/事后通?总是在问题暴露的时候才去考虑如何解决,事实上之前就提过,就是不重视,以为问题不大或者不重要。所以尽早的模拟,开原创 2020-11-20 20:45:21 · 248 阅读 · 0 评论 -
druid.io index_realtime 实时查询
前言前面一些文章介绍了实时任务流程和一些阶段细节,还没有说是如何保证实时查询的。首先能脱口而出的就是:实时任务即负责持久化,也要响应查询实时任务既要用jvm堆内存,也要使用堆外内存所以本文将探讨下实时任务是怎么做到的,或者换句话说:你怎么设计一个实时的数据导入且可查询的东西?来个概述图有个druid.io基础,然后体会下大概流程即可,后续走读源码源码走读回到druid.io源码,peon进程的RealPlumber,io.druid.segment.realtime.plumber.R原创 2020-11-17 23:33:18 · 442 阅读 · 0 评论 -
druid.io kill -9 index_realtime tranquility任务
前提知识每个index_realtime任务在middleManager上有一个临时目录,id=index_realtime_mv2_2020-12-11T16:00:00.000Z_0_0的任务类似如下:/var/folders/mt/9sz41nps4_5_7rshbz3nkrsh0000gn/T/persistent/task/index_realtime_mv2_2020-12-11T16:00:00.000Z_0_0工作目录如下:index_realtime_mv2_2020-12-11T原创 2020-12-12 11:11:45 · 311 阅读 · 0 评论 -
druid.io index_realtime任务的hand off:仍然是源码+log说清楚
目录前言源码 + log 说明流程总结前言之前的博文:Druid.io index_realtime实时任务源码分析 介绍了整个index_realtime任务运行的流程,但是对于某些细节还是没有从源码上分析的很透彻,本文将主要对hand off这个阶段进行主要分析,说清楚什么是hand off阶段,以及这个阶段做了什么工作可以先看下官网文档介绍:https://druid.apache.org/docs/0.20.0/design/architecture.html#indexing-and-han原创 2020-11-16 23:45:03 · 746 阅读 · 0 评论 -
Druid.io index_realtime实时任务源码分析
tranquility 配合 index_realtime (备份,窗口等)完成实时数据流的持久化,查询等处理形象类比入门因为druid.io源码不少类都用了【消防】相关的术语,所以类比下是有必要的,阅读源代码也会相对容易一点。其中【消防员】这个角色尤为重要,负责了主要的接【消防水带】,开【消防栓】灭火工作。【实时数据】 —> 水流 ----> 数据来源【处理任务主体对象】—>【消防员】----> 核心处理【持久化】—> [要灭的火] —> 数据落地大体流程原创 2020-11-13 20:55:19 · 1047 阅读 · 2 评论 -
Druid.io index_hadoop
hadoop任务配置文档mappublic abstract class HadoopDruidIndexerMapper<KEYOUT, VALUEOUT> extends Mapper<Object, Object, KEYOUT, VALUEOUT>@Override protected void map(Object key, Object value,...原创 2020-04-20 00:04:08 · 707 阅读 · 0 评论 -
druid.io集群与tranquility对zookeeper的使用(2)
前言接着上两篇博文:Druid.io index_realtime实时任务源码分析, druid.io集群与tranquility对zookeeper的使用(1),本文主要说明下zookeeper在实时任务运行过程中的作用,并直接结合zknode 和 源码来说明主要是overlord,middleManager,peon这三个进程借助zookeeper进行进程间的通信,当然是利用zookeeper的watch机制如下图,左侧是zookeeper上druid任务相关的节点,右侧是三个进程及内部重要的类原创 2020-11-15 23:22:13 · 336 阅读 · 0 评论 -
druid.io集群与tranquility对zookeeper的使用(1)
druid.io对zookeeper的使用概述zookeeper:文件系统+监听通知,分布式系统常用作元数据管理相关。druid.io集群用到的归纳起来主要有coordinator / overlord 主从模式各个节点健康状态任务相关:包括任务运行overlord转发到middleManager,Peon进程,任务运行状态等segment元数据相关对zookeeper的使用还是要具体写了什么内容到zookeeper上,读写情况怎样的(不过一般这都有监控告警),需要了解zookeeper是如原创 2020-11-09 23:50:26 · 416 阅读 · 0 评论 -
Druid.io broker (2) --- broker 源码debug 查询转发到DruidServer
接上一篇博文:Druid.io broker (1) — broker查询概述和问题本文主要是直接源码debug broker 查询转发选择DruidServer的过程,以及自定义一个选择策略目录官网配置介绍group by查询的`CachingClusteredClient`类中的`SpecificQueryRunnable#run`策略选择某个Segment的DruidServer针对2备份实时节点查询的新策略自定义策略改造源码测试自定义策略按照代码逻辑,当只有一个实时任务时,拒绝查询总结&原创 2020-11-07 14:25:03 · 345 阅读 · 0 评论 -
Druid.io broker (1) --- broker查询概述和问题
broker 查询原创 2020-03-23 23:15:07 · 592 阅读 · 0 评论 -
Druid.io数据存储(segment文件)与特点
druid.io查询快?为什么快?怎么存?怎么写入?怎么查的?等等问题segment文件关于druid.io存储的底层segment文件格式可以参考:作者: 康凯森的Druid Storage 原理,写的挺不错的,不过最好还是自己去分析segment二进制文件,这样理解更深入,而这种存储方案说不定哪天我们就有借鉴意义。我补充如下,并回顾下自己的学习,感性认识下:列存储,倒排索引等概念Segment由dataSource_beginTime_endTime_version_shardNumber唯一标原创 2020-10-11 10:52:15 · 826 阅读 · 0 评论 -
druid.io 精确去重【转载】
转自,作者https://mp.weixin.qq.com/s/jDW1sordtki-O5-tsVE94gBitMap一个int(32bit),无符号数的范围是:[0, 4294967295] (42亿多,即2^32 - 1), 这样需要存储: 4B * 4294967295 =转载 2020-05-10 23:52:22 · 596 阅读 · 0 评论 -
HyperLogLog(基数估算)的一些问题和知识收集
搞druid.io不懂HyperLogLog,有点说不过去,一定要懂,并且网上资料那么多,没有理由不去理解它。一些文章收集原创 2020-04-27 23:02:06 · 345 阅读 · 0 评论 -
druid.io 任务进程执行的结束阶段突然卡住【工作总结】
整体服务架构理解原创 2020-03-23 14:16:01 · 1059 阅读 · 0 评论 -
druid.io 实时和离线任务使用的MiddleManager分离【工作总结】
首先做的是:实时和离线任务使用的MiddleManager分离;不过后面发现可以做出各种定制化方案,已确保重要任务,大任务也能隔离实时和离线任务的区别影响不一样离线挂了,只要上游hive表数据有,可以立刻再重来一次;实时挂了,可能就出现丢/重的问题了,并且由于是实时查询,可能一大波实时因此而查询失败,严重影响用户体验底层实现不一样最大的区别: 实时任务既要负责实时数据导入,又要负...原创 2020-03-23 10:56:50 · 659 阅读 · 0 评论 -
druid.io 优化 Coordinator SQLMetadataSegmentManager【工作总结】
做的事情优化元数据segment全量拉取方式,改为增量拉取首先要声明的是元数据存储用的MySQL有效segment到达1百万了有如下现象如下语句大量慢查询 (DBA平台告警,DBA吐槽点:频率高,调用语句单一)SELECT payload FROM druid_segments WHERE used=true;网络流量很高,有丢包现象出网卡: >=100...原创 2020-03-22 23:54:51 · 493 阅读 · 1 评论 -
druid.io架构的个人理解学习 part1 part2 翻译
historical 内存使用从 deep storage 加载segment 到 内存中处理查询,本地结果缓存Broker 内存使用维持 historical 分布 segment 的全局视图 (ZK 事件订阅)处理查询,本地结果缓存用户查询随机到一台brokerbroker 能确定要查询的segment 和 historical, 分发子查询到 historical...翻译 2019-09-15 14:07:46 · 249 阅读 · 0 评论 -
druid.io官方架构&实际工作中的数据流
druid官方文档架构图需要回答的问题数据怎么进入系统实时数据,离线数据直接创建任务发送到Overlord (外部系统传输数据到Druid)数据怎么存储离线(非实时部分)数据:存储到深度存储,数据元信息写入元数据库,由coordinator将数据加载到historical实时数据:存在middle的堆内/堆外内存中数据怎么查询,为什么能实时查询有broker节点转发查询到 hi...原创 2019-09-10 23:17:13 · 389 阅读 · 0 评论 -
【项目总结】数据处理服务中间层系统
回忆下算法的几个特征:有穷性(Finiteness)算法的有穷性是指算法必须能在执行有限个步骤之后终止;确切性(Definiteness)算法的每一步骤必须有确切的定义;输入项(Input)一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;输出项(Output)一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是...原创 2020-03-14 15:32:28 · 640 阅读 · 0 评论