DRDS到MaxCompute(原ODPS)数据归档性能优化测试

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

一、cdp同步基本原理
数据集成(Data Integration)是阿里巴巴集团提供的数据同步平台。该平台具备可跨异构数据存储系统、可靠、安全、低成本、可弹性扩展等特点,可为 20 多种数据源提供不同网络环境下的离线(全量/增量)数据进出通道。数据源类型的详情请参见 支持数据源类型。
数据集成的原理:
数据集成在阿里云上提供一套分布式离线数据同步平台,同时提供一套抽象化的数据抽取插件(称之为Reader)、数据写入插件(称之为Writer),并基于此框架设计一套简化版的中间数据传输格式,从而达到任意结构化、半结构化数据源之间数据传输之目的。从用户角度来看,一个数据集成同步任务运行Job示意图如下所示:
image

上述中,红色虚箭头是代表通过collector状态收集器监控数据返回到脏数据管理服务器进行数据分析,灰色方向箭头代表数据流向。DI Service主要是包含资源管理器、Job管理器、脏数据管理器、分布式服务、鉴权服务等。Job Container主要是将数据集成运行任务分成若干个task,然后通过scheduler调度管理。TaskGroup Container主要是数据抽取通过数据通道(channel)将数据写入。
• 使用数据集成Job启动API,向数据集成服务端发起调用,提交一个离线数据同步Job。
• 数据集成收到Job API请求后,将负责做必要的安全和权限校验,待校验通过后,数据集成会下发相应的Job到执行集群节点启动离线数据同步任务。
• Job启动后,根据您提供的源端(Reader)、目的端(Writer)的配置信息,加载并初始化相关插件,连接两端数据源,开始数据同步工作。
• Job运行过程中,将随心跳向数据集成汇报当前进度、速度、数据量等关键运行指标,可根据Job的状态API实时获取该Job运行状态,直至Job运行结束(成功或者失败)。

流程概述
image

步骤1:数据源端新建表。
步骤2:新增数据源。
步骤3:向导模式或脚本模式配置同步任务。
步骤4:运行同步任务,检查目标端的数据质量。

因为DRDS不支持存储过程,造一张实际生产的表有些复杂,所以采用通过RDS创建表数据,再导入到DRDS的方式
二、测试表准备:
通过RDS新建一张实际生产的表,数据量为一亿行左右(主键为自增)
通过存储结构插入数据(业务只需要天数是随机的):
delimiter

dropprocedurehuayu2;CREATEPROCEDUREhuayu2()begindeclarevarint;setvar=0;whilevar<100000000doinsertintotpcsbillrecievehuayutestselectnull,1234567,210025002110010114117029000016,0,null,0,null,null,null,0,0,null,null,0,null,null,null,21100101,null,null,null,null,null,null,null,21002500,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,CONCAT(2018,,03,,LPAD(FLOOR(1+(RAND()31)),2,0),′′,14:54:04),null,null,2017111014:54:04,null,null,null,2,4,null,null,null,null,null,0,null,null,null,null,null;setvar=var+1;endwhile;enddropprocedurehuayu2;CREATEPROCEDUREhuayu2()begindeclarevarint;setvar=0;whilevar<100000000doinsertintotpcsbillrecievehuayutestselectnull,1234567,210025002110010114117029000016,0,null,0,null,null,null,0,0,null,null,0,null,null,null,21100101,null,null,null,null,null,null,null,21002500,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,CONCAT(2018,′−′,′03′,′−′,LPAD(FLOOR(1+(RAND()∗31)),2,0),″,′14:54:04′),null,null,′2017−11−1014:54:04′,null,null,null,2,4,null,null,null,null,null,0,null,null,null,null,null;setvar=var+1;endwhile;end

delimiter

三、测试要求
通过mysqldump在DRDS新建导入的表,以天为分表键,分表键的值是随机分布在3月1日-3月31日的。
将源表按分表键做拆分,1天拆成1个任务,并发向目标表里进行同步,同时目标表按天做分区,找到最佳并发量。
注意:分库键的选择为自增主键,不能是固定,否则hash的时候只落在一个库里面,分表键也是随机的日期,这样数据就能均衡的分布在各个库里面
四、具体实施步骤
1、将RDS的表导入到测试环境DRDS
mysqldump –urds_xncs_qps8 –p –P3306 –h 10.1.1.1 database test1 –t > /home/hy.sql

这里加上了-t参数,目的是不备份表的结构,这样做的好处是,导入到DRDS的时候,在DRDS端建一个相同名字的数据库,并且可以自定义分库分表键,这样就省略了再次去修改备份的.sql文件而达到分库分表的目的。当然,如果只是需要一个单表,那就复制表结构跟数据就好了

2、 将复制的表数据导入到DRDS
2.1、 通过mysql -udrds_uat_pcs –P3306 –h10.3.3.3 drds_uat_pcs -p < /home/hy.slq
2.2、 进入到目标表所在的数据库,执行source /home/hy.sql
这两种方式大同小异,第一种稍微快些,第二种会有过程在屏幕上展示。习惯用第二种

在刚开始导入的时候会一些报错,但是对实际的导入不会影响

3、具体测试
数据量:

mysql> select count(*) from t_pcs_bill_recieve_huayutest ;
count(*)
78322075

1、 一个工作流,分十个同步任务执行,
每个同步任务where条件对应3天,每一个同步任务对应一个分区,共10个分区
最大速率上线10M/s,
结构图:

image

各个任务耗时:
1、========================================================================
任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:57:28 任务总计耗时 : 612s 任务平均流量 : 1.69MB/s 记录写入速度 : 20753rec/s 读出记录总数 : 12638734 读写失败总数 : 0
2、========================================================================
任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:56:18 任务总计耗时 : 543s 任务平均流量 : 1.14MB/s 记录写入速度 : 14038rec/s 读出记录总数 : 7580943 读写失败总数 : 0
3、========================================================================
任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:23 任务总计耗时 : 545s 任务平均流量 : 1.14MB/s 记录写入速度 : 14004rec/s 读出记录总数 : 7576202 读写失败总数 : 0
4、========================================================================
任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:26 任务总计耗时 : 548s 任务平均流量 : 1.13MB/s 记录写入速度 : 13933rec/s 读出记录总数 : 7579645 读写失败总数 : 0
5、========================================================================
任务启动时刻 : 2018-03-28 11:47:10 任务结束时刻 : 2018-03-28 11:56:17 任务总计耗时 : 546s 任务平均流量 : 1.14MB/s 记录写入速度 : 13979rec/s 读出记录总数 : 7576799 读写失败总数 : 0
6、========================================================================
任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:56:28 任务总计耗时 : 553s 任务平均流量 : 1.12MB/s 记录写入速度 : 13774rec/s 读出记录总数 : 7575981 读写失败总数 : 0
7、========================================================================
任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:18 任务总计耗时 : 541s 任务平均流量 : 1.15MB/s 记录写入速度 : 14115rec/s 读出记录总数 : 7579924 读写失败总数 : 0
8、========================================================================
任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:18 任务总计耗时 : 541s 任务平均流量 : 1.15MB/s 记录写入速度 : 14115rec/s 读出记录总数 : 7579924 读写失败总数 : 0

9、========================================================================
任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:56:27 任务总计耗时 : 551s 任务平均流量 : 1.13MB/s 记录写入速度 : 13856rec/s 读出记录总数 : 7579604 读写失败总数 : 0
10、========================================================================
任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:55:20 任务总计耗时 : 482s 任务平均流量 : 877.38KB/s 记录写入速度 : 10522rec/s 读出记录总数 : 5050713 读写失败总数 : 0

整体耗时:630秒

 ![image](https://yqfile.alicdn.com/8d8f3acb4098f6860aa698d56277bcdbf9c4f975.png)

2、 一个工作流,分五个同步任务执行,
每个同步任务where条件对应6天,每一个同步任务对应一个分区,共5个分区
最大速率上线10M/s,
结构图:

image

任务同步耗时:
1、========================================================================
任务启动时刻 : 2018-03-28 14:27:49 任务结束时刻 : 2018-03-28 14:37:42 任务总计耗时 : 593s 任务平均流量 : 2.09MB/s 记录写入速度 : 25605rec/s 读出记录总数 : 15158472 读写失败总数 : 0
2、========================================================================
任务启动时刻 : 2018-03-28 14:27:53 任务结束时刻 : 2018-03-28 14:37:36 任务总计耗时 : 583s 任务平均流量 : 2.12MB/s 记录写入速度 : 26093rec/s 读出记录总数 : 15160230 读写失败总数 : 0
3、========================================================================
任务启动时刻 : 2018-03-28 14:27:43 任务结束时刻 : 2018-03-28 14:37:33 任务总计耗时 : 589s 任务平均流量 : 2.10MB/s 记录写入速度 : 25775rec/s 读出记录总数 : 15156082 读写失败总数 : 0
4、========================================================================
任务启动时刻 : 2018-03-28 14:27:45 任务结束时刻 : 2018-03-28 14:37:36 任务总计耗时 : 591s 任务平均流量 : 2.10MB/s 记录写入速度 : 25729rec/s 读出记录总数 : 15154873 读写失败总数 : 0
5、========================================================================
任务启动时刻 : 2018-03-28 14:27:43 任务结束时刻 : 2018-03-28 14:38:01 任务总计耗时 : 617s 任务平均流量 : 2.34MB/s 记录写入速度 : 28768rec/s 读出记录总数 : 17692418 读写失败总数 : 0

整体耗时:629秒

image

3、 一个工作流,分十五个同步任务执行,
每个同步任务where条件对应2天,每一个同步任务对应一个分区,共15个分区
最大速率上线10M/s,
结构图:

 ![image](https://yqfile.alicdn.com/068c1c56b16baa1c3cc270eb286f7d46ff1a8990.png)

总体耗时:623秒

image

4、 一个工作流,分一个同步任务执行
最大速率上线10M/s,
结构图:
image

同步任务耗时:
任务启动时刻 : 2018-03-28 15:42:05 任务结束时刻 : 2018-03-28 15:57:16 任务总计耗时 : 910s 任务平均流量 : 7.02MB/s 记录写入速度 : 86257rec/s 读出记录总数 : 78322075 读写失败总数 : 0

总耗时:928秒
image

5、 一个工作流,分三个同步任务执行
最大速率上线10M/s,
结构图:

image

总耗时:699秒

image

6、 一个工作流,分四个同步任务执行
最大速率上线10M/s,
结构图:

image

总耗时:672秒
image

测试结果:

                            
并发数    10        5        15       1        3       4    
总耗时    630秒    629秒    623秒    928秒    699秒    672秒    
                            
                            
并发数    1         3        4        5        10       15    
总耗时    928秒    699秒    672秒    629秒    630秒    623秒    
                            

初步结论:
在并发为5、10、15的情况下,同步数据的速率基本没有变化630秒左右,在并发为1、2、3、4的情况下,速率由930秒提升到630秒左右,从而可以得出结论,在并发为5的情况下,同步速率已经达到最大,再增加并发对于速率的增加效果不明显。


转自袋鼠云

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
27天前
|
消息中间件 分布式计算 大数据
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
88 0
|
23天前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
46 1
|
26天前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
36 4
|
26天前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
49 1
|
26天前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
41 1
|
26天前
|
SQL 大数据 Apache
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
63 1
|
28天前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
31 3
|
28天前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
22 3
|
28天前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
47 3
|
27天前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
37 1

相关产品

  • 云原生大数据计算服务 MaxCompute