Datax数据交换开发

官网地址: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。

猜你喜欢

转载自blog.csdn.net/zyl651334919/article/details/88830084