更新时间:2022-12-19 GMT+08:00
数据并行导入
实现原理
数据并行导入(加载)的核心思想是充分利用所有节点的计算能力和I/O能力以达到最大的导入速度。DWS的数据并行导入实现了对指定格式(支持CSV/TEXT格式)的外部数据高速、并行入库。
所谓高速、并行入库是和传统的使用INSERT语句逐条插入的方式相比较。并行导入过程中:
- CN只负责任务的规划及下发,把数据导入的工作交给了DN,释放了CN的资源,使其有能力处理外部请求。
- 各个DN都参与数据导入的工作,充分利用各个设备的计算能力及网络带宽,提高数据导入的整体性能。
下面,将以Hash分布策略为例介绍DWS的数据导入过程。数据并行导入的流程图请参见图1。
流程 |
说明 |
---|---|
创建Hash分布策略的表 |
业务应用在CREATE TABLE时预先设定Hash分布策略(指定表的某个属性作为分布字段)。 |
设定分区策略 |
应用程序在CREATE TABLE时还可以预先设定分区(指定表的一个属性作为分区字段),每个数据节点内部的每个Hash的数据都将按照设定的分区规则做相同的分区处理。 |
|
启动数据导入后,GDS将指定的数据文件分割成固定大小的数据块。 |
|
每个数据节点并行的从GDS下载这些数据块。 |
|
各个数据节点并行的处理数据块,从中解析出一条数据元组,每一个元组根据分布列计算出来的Hash值判断存储的物理位置:
|
数据写入分区 |
数据到达Hash所在的节点后还将根据分区逻辑写入对应的分区数据文件。 在数据写入分区表时,DWS还提供了Exchange(交换分区)的技术来提升写入性能。 |
GDS:全称General Data Service,GDS服务用来管理数据源,可以在数据服务器上部署多个GDS服务来提升数据加载的性能。 |
父主题: 分布式环境的数据布局