DATAX工具同步数据从hdfs到drds性能优化

问题描述

在客户现场运维过程中,使用datax同步数据从hdfs到drds速度极其缓慢,因此希望进行datax的json文件进行优化,提升速度,同步缓慢及报错如下;DATAX工具同步数据从hdfs到drds性能优化



问题分析

对于datax的使用问题,第一要素就要检查json文件的问题;

从同步的datax的日志及报错的tddl-4603来看,json文件是可以使用的,只是使用的参数设置有问题导致了4603的报错,也就是出现了跨库事务的存在;drds使用datax从hdfs同步数据过来,解析之后应该直接进入到对应的分库分表当中,为何会出现这种报错?

DATAX工具同步数据从hdfs到drds性能优化

检查json文件,我们发现如下:


DATAX工具同步数据从hdfs到drds性能优化

这里的drds导入的writer引擎竟然是mysqlwriter而非drdswriter引擎,经过咨询师兄,mysqlwriter不能用在drds目标的,否则就会出现跨库事物不支持;

由于drds本身是出现是有适用datax的drdswriter的引擎,所以修改引擎为drdswriter以后,重新执行datax同步任务,发现tddl-4603报错消失,同步速度从38k提升到200k;


DATAX工具同步数据从hdfs到drds性能优化

而此时200k速度,3000多行的导入速率依然太慢无法满足客户的需求;

故而还需继续分析优化其他参数来进行速度的提升;

这里涉及到的最直接的优化参数就是speed参数;

speed参数在这个场景有两种模式:

aã channel模式:是并行的一个设置,设置并行切分任务数;

bã bytes模式:限制单个任务速度上线;

而目前是由于速度根本上不去,并且测试了bytes以后根本不起作用,所以依旧选择使用channel;

对于数据writeMode写入模式,由于数据准备已经确定没有问题,没有必要进行导入校验,可以选择导入以后校验,故而用insert ignore替换了replace,并且添加了batchsize的缓冲大小再次进行测试

DATAX工具同步数据从hdfs到drds性能优化

如下为修改后的json文件模式;


DATAX工具同步数据从hdfs到drds性能优化

再次测试的结果如下:

DATAX工具同步数据从hdfs到drds性能优化

速度从原来的200k提升到了1.7M,满足客户需求;

然后针对目前的情况略作微调进行压测如下:

DATAX工具同步数据从hdfs到drds性能优化

问题解决及建议

1、调整写入引擎从mysqlwriter到drdswriter引擎,避免夸库事务的存在;

2、调整writeMode写入模式从replace为insert ignore选择不进行数据检查模块,并增加batchsize参数,速度提升满足客户需求;

3、在此基础上进行微调,添加数据源参数及调整channel及batchsize等,得到最后参数设置及速度情况;