ETL异构数据源Datax_限速设置_06

末蓝、 2022-10-09 03:05 371阅读 0赞

文章目录

          • 一、提升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的速度.
二、配置简述

全局配置:

  1. job.setting.speed.channel : 全局配置channel并发数
  2. job.setting.speed.record : 全局配置channelrecord限速
  3. job.setting.speed.byte:全局配置channelbyte限速

单channel配置:

  1. core.transport.channel.speed.record:单channelrecord限速
  2. core.transport.channel.speed.byte:单channelbyte限速
三、案例
3.1. 第一种

方式举例如下:
core.transport.channel.speed.byte=1048576,
job.setting.speed.byte=5242880,所以Channel个数 = 全局Byte
限速 / 单Channel Byte限速=5242880/1048576=5个,

  1. {
  2. "core":{
  3. "transport":{
  4. "channel":{
  5. "speed":{
  6. "byte":1048576
  7. }
  8. }
  9. }
  10. },
  11. "job":{
  12. "setting":{
  13. "speed":{
  14. "byte":5242880
  15. }
  16. },
  17. ...
  18. }
  19. }
3.2. 第二种

方式举例如下:
core.transport.channel.speed.record=100,
job.setting.speed.record=500,所以配置全局Record限速以及单
Channel Record限速,Channel个数 = 全局Record限速 / 单
Channel Record限速=500/100=5

  1. {
  2. "core":{
  3. "transport":{
  4. "channel":{
  5. "speed":{
  6. "record":100
  7. }
  8. }
  9. }
  10. },
  11. "job":{
  12. "setting":{
  13. "speed":{
  14. "record":500
  15. }
  16. },
  17. ...
  18. }
  19. }
3.3. 第三种

配置举例如下:
直接配置job.setting.speed.channel=5,所
以job内Channel并发=5个

  1. {
  2. "job":{
  3. "setting":{
  4. "speed":{
  5. "channel":5
  6. }
  7. },
  8. ...
  9. }
  10. }
3.4. 第四种

配置举例如下:
直接配置job.setting.speed.channel=5,
core.transport.channel.speed.byte=5242880

  1. {
  2. "core":{
  3. "transport":{
  4. "channel":{
  5. "speed":{
  6. "byte":1048576
  7. }
  8. }
  9. }
  10. },
  11. "job":{
  12. "setting":{
  13. "speed":{
  14. "channel":3
  15. }
  16. },
  17. ...
  18. }
  19. }
3.5. 案例实战

#oracle2mysql.json
#全局配置channel数量,设置单channel速率

  1. {
  2. "core": {
  3. "transport": {
  4. "channel": {
  5. "speed": {
  6. "byte": 1048576
  7. }
  8. }
  9. }
  10. },
  11. "job": {
  12. "content": [
  13. {
  14. "reader": {
  15. "name": "oraclereader",
  16. "parameter": {
  17. "column": [
  18. "IDNO",
  19. "COL1",
  20. "COL2",
  21. "COL3",
  22. "DT",
  23. "COL5",
  24. "COL6",
  25. "COL7",
  26. "COL8",
  27. "COL9",
  28. "COL10"
  29. ],
  30. "connection": [
  31. {
  32. "jdbcUrl": [
  33. "jdbc:oracle:thin:@//192.xxx.xxx.xxx:1521:orcl"
  34. ],
  35. "table": [
  36. "TEST.OTBS1"
  37. ]
  38. }
  39. ],
  40. "username": "username",
  41. "password": "password"
  42. }
  43. },
  44. "writer": {
  45. "name": "mysqlwriter",
  46. "parameter": {
  47. "column": [
  48. "IDNO",
  49. "COL1",
  50. "COL2",
  51. "COL3",
  52. "DT",
  53. "COL5",
  54. "COL6",
  55. "COL7",
  56. "COL8",
  57. "COL9",
  58. "COL10"
  59. ],
  60. "connection": [
  61. {
  62. "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",
  63. "table": [
  64. "otbs1"
  65. ]
  66. }
  67. ],
  68. "username": "root",
  69. "password": "123456"
  70. }
  71. }
  72. }
  73. ]
  74. }
  75. }
3.6. 总结
  1. 上面限速或者提升速度的前提(channel并发)是必须配置数据分片splitPk,不然上面设置不生效。
  2. 一般会按照主键或者业务标识字段来进行数据分片

发表评论

表情:
评论列表 (有 0 条评论,371人围观)

还没有评论,来说两句吧...

相关阅读