继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Datax3.0中配置解读(4)

small_925_ant
关注TA
已关注
手记 69
粉丝 6394
获赞 157

针对几个参数的配置,之前根据阅读源码做了一些解读,这里做一下总结.

core.json

1-core.container.taskGroup.channel

   1.1 将拆分成的Task重新组合后 组装成的TaskGroup(任务组),默认启动的线程数量去执行这些Task

   1.2 和job配置中的channel配合使用,可以提高taskGroup的并发个数(前提是没有配置byte和record)

每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。

2-core.transport.channel.speed.byte

   2.1 首先作为单个channel的byte大小限速参数

   2.2 和job中配置的job.setting.speed.byte配合使用,可以提高taskGroup的并发个数

3-core.transport.channel.speed.record

   3.1 首先作为单个channel的record数量限速参数

   3.2 和job中配置的job.setting.speed.record配合使用,可以提高taskGroup的并发个数

job.json

1-job.setting.speed.channel

  1.1 job.setting.speed.channel/core.container.taskGroup.channel  获取taskGroup并发的个数

2-job.setting.speed.byte

 1.1  job.setting.speed.byte/core.transport.channel.speed.byte)/core.container.taskGroup.channel 获取taskGroup并发的个数

3-job.setting.speed.record

 1.1job.setting.speed.record/core.transport.channel.speed.record)/core.container.taskGroup.channel 获取taskGroup并发的个数

  

实例:

全局限速:

job.setting.speed.byte  1000  可以理解为整个任务所有任务的速度总和

core.transport.channel.speed.byte 100 单个channel限速

core.container.taskGroup.channel 5

此时如果切分后task的个数大于通过byte计算出的needChannelNumber,

可以获取到taskGroup的个数为10/5=2

每个taskGroup提交到固定大小为2的线程池执行任务,并且执行任务的并发数是5

主要阅读的代码路径:

com.alibaba.datax.core.job.JobContainer
com.alibaba.datax.core.transport.channel.Channel
com.alibaba.datax.core.taskgroup.TaskGroupContainer


限速的逻辑:
* 1- 获取到core.transport.channel.speed.byte和core.transport.channel.speed.record两个配置的参数值
* 2-判断是否大于0,如果两个都没有配置,则直接返回
* 3-根据byte计算出当前的速度,和配置的byte做比较,计算出需要休眠的时间
* 4-根据record计算出当前的速度,和配置的record做比较,计算出需要休眠的时间
* 5-获取休眠时间较大的值进行sleep.

调整channelNumber的逻辑在之前的文章已经总结可以去查看。

后续发现问题,会更新文章。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

热门评论

您好 ,请问如果我要导入上百亿从MongoDB导入到elasticsearch,这个配置该如何配置,要保证速度不慢

"  \"core\": {\n" +
"    \"transport\": {\n" +
"      \"channel\": {\n" +
"        \"speed\": {\n" +
"          \"byte\": -1,\n" +
"          \"channel\": -1,\n" +
"          \"record\": -1\n" +

都设置为-1可取不?

查看全部评论