上文《Apache Druid系列(三)Druid伪集群方式安装》我们演示了Druid集群的安装部署,本文我们来介绍下Druid的部署架构组件信息。
整个Druid集群主要由3部分角色组成,分别是:master节点,query节点和data节点组成,示例图如下:
这几个主要的节点里面运行的是不同的服务,下面挨个来介绍下:
1)master节点运行的服务
master节点启动的时候主要运行的服务进程有:Coordinator进程和Overlord进程,这两个进程的主要作用有:
Coordinator代表的是协调进程,主要作用是:
负责Historical的数据负载均衡,以及通过规则(Rule)管理数据的生命周期。 默认每隔1分钟同步元数据库,感知新生成的Segment,将待加载的Segment信息保存在Zookeeper目录中(此目录是对应在线的Historical Node在Zookeeper中的目录),Historical Node感知到需要加载新的Segment时,首先去本地磁盘目录下检查该Segment是否已下载,如果没有,会从zookeeper中获取对应的元数据(该Segment存储在何处,如果解压等)获取该文件并加载到内存中,同时在zookeeper对应目录下标记声明该Segment已被加载,从而该Segment可以被查询。 协调进程除了告诉Historical加载新数据之外,还会负责协调卸载过期数据、复制数据、和为了负载均衡移动数据。 如果集群内所有的Coordinator Node都停止服务,整个集群对外依然有效,不过新Segment不会被加载,过期的Segment也不会被丢弃,即整个集群内的数据拓扑会一直保持不变,直到新的Coordinator Node服务上线。
Overloard进程代表的是统治进程,主要作用是:
该进程监视MiddleManager进程,并且是数据摄入Druid的控制器,负责将提取任务分配给MiddleManagers并协调Segement发布。 类似Yarn中的ResourceManager,负责集群资源的管理和分配。
2)Query节点运行的服务
query节点启动的时候主要运行的服务进程有:Router进程和Broker进程,这两个进程的主要作用有:
Router进程代表的主要是路由进程,他的主要作用是:
该进程可以将请求路由到Broker、Coordinator、Overlord。
Broker进程代表的主要是查询进程,他的主要作用是:
该进程负责客户端数据的查询,并将这些查询转发给Historical和middleManager。
3)data节点运行的服务
Data节点启动的时候主要运行的服务进程有:Middle Manager进程和Historical进程,这两个进程的主要作用有:
Middle Manager进程代表的主要是中间惯例进程,他的主要作用是:
类似Yarn中NodeManager,负责单个节点的资源管理和分配。该进程负责接收实时数据和批数据,生成Segment数据文件。
Historical进程代表的主要是历史进程,他的主要作用是:
该进程负责存储已生成好的Segment数据文件,以供数据查询。当收到Coordinator进程通知的时候,检查本地缓存中已经存在的Segment数据文件,然后从DeepStorage中下载其他不在本地的Segment数据文件加载到内存提供查询。Historical进程是整个集群查询性能的核心所在,承担大部分的Segment查询。
所以根据上诉的信息总体总结下来,各个节点主要的工作是:
Master:运行Coordinator和Overlord进程,负责集群可用和读取数据。 Query:运行Broker和Router进程,负责处理外部客户端的查询。 Data:运行Historical和Middle Manager进程,负责数据接收和所有可查询数据的存储。
最后出了druid自身之外,还依赖外部的信息,从上文的安装来看就很直观,主要依赖的外部信息有:
1、mysql,主要用来存储druid的元数据信息 2、zookeeper,主要用来提供协调通信服务 3、deep Storage,主要是存储segment数据用(可以使用s3,oss,hdfs等)
还没有评论,来说两句吧...