文章目录

  • 一. DataX优化概述
    • 1.1 网络带宽等硬件因素困扰
    • 1.2 DataX本身的参数调优
      • 1.2.1 全局
      • 1.2.2 局部
      • 1.2.3 Jvm 调优
  • 二.DataX优化案例
    • 2.1 mysql表切分
  • 参考:

一. DataX优化概述

当觉得DataX传输速度慢时,需要从上述四个方面着手开始排查。

  1. 网络本身的带宽等硬件因素造成的影响;
  2. DataX本身的参数;
  3. 从源端到任务机;
  4. 从任务机到目的端;

1.1 网络带宽等硬件因素困扰

  此部分主要需要了解网络本身的情况,即从源端到目的端的带宽是多少(实际带宽计算公式),平时使用量和繁忙程度的情况,从而分析是否是本部分造成的速度缓慢。

以下提供几个思路。

  1. 可使用从源端到目的端scp,python http,nethogs等观察实际网络及网卡速度;
  2. 结合监控观察任务运行时间段时,网络整体的繁忙情况,来判断是否应将任务避开网络高峰运行;
  3. 观察任务机的负载情况,尤其是网络和磁盘IO,观察其是否成为瓶颈,影响了速度;

1.2 DataX本身的参数调优

1.2.1 全局

datax 安装目录的conf 目录下的 core.json 文件。

{"core":{"transport":{"channel":{"speed":{"channel": 2, ## 此处为数据导入的并发度,建议根据服务器硬件进行调优"record":-1, ##此处解除对读取行数的限制"byte":-1, ##此处解除对字节的限制"batchSize":2048 ##每次读取batch的大小}}}},"job":{...}}

1.2.2 局部

实际运行每个人物的json配置文件

"setting": {"speed": {"channel": 2,"record":-1,"byte":-1,"batchSize":2048}}}
}

channel增大,为防止OOM,需要修改datax工具的datax.py文件。
如下所示,可根据任务机的实际配置,提升-Xms与-Xmx,来防止OOM。
tunnel并不是越大越好,过分大反而会影响宿主机的性能。
DEFAULT_JVM = “-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%s/log” % (DATAX_HOME)

1.2.3 Jvm 调优

python datax.py  --jvm="-Xms3G -Xmx3G" ../job/test.json

-Xms3G 表示JVM的初始值为3G
-Xmx3G 表示JVM可使用的最大值为3G

这样做的好处是给定一个大的内存,让同步数据处理起来更快。
也可以避免内存的抖动。

二.DataX优化案例

2.1 mysql表切分

如果源端是mysql的话,可以使用mysql的切分,并行处理。

{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "abc123","column": ["id","sale_date","prod_name","sale_nums"],"splitPk": "id","connection": [{"table": ["fact_sale"],"jdbcUrl": ["jdbc:mysql://10.31.1.122:3306/test"]}]}},

可以看到日志里面根据spilit进行切分了

[15:14:00] 2021-11-24 15:14:08.179 [job-0] INFO  JobContainer - jobContainer starts to do split ...
[15:14:00] 2021-11-24 15:14:08.179 [job-0] INFO  JobContainer - Job set Channel-Number to 2 channels.
[15:14:00] 2021-11-24 15:14:08.194 [job-0] INFO  SingleTableSplitUtil - split pk [sql=SELECT MIN(id),MAX(id) FROM fact_sale] is running...
[15:14:00] 2021-11-24 15:14:08.219 [job-0] INFO  SingleTableSplitUtil - After split(), allQuerySql=[
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (1 <= id AND id < 78762161)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (78762161 <= id AND id < 157524321)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (157524321 <= id AND id < 236286481)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (236286481 <= id AND id < 315048641)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (315048641 <= id AND id < 393810801)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (393810801 <= id AND id < 472572961)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (472572961 <= id AND id < 551335120)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (551335120 <= id AND id < 630097279)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (630097279 <= id AND id < 708859438)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  (708859438 <= id AND id <= 787621597)
[15:14:00] select id,sale_date,prod_name,sale_nums from fact_sale  where  id IS NULL
[15:14:00] ].

参考:

  1. https://www.cnblogs.com/hit-zb/p/10940849.html

DataX系列10-DataX优化相关推荐

  1. jvm系列(九):如何优化Java GC

    转载自 jvm系列(九):如何优化Java GC「译」 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三篇&l ...

  2. redis 系列10 字符串对象

    redis 系列10 字符串对象 原文:redis 系列10 字符串对象 一. 字符串对象编码 Redis中字符串可以存储3种类型,分别是字节串(byte string).整数.浮点数.在上章节中讲到 ...

  3. 搭建 VuePress 站点必做的 10 个优化

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 在搭建这 ...

  4. MySQL索引系列--索引的优化--LIKE模糊查询

    原文网址:MySQL索引系列--索引的优化--LIKE模糊查询_IT利刃出鞘的博客-CSDN博客 简介         本文介绍MySQL的LIKE模糊查询索引的优化.主要是索引失效的解决方案. 索引 ...

  5. 2011 DB2著作---舞动DB2系列之设计优化篇隆重问世!

    舞动DB2系列丛书简介: 舞动DB2系列丛书是王飞鹏等人编写的数据库系列著作,包括: 设计优化篇---<DB2设计与性能优化---原理.方法与实践> 应用开发篇---<从Oracle ...

  6. 狂神学习系列10:Vue

    狂神学习系列10:Vue 声明: 本文章是基于狂神的课程所编写,本人才疏学浅,内容仅作参考 项目和markdown文件资料: 06_Vue: 基于狂神说vue的项目及笔记 文章目录 狂神学习系列10: ...

  7. SAP PM 初级系列10 - 维护通知单相关的配置

    SAP PM 初级系列10 - 维护通知单相关的配置 1,定义维护通知单类型 2,定义维护通知单的编号范围 3,Allowed Change of Notification Type 这里定义哪种类型 ...

  8. 深度学习与计算机视觉系列(10)_细说卷积神经网络

    转载自: 深度学习与计算机视觉系列(10)_细说卷积神经网络 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/d ...

  9. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

最新文章

  1. 2021年大数据Hadoop(十一):HDFS的元数据辅助管理
  2. 如何用 Python 打飞机?
  3. 关于mybatis的参数2个使用经验(类似于struts2的通配所有页面的action配置,xmlsq语句参数类型为基本类型时的快捷指定办法)...
  4. 使用AOP与注解记录Java日志
  5. boost::math::relative_difference相关用法的测试程序
  6. [html] html标签的属性值是否可以省略引号?为什么?
  7. 杭州微念申请李子柒商标被全部驳回,“最惨打工人”李子柒开始反击:已起诉!...
  8. ios pan手势滑动消失动画_解析Color OS全面屏手势,操作丝滑,操作逻辑帮了大忙...
  9. stm8单片机例程下载链接
  10. 操作系统实验_Chcore -- 上交IPADS操作系统银杏书配套Lab实验笔记 - Lab2内存管理(一)...
  11. Vue学习手记02-路由创建
  12. usb不能识别的解决方案
  13. 人脸关键点定位:300W数据集
  14. RJ45-网口变压器及网口变压器-cpu之间的一些抗干扰防雷设计
  15. php 中文逗号 转英文,PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式...
  16. 腾讯云云直播、云点播
  17. IP-MAC绑定到底有多重要?(白目的见解)
  18. 人工智能与具体应用领域如何进行有效的结合
  19. 梯度下降计实例计算(二维)
  20. csharp基础练习题:寻找恩人【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

热门文章

  1. 什么是Mambo智能建站系统(CMS)?
  2. 形态学图像处理-腐蚀和膨胀
  3. leetcode算法之二分查找
  4. 做人,要得就是问心无愧
  5. facebook messenger简介
  6. yansongda3支付宝APP支付返回空的问题
  7. Java位运算之2的N次幂、整数转换、寻找只出现一次的数
  8. ucore lab2学习笔记整理
  9. Spring实战01——自动化装配bean
  10. [到处走走]北京胜利饭店