0
点赞
收藏
分享

微信扫一扫

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配置:

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,不然上面设置不生效。
一般会按照主键或者业务标识字段来进行数据分片


举报

相关推荐

0 条评论