文章目录
- 一、提升job内Channel并发有几种配置方式
- 二、配置简述
- 三、案例
- 3.1. 第一种
- 3.2. 第二种
- 3.3. 第三种
- 3.4. 第四种
- 3.5. 案例实战
- 3.6. 总结
前言:
在DataX内部对每个Channel会有严格的速度控制,分两种,一种
是控制每秒同步的记录数,另外一种是每秒同步的字节数,可以根
据具体硬件情况设置这个byte速度或者record速度,一般设置byte
速度,比如:我们可以把单个Channel的速度上限配置为5MB。
优化:提升DataX Job内Channel并发数 并发数=taskGroup的数
量每一个TaskGroup并发执行的Task数 (默认单个任务组的并发数
量为5)。
一、提升job内Channel并发有几种配置方式
- 1.配置全局Byte限速以及单Channel Byte限速,Channel个数 = 全局Byte限速 / 单Channel Byte限速.
- 2.配置全局Record限速以及单Channel Record限速,Channel个数 = 全局Record限速 / 单Channel Record限速.
- 3.只配置Channel个数.
- 4.配置Channel个数和Channel的速度.
二、配置简述
全局配置:
job.setting.speed.channel : 全局配置channel并发数
job.setting.speed.record : 全局配置channel的record限速
job.setting.speed.byte:全局配置channel的byte限速
单channel配置:
core.transport.channel.speed.record:单channel的record限速
core.transport.channel.speed.byte:单channel的byte限速
三、案例
3.1. 第一种
方式举例如下:
core.transport.channel.speed.byte=1048576,
job.setting.speed.byte=5242880,所以Channel个数 = 全局Byte
限速 / 单Channel Byte限速=5242880/1048576=5个,
{"core":{"transport":{"channel":{"speed":{"byte":1048576}}}},"job":{"setting":{"speed":{"byte":5242880}},...}
}
3.2. 第二种
方式举例如下:
core.transport.channel.speed.record=100,
job.setting.speed.record=500,所以配置全局Record限速以及单
Channel Record限速,Channel个数 = 全局Record限速 / 单
Channel Record限速=500/100=5
{"core":{"transport":{"channel":{"speed":{"record":100}}}},"job":{"setting":{"speed":{"record":500}},...}
}
3.3. 第三种
配置举例如下:
直接配置job.setting.speed.channel=5,所
以job内Channel并发=5个
{"job":{"setting":{"speed":{"channel":5}},...}
}
3.4. 第四种
配置举例如下:
直接配置job.setting.speed.channel=5,
core.transport.channel.speed.byte=5242880
{"core":{"transport":{"channel":{"speed":{"byte":1048576}}}},"job":{"setting":{"speed":{"channel":3}},...}
}
3.5. 案例实战
#oracle2mysql.json
#全局配置channel数量,设置单channel速率
{"core": {"transport": {"channel": {"speed": {"byte": 1048576}}}},"job": {"content": [{"reader": {"name": "oraclereader","parameter": {"column": ["IDNO","COL1","COL2","COL3","DT","COL5","COL6","COL7","COL8","COL9","COL10"],"connection": [{"jdbcUrl": ["jdbc:oracle:thin:@//192.xxx.xxx.xxx:1521:orcl"],"table": ["TEST.OTBS1"]}],"username": "username","password": "password"}},"writer": {"name": "mysqlwriter","parameter": {"column": ["IDNO","COL1","COL2","COL3","DT","COL5","COL6","COL7","COL8","COL9","COL10"],"connection": [{"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/datax?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true","table": ["otbs1"]}],"username": "root","password": "123456"}}}]}
}
3.6. 总结
上面限速或者提升速度的前提(channel并发)是必须配置数据分片splitPk,不然上面设置不生效。
一般会按照主键或者业务标识字段来进行数据分片