Datax总结

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

相关推荐

  1. C# DataTable 总结常用方法

    2024-07-12 13:34:05       50 阅读
  2. datax

    2024-07-12 13:34:05       64 阅读
  3. DataTable

    2024-07-12 13:34:05       28 阅读
  4. DataX迁移MongoDB

    2024-07-12 13:34:05       69 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 13:34:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 13:34:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 13:34:05       58 阅读
  4. Python语言-面向对象

    2024-07-12 13:34:05       69 阅读

热门阅读

  1. Makefile--自动识别编译环境(x86还是arm)进行编译

    2024-07-12 13:34:05       18 阅读
  2. docker安装mysql8.0.23

    2024-07-12 13:34:05       22 阅读
  3. RPC与REST

    2024-07-12 13:34:05       20 阅读
  4. Opencv中的直方图

    2024-07-12 13:34:05       17 阅读
  5. python 如何处理图片 举例说明

    2024-07-12 13:34:05       16 阅读
  6. DangerWind-RPC-framework---四、SPI

    2024-07-12 13:34:05       20 阅读
  7. OpenCV:解锁计算机视觉的魔法钥匙

    2024-07-12 13:34:05       19 阅读
  8. 使用sklearn的基本流程

    2024-07-12 13:34:05       20 阅读
  9. qt udp 只创建服务端链接

    2024-07-12 13:34:05       24 阅读
  10. 开发不认可bug策略

    2024-07-12 13:34:05       22 阅读
  11. 深入理解sklearn中的模型参数优化技术

    2024-07-12 13:34:05       23 阅读
  12. Android C++系列:Linux守护进程

    2024-07-12 13:34:05       20 阅读
  13. hive中reverse函数

    2024-07-12 13:34:05       21 阅读
  14. 03-NoSQL之Redis配置与优化

    2024-07-12 13:34:05       15 阅读
  15. 编程是学什么:探索编程世界的四大核心领域

    2024-07-12 13:34:05       19 阅读
  16. npm error code 1

    2024-07-12 13:34:05       18 阅读
  17. npm link,npm unlink调试本地开发npm包

    2024-07-12 13:34:05       18 阅读