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