Druid 索引服务的资源精细化调度

本文将从三个方面讨论关于Druid 索引服务的资源精细化调度:

一、Druid索引服务的简介

      介绍了Druid 索引服务的架构和调度细节。(介绍原理)

二、实践中出现的问题

      经过线上生产环境的实践,旧的调度方案出现的问题。(提出问题)

三、资源精细化调度的设计与实现

     提出了资源精细化调度方案的设计与实现对问题进行了解决,并做了实际效果评估。(解决问题)

 

一、Druid索引服务的简介

索引服务是Druid提供用于导入并创建segments 数据文件的服务,索引服务是一个高可用的分布式服务,并以主从结构作为架构模式,索引服务由三大组件构成,overlord作为主节点,middlemanager是从节点,peon用于运行一个task。

 

1、索引服务三大组件

  (1)overlord : 负责创建task、分发task到middlemanager上运行,为task创建锁以及跟踪task运行状态并反馈给用户。

  (2)middlemanager : 作为从节点,负责接收主节点分配的任务,然后为每个task启动一个独立的JVM进程来完成具体的任务。

  (3)speon : 由middlemanager启动的一个进程用于运行一个task任务。

     其中task的类型有很多,其中包括:

     index hadoop task : 是Hadoop的索引任务,利用Hadoop集群执行MapReduce任务以完成segment数据文件的创建,适合体量比较大的segments数据文件的创建任务,一般我们的公司的离线任务基本上都是周期性调度index_hadoop task来完成数据的导入。

    index kafka task : 专门用于Kafka数据的实时摄入,通过Kafka索引服务可以在Overlord上配置一个KafkaSupervisor,通过管理Kafka索引任务的创建和生命周期来促进Kafka的摄取。 这些索引任务使用Kafka自己的分区和偏移机制读取事件,因此能够提供完全一次摄取的保证。 他们还能够从Kafka读取非近期事件,并且不受其他摄取机制强加的窗口期限的影响。

    merge task : 是一个合并索引任务,将多个segments数据文件按照指定的聚合方法合并为一个segments数据文件。

    kill task : 销毁索引任务,将执行时间范围内的数据从Druid集群的深度存储中删除。              

 

2、overlord基于槽位的调度过程

     如图所示:

每台middlemager设置固定的capacity(能调度的最大任务个数),overlord基于一定策略(如剩余可用capacity),分配任务交由middlemanager执行。

1)备选worker的过滤

     版本过滤:当一个middlemanager 在灰度升级的时候一般会先发送disable命令给middlemanager,middlemanager会把自己的版本标记为空字符串,overlord在调度的时候过滤该版本的worker。

     黑名单过滤:overlord将对失败次数达到一定阀值的middlemanager列为黑名单,默认黑名单的比例不会超过20%,并且被列为黑名单的middlemanager会被定期回放到白名单

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值