Datax 安装
- 下载datax:wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
- 解压datax: tar –zxf datax.tar.gz
- 查看datax 命令 datax.py –help参数和作用如下:
-j或者—jvm 设置jvm参数如堆栈信息等
--jobid 设置jobId 在local和Distribute 模式使用
-m 或者--mode 运行模式包括standalone, local,distribute三种模式(开源版不支持distibute和local)
-p参数设置,通过-p设置参数后可以通过${param}在job中获取
-r 读plugn 如:hdfsReader
-w 写plugn 如:hdfsWriter
Datax 框架
DataX 将用户的 job.json 同步作业配置解析成一个 Job,DataX 通过 JobContainer 完成全局切分,调用任务,前置和后置的执行,任务的真实执行有taskgroupcontainer控制,jobcontainer就像hadoop的client,taskgroupcontainer就像am,而taskgroup就类似nodemanger,是真实的任务执行。
datax的重要组件
jobcontainer
JobContainer: Job执行器,负责Job全局拆分、调度、前置语句和后置语句等工作的工作单元。类似Yarn中的JobTracker
TaskGroupContainer
TaskGroup执行器,负责执行一组Task的工作单元,类似Yarn中的TaskTracker(Yarn中的JobTracker和Yarn中的TaskTracker通过RPC进行通讯)
相互关系
- TaskGroupContainer向JobContainer上报信息,称JobContainer是TaskGroupContainer的上级;
- Task向TaskGroupContainer上报信息,称TaskGroupContainer是Task的上级。
Writer
包含job和task,job是write 拆分的重要组件,真正的任务的读取是task的
startRead方法
Reader
和writer基本相同
Transformer
中间数据转换的组件,目前提供了5种的数据转换,包括字段截取、替换、补充、过滤和groovy自定义,可以自定义(后面有讲解自定义的方法)
相互关系
datax支持的数据源
除了官方提供的之外,datax还支持常用的olap的写如clickhouse、kudu等,除此之外datax可以很方便的自定义读写。(代码中有clickhouse、kudu的写但是没有测试过)。
datax测试(mysql 和 text的数据交换)
- 编写job的json文件相关的参数参考官方文档
{
"job": {
"setting": {
"speed": {
"channel": 3
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "root",
"splitPk": "id",
"column": [
"id","task_id","state","file_name"....
],
"connection": [
{
"table": [
"content_file_info"
],
"jdbcUrl": [
"jdbc:mysql://mysql-ip:3306/content?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&allowMultiQueries=true&useSSL=false"
]
}
]
}
},
"writer": {
"name": "txtfilewriter",
"parameter": {
"path": "/opt/datax_file",
"fileName": "content_file_info",
"writeMode": "truncate",
"dateFormat": "yyyy-MM-dd HH:mm:ss",
"fileFormat": "csv",
"fieldDelimiter": "\t",
"nullFormat":"\\N"
}
}
}
]
}
}
2.运行datax datax.py mysql_text_content_file.json