DATAX工具同步数据从hdfs到drds性能优化
問題描述
在客戶現(xiàn)場(chǎng)運(yùn)維過程中,使用datax同步數(shù)據(jù)從hdfs到drds速度極其緩慢,因此希望進(jìn)行datax的json文件進(jìn)行優(yōu)化,提升速度,同步緩慢及報(bào)錯(cuò)如下;
問題分析
對(duì)于datax的使用問題,第一要素就要檢查json文件的問題;
從同步的datax的日志及報(bào)錯(cuò)的tddl-4603來看,json文件是可以使用的,只是使用的參數(shù)設(shè)置有問題導(dǎo)致了4603的報(bào)錯(cuò),也就是出現(xiàn)了跨庫(kù)事務(wù)的存在;drds使用datax從hdfs同步數(shù)據(jù)過來,解析之后應(yīng)該直接進(jìn)入到對(duì)應(yīng)的分庫(kù)分表當(dāng)中,為何會(huì)出現(xiàn)這種報(bào)錯(cuò)?
檢查json文件,我們發(fā)現(xiàn)如下:
這里的drds導(dǎo)入的writer引擎竟然是mysqlwriter而非drdswriter引擎,經(jīng)過咨詢師兄,mysqlwriter不能用在drds目標(biāo)的,否則就會(huì)出現(xiàn)跨庫(kù)事物不支持;
由于drds本身是出現(xiàn)是有適用datax的drdswriter的引擎,所以修改引擎為drdswriter以后,重新執(zhí)行datax同步任務(wù),發(fā)現(xiàn)tddl-4603報(bào)錯(cuò)消失,同步速度從38k提升到200k;
而此時(shí)200k速度,3000多行的導(dǎo)入速率依然太慢無法滿足客戶的需求;
故而還需繼續(xù)分析優(yōu)化其他參數(shù)來進(jìn)行速度的提升;
這里涉及到的最直接的優(yōu)化參數(shù)就是speed參數(shù);
speed參數(shù)在這個(gè)場(chǎng)景有兩種模式:
a? channel模式:是并行的一個(gè)設(shè)置,設(shè)置并行切分任務(wù)數(shù);
b? bytes模式:限制單個(gè)任務(wù)速度上線;
而目前是由于速度根本上不去,并且測(cè)試了bytes以后根本不起作用,所以依舊選擇使用channel;
對(duì)于數(shù)據(jù)writeMode寫入模式,由于數(shù)據(jù)準(zhǔn)備已經(jīng)確定沒有問題,沒有必要進(jìn)行導(dǎo)入校驗(yàn),可以選擇導(dǎo)入以后校驗(yàn),故而用insert ignore替換了replace,并且添加了batchsize的緩沖大小再次進(jìn)行測(cè)試
如下為修改后的json文件模式;
再次測(cè)試的結(jié)果如下:
速度從原來的200k提升到了1.7M,滿足客戶需求;
然后針對(duì)目前的情況略作微調(diào)進(jìn)行壓測(cè)如下:
問題解決及建議
1、調(diào)整寫入引擎從mysqlwriter到drdswriter引擎,避免夸庫(kù)事務(wù)的存在;
2、調(diào)整writeMode寫入模式從replace為insert ignore選擇不進(jìn)行數(shù)據(jù)檢查模塊,并增加batchsize參數(shù),速度提升滿足客戶需求;
3、在此基礎(chǔ)上進(jìn)行微調(diào),添加數(shù)據(jù)源參數(shù)及調(diào)整channel及batchsize等,得到最后參數(shù)設(shè)置及速度情況;
總結(jié)
以上是生活随笔為你收集整理的DATAX工具同步数据从hdfs到drds性能优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IBM MR10i阵列卡配置Raid0/
- 下一篇: C语言 —— sprintf()函数