张杰
发布于

领先架构云数仓-OushuDB学习心得

OushuDB 是新一代云数据仓库,融合了 MPP 和 Hadoop 的两者的优点,在兼容性和性能等方面补足了以往产品的短板,整体表现更优秀。根据这段时间的培训与学习,我总结了 OushuDB 的总体架构,进一步感受到 OushuDB 架构的非凡特性。OushuDB 的总体架构是分布式四层架构,从上到下依次是客户端,主节点,虚拟计算集群和虚拟存储集群。
一、客户端
OushuDB 的客户端包含了客户端工具和外部接口。第一个客户端工具是 PSQL,PSQL 是 PostgreSQL 中的一个命令行交互式客户端工具,第二个是 Postgres 官方 UI 客户端工具 PGAdmin,第三个客户端工具是偶数公司自研的 Lava 平台可以让用户通过 UI 界面操作数据库。外部接口包括 JDBC 接口,ODBC 接口,C 接口和 PL 接口。在 Oushu Software Tarball 里面包含了 JDBC 包,它也可以兼容 PG 官方 JDBC。ODBC 接口可以兼容 Postgres 官方 ODBC。Libpq 是 C 应用程序接口。Libpq 由相关库函数组成,可以允许客户端程序通过将查询传递给 PostgreSQL 后台服务器并接收这些查询返回的结果。同在 OushuDB 的标准发布中当前有四种过程语言可用: PL/pgSQL、 PL/Perl、 PL/Python 以及 PL/Java,其中 PL/pgSQL 是默认安装可用的。
二、主节点
OushuDB 的主节点主要负责接收和处理用户的查询,并将其分解成不同的任务,分派给不同的 Segment 节点。主节点包含解析器,优化器,调度器,元数据管理,权限安全和资源管理等。OushuDB 使用基于代价的优化器,能够针对大多数场景高效筛选出性能最好的执行计划。
为保证高可用服务,主节点还配置了 standby 节点。这样,当主节点出现故障时,standby 节点会接管成为新的主节点,从而进一步保证集群的可用性。
三、虚拟计算集群
虚拟计算集群主要是指 OushuDB 执行器集群,当然执行器也可以部署在主节点上。执行器是数据库内核最重要的部件之一,提升执行器的性能,会很大程度上提升数据库性能。OushuDB 使用了向量计算外加单指令多数据流(SIMD)优化技术,向量计算更适合并行处理数据,而单指令多数据流一次性获得所有操作数进而加快了运算,充分利用 CPU 性能,特别适合数据密集型运算。比如,乘法指令则可以一次同时执行四对数据的乘法操作。OushuDB 新执行器充分利用列式存储 ORC、Magma 存储格式。新执行器全量支持 TPCH 和 TPCDS,TPCH 比 Greenplum 大约快 5-10 倍比 SparkSQL 3.0 以上的版本要快几十倍。
四、虚拟存储集群
虚拟存储集群是提供了对 HDFS,Magma 和外部表的支持。虚拟存储集群存储中的 HDFS,主要是指 HDFS 的数据节点(DataNode),数据节点 负责数据的存储和读写操作,HDFS 将数据分割成若干数据块,每个数据节点存储一部分数据块,这样文件就分布存储在整个 HDFS 服务器集群中。
但是 HDFS 光有数据节点是不够的,HDFS 还有重要的名字节点(NameNode),名字节点是整个 HDFS 的核心,记录着 HDFS 的类似文件分配表信息,所有的文件路径和数据块存储信息都保存在名字节点,如果名字节点出现故障,整个 HDFS 系统集群都无法使用;如果名字节点上记录的数据丢失,整个集群所有数据节点存储的数据也就没用了。所以,名字节点高可用容错能力非常重要。名字节点采用主从热备的方式提供高可用服务。
在部署时,可以以 HA 的方式单独部署 HDFS 的名字节点,也可以将 HDFS 的名字节点与主节点部署在一起,但是为了保证负载均衡,我们通常会将 HDFS 的活跃名字节点和 OushuDB 的备用主节点(Standby)分配在同一机器上。
HDFS 支持的数据格式包括 AO,ORC 等,其中 AO 支持数据插入操作,但是不支持数据的修改和删除,ORC 支持数据的完整操作,即数据的增删改查。Magma 是偶数公司开发的一种数据存储格式,是行列混合的存储格式。存储的数据是结构化表数据。Magma 支持对表数据做更新和删除操作,并且 Magma 提供了数据索引功能,可以建立主键索引和非主键索引。
OushuDB 的 Magma 和 HDFS 数据节点可以部署在 OushuDB 的 Segment 节点,这样主要是为了保证本地读。虽然 OushuDB 支持外部的 HDFS,但是这样的话会走网络,影响性能。因此,推荐将他们部署在同一个机器上。
总之,OushuDB 支持 Selelct/Append/Update/Delete 等混合工作负载,实现了自研存储、对象存储,融合了 HDFS 特性,采取了存储与计算分离的架构,可以扩展到上万节点,并且可以原生适应云计算的弹性需求,是当今最好的云数据仓库之一。

评论
    test