datax分析與思考(一)


Datax

總體流程圖

先看執行的第一個步驟:

file

在最上層抽象類,這個里面相當於獲取全局公共信息,java入口部分就是這個Engine的main方法直接啟動

Engine 啟動

com.alibaba.datax.core.Engine#main直接啟動

阿里這邊有提供多級JSON配置信息無損存儲

com.alibaba.datax.common.util.Configuration

但是平常的使用中很少有直接以json的格式操作,一般是轉成對象bean,然后進行操作,
他在這邊新寫這個方法的目的主要在於對封閉的json進行處理,直接從key獲取到value,但是我感覺還是可以直接轉成bean的形式去獲取比較方便.畢竟只有一個json的文件

直接main方法啟動,在datax.py腳本中設置了鎖需要的參數和json地址, 在啟動的時候通過讀取啟動參數,獲取到當前的啟動配置文件.
這邊阿里使用了

<dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.3.1</version>
</dependency>

這個包 ,然后使用

Options options = new Options();
		options.addOption("job", true, "Job config.");
		options.addOption("id", true, "Job unique id.");
		options.addOption("mode", true, "Job runtime mode.");
		DefaultParser parser = new DefaultParser();
		CommandLine cl = parser.parse(options, args);
		String job = cl.getOptionValue("job");
		String id = cl.getOptionValue("id");
		String mode = cl.getOptionValue("mode");

來根據參數的名字進行讀取.這個地方平常很少有用到,可以記錄下.

datax在執行的過程中打了很多的日志,有個打印vminfo的class我感覺可以在平常使用到,之前我也寫過這種類似的,但是說效果不是很好,因為我之前是使用的腳本去查詢的服務器上面的信息.

com.alibaba.datax.common.statistics.VMInfo#getVmInfo

這個類的話,在日志監控或者效率監控也可以使用到.

com.alibaba.datax.core.Engine#start 進入真正的執行方法

前面基本上都是在對性能參數的賦值,然后獲取到了一個List<Configuration> taskConfigs,將這個list轉成了map,然后再循環中開多線程執行任務.

https://github.com/fulln


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM