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

dremio ClusterCoordinator 服务简单说明

时间:2023-01-21 18:11:08浏览次数:40  
标签:src dremio java coordinator ClusterCoordinator 简单 main com

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

相关实现类

目前官方包含了基于zk的软件运行模式,以及本地集群模式的,当然好包含了一个方便测试的NoOpClusterCoordinator,对于zk 的实现
官方给基于了apache curator 方便的java zk 工具(官方包装了一个ZKClusterClient 类,主要在ZKClusterServiceSetManager 实现中调用)
参考类图如下

 

 


备注: 可以看出实现了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://www.cnblogs.com/rongfengliang/p/17063954.html

相关文章

  • Android 设备启动过程和安全策略简单分析
    0.启动过程0x00BootROM(PrimaryBootLoader)众所周知,一台电脑最小启动时需要CPU(中央处理器)、Memory(内存)、PM(电源管理)三个部分,显然外存中的任何操作系统是......
  • [C/C++] 简单实现按字符分割字符串split函数
    记录一下/***字符串str通过字符target进行分割*/vector<string>split(stringstr,chartarget){vector<string>res;intpos=0;while(po......
  • CSS简单了解
    CSSCSS是一门语言,用于控制网页表现CSS(CascadingStyleSheet):层叠样式表W3C标准:网页主要由三部分组成结构:HTML表现:CSS行为:JavaScriptCSS体验:<!DOCTYPEhtml......
  • HTML简单了解
    HTML什么是HTML?HTML是一门语言,所有网页都是用HTML这门语言编写出来的HTML(HyperTextMarkupLanguage):超文本标记语言​ 超文本:超越了文本的限制,比普通文本更强大......
  • MyBatis简单了解
    MyBatis其中:二中的2、3是使用的基本一、概述:什么是MyBatis​ 是一款优秀的持久层、框架,用于简化JDBC开发​ MyBatis本是Apache的一个开源项目iBatis......
  • 系统的混乱并非业务本身之复杂,我们并不擅长处理『简单』
    前言一群高智商青年在餐厅吃饭,餐桌上一个瓶盖标识为盐的瓶子里装得是胡椒粉,而标识为胡椒粉的瓶子里装得却是盐,他们想出了一个充满才气的方案来完成对调--仅需要一......
  • 互斥锁简单介绍
    可重入锁意思是object.lock()获取锁后,可以再次使用object.lock()获取锁,如果发生了死锁就不是可重入锁公平锁就是排队买票,不公平锁就是插队买票锁实现的基本原理1.需要一......
  • stencil的简单使用
    这边给unlit(不发光)shader加上stencil功能Unlit_Stencil.shader,其中stencil相关的用//-----包起来了Shader"My/Unlit_Stencil"{Properties{_Mai......
  • dremio backend webserver 简单说明
    dremio的webserver是基于jetty+jersey开发的webserver同时也和标准的dremio服务一样实现了service接口方便服务的启动具体是由DACDaemon调用触发的启动webserve......
  • 史上最简单 OpenCV for C++ 在 Windows 和 Ubuntu 上编译安装使用教程
    准备工作原材料Ubuntu系统(非必须,Windows也可以,主要是Ubuntu适合编译)OpenCV3.4.1压缩包OpenCVcontrib3.4.1压缩包MinGW(Windows上运行GCC)版本信息......