更新时间:2022-12-19 GMT+08:00

数据并行导入

实现原理

数据并行导入(加载)的核心思想是充分利用所有节点的计算能力和I/O能力以达到最大的导入速度。DWS的数据并行导入实现了对指定格式(支持CSV/TEXT格式)的外部数据高速、并行入库。

所谓高速、并行入库是和传统的使用INSERT语句逐条插入的方式相比较。并行导入过程中:
  • CN只负责任务的规划及下发,把数据导入的工作交给了DN,释放了CN的资源,使其有能力处理外部请求。
  • 各个DN都参与数据导入的工作,充分利用各个设备的计算能力及网络带宽,提高数据导入的整体性能。
下面,将以Hash分布策略为例介绍DWS的数据导入过程。数据并行导入的流程图请参见图1
图1 数据并行导入
表1 流程说明

流程

说明

创建Hash分布策略的表

业务应用在CREATE TABLE时预先设定Hash分布策略(指定表的某个属性作为分布字段)。

设定分区策略

应用程序在CREATE TABLE时还可以预先设定分区(指定表的一个属性作为分区字段),每个数据节点内部的每个Hash的数据都将按照设定的分区规则做相同的分区处理。

启动数据导入后,GDS将指定的数据文件分割成固定大小的数据块。

每个数据节点并行的从GDS下载这些数据块。

各个数据节点并行的处理数据块,从中解析出一条数据元组,每一个元组根据分布列计算出来的Hash值判断存储的物理位置:

  • 如果Hash在其他网络节点,则需要通过网络重分布到目标数据节点。
  • 如果Hash在本地节点,则存储在本地数据节点。

数据写入分区

数据到达Hash所在的节点后还将根据分区逻辑写入对应的分区数据文件。

在数据写入分区表时,DWS还提供了Exchange(交换分区)的技术来提升写入性能。

GDS:全称General Data Service,GDS服务用来管理数据源,可以在数据服务器上部署多个GDS服务来提升数据加载的性能。