图1给出了一个典型的OushuDB集群的次要组件。计算局部和存储局部齐全拆散,能够独立扩容。在图中有多个OushuDB Master节点。元数据管理服务和资源管理服务位于OushuDB Master外部。其余节点为Slave节点。每个Slave节点上装置有一个OushuDB Segment。Segment实现OushuDB的计算。OushuDB Segment在执行查问的时候会启动多个QE (Query Executor, 查问执行器)。查问执行器运行在资源容器外面。在这个架构下,节点能够动静的退出集群,并且不须要数据从新散布。当一个节点退出集群时,他会向OushuDB Master节点发送心跳,而后就能够接管将来查问了。
图1. OushuDB体系架构
在OushuDB master节点外部有如下几个重要组件:查问解析器(Parser/Analyzer),优化器,资源管理器,容错服务,查问差遣器,元数据服务。在查问执行时,针对一个查问,弹性执行引擎会启动多个虚构Segment同时执行查问,节点间数据交换通过Interconnect(高速互联网络)进行。如果一个查问启动了1000个虚构Segment,意思是这个查问被平均的分成了1000份工作,这些工作会并行执行。所以说虚构Segment数其实表明了查问的并行度。查问的并行度是由弹性执行引擎依据查问大小以及以后资源应用状况动静确定的。上面我一一来解释这些组件的作用以及它们之间的关系:
● 查问解析器:负责解析查问,并查看语法及语义。最终生成查问树传递给优化器。
● 优化器:负责承受查问树,生成查问打算。针对一个查问,可能有数亿个可能的等价的查问打算,但执行性能差异很大。优化器的作用是找出优化的查问打算。
● 资源管理器:资源管理器负责整个集群的资源管理。资源管理器须要在并发的查问之间分配资源,并保障查问不应用超过调配给该查问的资源,否则查问之间会相互影响,可能导致系统整体不可用。
● 元数据缓存:用于OushuDB确定哪些Segment扫描表的哪些局部。OushuDB须要把计算差遣到数据所在的中央,所以咱们须要匹配计算和数据的局部性。这些须要底层存储数据(比方HDFS块,Magma Range等)的地位信息。地位信息个别在底层存储中,每个查问都拜访底层存储中的元数据,会造成瓶颈。所以咱们在OushuDB Master节点上建设了元数据缓存。
● 容错服务:负责检测哪些节点可用,哪些节点不可用。不可用的机器会被排除出资源池。
● 查问差遣器:优化器优化完查问当前,查问差遣器差遣打算到各个节点上执行,并协调查问执行的整个过程。查问差遣器是整个并行零碎的粘合剂。
● 元数据服务:负责存储OushuDB的各种元数据,包含数据库和表信息,以及拜访权限信息等。另外,元数据服务也是实现分布式事务的要害。
● 高速互联网络:负责在节点之间传输数据。应用软件实现,基于UDP协定。UDP协定无需建设连贯,从而能够防止TCP高并发连接数的限度。