首页 > 其他分享 >dremio ClusterCoordinator 服务简单说明

dremio ClusterCoordinator 服务简单说明

时间:2023-01-28 10:37:48浏览次数:38  
标签:src dremio java coordinator ClusterCoordinator 简单 main com

dremio ClusterCoordinator 主要是处理集群任务协商的,比如那些服务可以在什么节点上运行,以及对于查询具体这么执行,对于元数据应该如果存储以及
元数据如何进行刷新,同时还包含了节点的任务处理

相关实现类

目前官方包含了基于zk的软件运行模式,以及本地集群模式的,当然好包含了一个方便测试的NoOpClusterCoordinator,对于zk 的实现

官方给基于了apache curator 方便的java zk 工具(官方包装了一个ZKClusterClient 类,主要在ZKClusterServiceSetManager 实现中调用)

参考类图如下

dremio ClusterCoordinator 服务简单说明_java

 

 

备注: 可以看出实现了ClusterServiceSetManager以及ClusterElectionManager,实际上ZKClusterCoordinator 的处理都是调用了ZKClusterServiceSetManager 包装了类

ZKClusterServiceSetManager 的处理

上边也说明了ZKClusterServiceSetManager 是比较核心的类,同时也实现了ClusterServiceSetManager以及ClusterElectionManager,ZKClusterCoordinator 就是调用
的包装类方法,内部调用了ZKClusterClient 实现了dremio 标准service 接口,可以在启动的时候统一管理

  • 提供的主要功能 
    服务的创建(根据不同角色管理不同的服务),同时支持服务的发现&服务注册以及状态管理(参考ZKServiceSet,里边包含了不少实现) 
    同时提供选举机制(MasterElectionService以及TaskLeaderElection都会使用此能力进行服务的处理)对于TaskLeaderElection SystemStoragePluginInitializer以及LocalSchedulerService都会使用此服务,MasterElectionService 主要做为一个master node 状态管理服务

说明

dremio 的集群协调机制对于社区版目前来说主要是基于zk的,内部处理上包装了apache curator 客户端,dremio 因为包含了协调节点,不少服务都会依赖此模块,属于一个比较重要的服务,实际上我们也可以自己参考实现可以自己的协调服务,对于其他非集群运行的协调服务实现,具体可以参考实际的源码

参考资料

services/coordinator/src/main/java/com/dremio/service/coordinator/ClusterCoordinator.java
services/coordinator/src/main/java/com/dremio/service/coordinator/ClusterServiceSetManager.java
services/coordinator/src/main/java/com/dremio/service/coordinator/ClusterElectionManager.java
services/coordinator/src/main/java/com/dremio/service/coordinator/zk/ZKClusterServiceSetManager.java
services/coordinator/src/main/java/com/dremio/service/coordinator/zk/ZKClusterClient.java
services/coordinator/src/main/java/com/dremio/service/coordinator/AbstractServiceSet.java
services/coordinator/src/main/java/com/dremio/service/coordinator/zk/ZKServiceSet.java
dac/backend/src/main/java/com/dremio/dac/daemon/SystemStoragePluginInitializer.java
dac/backend/src/main/java/com/dremio/dac/service/exec/MasterElectionService.java
services/coordinator/src/main/java/com/dremio/service/coordinator/TaskLeaderElection.java
dac/backend/src/main/java/com/dremio/dac/daemon/SystemStoragePluginInitializer.java
services/coordinator

标签:src,dremio,java,coordinator,ClusterCoordinator,简单,main,com
From: https://blog.51cto.com/rongfengliang/6024726

相关文章

  • typesafe config 简单试用
    以前我简单介绍过dremio关于typesafeconfig的使用说明,还是比较强大的,以下是一个简单的学习使用项目配置参考图  内容application.conf会引用defaultvalues.conf,dr......
  • 为什么看上去很简单的智慧功能点要价上千万?
    人工智能(ArtificialIntelligence,AI)已经不是什么新概念,第三次浪潮于2016年AlphaGo战胜李世石为标志正式开启,至今也已经走过6个年头。发展至今,AI已经进入老百姓的日常生活,比......
  • airlift 简单试用
    airlift使用简单,而且周边集成也不少,只是官方文档比较少,使用最多的也是trino以及presto中,trino代码基于airlift框架的开发代码看起来是很简洁的项目结构 ......
  • Spring长轮询DeferredResult简单用法以及SpringMVC对于后置结果处理
    简单研究下spring长轮训 DeferredResult的用法以及简单的原理。如果让自己设计,可能就是会用一些异步+spring的扩展机制来实现。1.DeferredResult简单用法1.新建测......
  • Spring长轮询DeferredResult简单用法以及SpringMVC对于后置结果处理
    简单研究下spring长轮训 DeferredResult的用法以及简单的原理。如果让自己设计,可能就是会用一些异步+spring的扩展机制来实现。1.DeferredResult简单用法1.新建测......
  • BPF的简单学习
    BPF的简单学习前言本来规划过年期间学习一下bpf相关的内容但是因为自己没有坚持学习,所以到最后一天才开始整理.本来想深入学习一下相关内容,但是已经感觉已经无法完......
  • C语言实现一个简单的单向链表list
    C语言实现一个简单的单向链表listcheungmine用C语言实现一个简单实用的单向链表list,具有一定的实际意义。尤其我们不想使用STL里面的list<...>类的时候。我实现的这个list,结......
  • Windows下安装Miniconda及配置和简单使用
    一、下载Miniconda根据自己的需求下载Anaconda或者Miniconda。我这里选择轻量化的Miniconda。二、安装Miniconda根据安装程序提示,一直点击下一步即可。三、在......
  • C语言--简单的爱心代码
    新手都能敲出来的爱心代码#include<stdio.h>#include<stdlib.h>//#include<string.h>intmain(){floatx,y,a;for(y=1.5;y>-1.5;y-=0.1){for(x=-1......
  • 「LOJ3673」简单数据结构
    题目点这里看题目。给定一个长度为\(n\)​的非负整数序列\(a\),有\(q\)次操作,每次操作类型为如下三种之一:给定\(v\),表示\(\forall1\lei\len\),令\(a_i\gets......