Datax总结

3 篇文章 0 订阅
1 篇文章 0 订阅

1.Datax简介&核心架构

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等等各种异构数据源之间高效的数据同步功能
  • job:datax完成单个的数据同步作业,被称之为job,其为整个单例数据同步流程的管理节点,承载了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。

  • Split:DataXJob启动后,会根据不同的源端切分策略,对将要同步的数据进行切分,称之为Split。

  • Task:DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。

  • Schedule:切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。

  • TaskGroup:每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。每个TaskGroup任务组中的Task并发执行,默认配置为5个并发。

2.Datax的使用

1.官方案例解析:

 mysqlreader、hdfsreader、ftpreader mysqlwriter、hdfswriter

{
    "job": {
		{
		  "content":[                         # datax同步的具体配置
			{
			  "reader":{                      # reader的配置(类型、字段等等)
				"name":"streamreader",        # name 就是 type 类型 ,streamreader测试的时候使用
				"parameter":{                 # 这里指的是每一种不同的数据源插件的具体参数
				  "column":[                  # 在 streamreader 中需要设定发送的字段
					{
					  "type":"string",        # 发送一个string类型的 字段数据
					  "value":"DataX"         # 数据就是Datax
					},
					{
					  "type":"long",          # streamreader中字段的type是没有int的,只有long
					  "value":19890604        
					},
					{
					  "type":"date",
					  "value":"1989-06-04 00:00:00"
					},
					{
					  "type":"bool",
					  "value":true
					},
					{
					  "type":"bytes",
					  "value":"test"
					}
				  ],
				  "sliceRecordCount":100000         # 发送多少条测试数据
				}
			  },
			  "writer":{                            # 指明这个属性中填写的是写入到哪里的插件配置
				"name":"streamwriter",              # 插件的类型是 streamwriter
				"parameter":{                       # streamwriter 的参数配置信息
				  "encoding":"UTF-8",               # 输出的字符编码为 UTF-8
				  "print":false                     # 不输出到控制台
				}
			  }
			}
		  ],
		  "setting":{               # 一系列的配置信息
			"errorLimit":{          # 错误数据忽略
			  "percentage":0.02,    # 允许百分之多少的数据出现错误
			  "record":0            # 根据报错记录进行忽略
			},
			"speed":{
			  "byte":10485760       # 控制内存和网速
			}
		  }
		}
    }
}
配置文件结构:Datax的脚本格式是json,整个json包括content和setting两个部分

2.配置文件结构
  1. job: 顶层元素,包含任务的所有设置。
  2. setting: 任务设置,通常包括任务的速度控制等。
    • speed: 速度控制设置。
      • channel: 并发通道数量,表示同时进行数据传输的线程数。
  3. content: 一个数组,每个元素代表一个数据同步任务。
    • reader: 数据源读取配置,定义了如何读取数据。
    • writer: 目标数据源写入配置,定义了如何写入数据。
Reader部分

reader配置块定义了如何读取数据。

  • name: reader插件的名称。
  • parameter: 读取参数。
    • username: 数据源数据库的用户名。
    • password: 数据源数据库的密码。
    • column: 要读取的列。
    • splitPk: 分片键,用于数据的并行读取。
    • connection: 数据库连接信息。
      • table: 要读取的表。
      • jdbcUrl: 数据库的JDBC URL。
Writer部分

writer配置块定义了如何写入数据。

  • name: writer插件的名称。
  • parameter: 写入参数。
    • username: 目标数据库的用户名。
    • password: 目标数据库的密码。
    • column: 要写入的列。
    • preSql: 写入前执行的SQL语句,用于清理目标表等操作。
    • connection: 数据库连接信息。
      • table: 要写入的表。
      • jdbcUrl: 数据库的JDBC URL。

3.Datax同步数据的策略

        1. 全量:对mysql表中的所有数据进行全量同步
        2. 增量:只对新增、修改的数据进行同步
           方式1:如果只考虑新增表,则可以使用id,抽取id大于某个值的,这种id是自增。
           方式2:根据create_time或者modify_time的时间抽取数据

4.Datax调优

        1、调整channel的数量,扩大并发度
        2、调整jvm堆的大小,调整方案可以使用局部调整  默认值是1G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值