共计 1228 个字符,预计需要花费 4 分钟才能阅读完成。
图 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 高并发连接数的限度。