官网地址:https://github.com/alibaba/DataX
主类:
com.alibaba.datax.core.Engine
传参:
-mode standalone -jobid -1 -job E:\chengxu\datax\bin\hivetohbase.json
VM参数:
-server -Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="E:\kerberos\datax\log" -Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="E:\kerberos\datax\log" -Dloglevel=info -Dfile.encoding=UTF-8 -Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener -Djava.security.egd=file:///dev/urandom -Ddatax.home="E:\chengxu\datax" -Dlogback.configurationFile="E:\chengxu\datax\conf\logback.xml" -classpath "E:\chengxu\datax\lib\*" -Dlog.file.name=dataxlogs
JRE:选择1.7
python 使用2.6版本
下载datax运行环境:
http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
插件开发源码解析:
http://blog.leanote.com/post/kobeliuziyang/DataX%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8F%92%E4%BB%B6
datax异常的处理机制
1、设置
"errorLimit":{
"record":"2"
}
2、在writer中添加nullMode模式
"encoding": "utf-8",
"nullMode": "empty"
nullMode
-
描述:读取的null值时,如何处理。支持两种方式:(1)skip:表示不向hbase写这列;(2)empty:写入HConstants.EMPTY_BYTE_ARRAY,即new byte [0]
-
必选:否
-
默认值:skip
Datax的架构和并发理解
总体来说,当JobContainer和TaskGroupContainer运行在同一个进程内的时候就是单机模式,在不同进程执行就是分布式模式。
channel: 20
用户提交了一个DataX作业,并配置了20个并发,目的是将一个100张分表的mysql数据同步到odps里面。 DataX的调度决策思路是:
1)DataXJob根据分库分表切分成了100个Task。
2)根据20个并发,DataX计算共需要分配4个TaskGroup(默认情况下一个组可并发处理5个task)。
即:taskGroup=20/5=4
3)4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。