目前主流的OLAP数据库计算层架构有Master-Slave和Master-Master两种形态,但大多数选择的是Master-Slave架构,Master-Slave有助于控制流和计算流的分离,更简单的部署方式(Master集成元数据)等优势,下面是关于各个数据库或数据仓库产品的调研结果。
snowflake的架构设计
可以看出来,snowflake实际上是Master-Slave架构,有Cloud Services中Optimize,Authentication and Access Control等组件提供对外连接,等服务,计算层中由Virtual Warehouse负责计算,计算节点不会影响到连接节点,并且更容易做到计算的弹性。数据存储在S3上,元数据由Cloud Services管理。
apache doris FE-BE架构
apache doris架构中分为FE和BE两大组件。
presto的计算组件分为Presto Coordinator和presto Worker,Presto Coordinator负责连接,并通过Hive Connector来访问Hive MetaStore。Coordinators connect with workers and clients via REST.
Presto Coordinator:用于提交查询并管理跨 Presto Worker 的解析、计划和调度查询执行
Presto Worker:处理查询,添加更多的worker可以让您更快地处理查询
从以上的分析中可以看出,Master-Slave架构的优势在于
GreenPlum是share-nothing架构的分布式数据库,计算层架构分为Master Servers和Segment Servers,
Segment Servers是实际的计算节点,每个节点仅查询自己的数据,所得到的结果再经过主节点处理得到最终结果。通过增加节点数目达到系统线性扩展。
Master Servers负责负责相应客户端请求并将请求的SQL语句进行优化器解析生成分布式计划,将分布式计划调度分发到Segment Servers进行查询,并将查询结果返回客户端。
impala是标准的mpp架构,massively-parallel query execution engine,支持在上百台机器的Hadoop集群上执行快速查询。他对底层的存储系统解耦,不像数据库要求那么严格,不同的底层存储都可以联合查询。
上图是impala整体的架构图,可以简单的把impala集群看成三种角色服务。
impalad用于接收查询请求并分解成查询任务、组织并完成集群中的数据查询、汇总完成数据的整合关联。如果Impala用于调度查询请求的时候,一般会把它称为调度者(Coordinator)。在Impala中Impalad是对等的,也就是说每个进程内部的角色都一样,都可以作为调度者接收请求,这样即有助于容错,又可以做到负载均衡。一般每个数据节点都要安装一个imapald进程,这样impala可以查询本机的数据,实现数据本地性,减少网络IO。
statestored进程用于维护特定消息的发布订阅服务,用于在集群中广播一些消息。这个服务是单点的。
最后是catalogd,它主要负责维护元数据的读取查询。当执行DDL操作时,会同步到catalog,然后通过statestore广播给其他的节点。
参考文档
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。