DataX系列10-DataX优化
文章目录
- 一. DataX优化概述
- 1.1 网络带宽等硬件因素困扰
- 1.2 DataX本身的参数调优
- 1.2.1 全局
- 1.2.2 局部
- 1.2.3 Jvm 调优
- 二.DataX优化案例
- 2.1 mysql表切分
- 参考:
一. DataX优化概述
当觉得DataX传输速度慢时,需要从上述四个方面着手开始排查。
- 网络本身的带宽等硬件因素造成的影响;
- DataX本身的参数;
- 从源端到任务机;
- 从任务机到目的端;
1.1 网络带宽等硬件因素困扰
此部分主要需要了解网络本身的情况,即从源端到目的端的带宽是多少(实际带宽计算公式),平时使用量和繁忙程度的情况,从而分析是否是本部分造成的速度缓慢。
以下提供几个思路。
- 可使用从源端到目的端scp,python http,nethogs等观察实际网络及网卡速度;
- 结合监控观察任务运行时间段时,网络整体的繁忙情况,来判断是否应将任务避开网络高峰运行;
- 观察任务机的负载情况,尤其是网络和磁盘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] ].
参考:
- https://www.cnblogs.com/hit-zb/p/10940849.html
DataX系列10-DataX优化相关推荐
- jvm系列(九):如何优化Java GC
转载自 jvm系列(九):如何优化Java GC「译」 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三篇&l ...
- redis 系列10 字符串对象
redis 系列10 字符串对象 原文:redis 系列10 字符串对象 一. 字符串对象编码 Redis中字符串可以存储3种类型,分别是字节串(byte string).整数.浮点数.在上章节中讲到 ...
- 搭建 VuePress 站点必做的 10 个优化
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 在搭建这 ...
- MySQL索引系列--索引的优化--LIKE模糊查询
原文网址:MySQL索引系列--索引的优化--LIKE模糊查询_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL的LIKE模糊查询索引的优化.主要是索引失效的解决方案. 索引 ...
- 2011 DB2著作---舞动DB2系列之设计优化篇隆重问世!
舞动DB2系列丛书简介: 舞动DB2系列丛书是王飞鹏等人编写的数据库系列著作,包括: 设计优化篇---<DB2设计与性能优化---原理.方法与实践> 应用开发篇---<从Oracle ...
- 狂神学习系列10:Vue
狂神学习系列10:Vue 声明: 本文章是基于狂神的课程所编写,本人才疏学浅,内容仅作参考 项目和markdown文件资料: 06_Vue: 基于狂神说vue的项目及笔记 文章目录 狂神学习系列10: ...
- SAP PM 初级系列10 - 维护通知单相关的配置
SAP PM 初级系列10 - 维护通知单相关的配置 1,定义维护通知单类型 2,定义维护通知单的编号范围 3,Allowed Change of Notification Type 这里定义哪种类型 ...
- 深度学习与计算机视觉系列(10)_细说卷积神经网络
转载自: 深度学习与计算机视觉系列(10)_细说卷积神经网络 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/d ...
- [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
最新文章
- 2021年大数据Hadoop(十一):HDFS的元数据辅助管理
- 如何用 Python 打飞机?
- 关于mybatis的参数2个使用经验(类似于struts2的通配所有页面的action配置,xmlsq语句参数类型为基本类型时的快捷指定办法)...
- 使用AOP与注解记录Java日志
- boost::math::relative_difference相关用法的测试程序
- [html] html标签的属性值是否可以省略引号?为什么?
- 杭州微念申请李子柒商标被全部驳回,“最惨打工人”李子柒开始反击:已起诉!...
- ios pan手势滑动消失动画_解析Color OS全面屏手势,操作丝滑,操作逻辑帮了大忙...
- stm8单片机例程下载链接
- 操作系统实验_Chcore -- 上交IPADS操作系统银杏书配套Lab实验笔记 - Lab2内存管理(一)...
- Vue学习手记02-路由创建
- usb不能识别的解决方案
- 人脸关键点定位:300W数据集
- RJ45-网口变压器及网口变压器-cpu之间的一些抗干扰防雷设计
- php 中文逗号 转英文,PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式...
- 腾讯云云直播、云点播
- IP-MAC绑定到底有多重要?(白目的见解)
- 人工智能与具体应用领域如何进行有效的结合
- 梯度下降计实例计算(二维)
- csharp基础练习题:寻找恩人【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练