ETL异构数据源Datax_限速设置_06
文章目录
- 一、提升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,不然上面设置不生效。
一般会按照主键或者业务标识字段来进行数据分片
还没有评论,来说两句吧...