当前位置: 首页 > article >正文

大数据学习(59)-DataX执行机制

&&大数据学习&&
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞

DataX 的执行机制 是一个基于 插件化架构 的分布式数据同步流程,其核心设计目标是实现高效、稳定、灵活的数据传输。以下是 DataX 执行机制的详细说明:

一、核心组件

DataX 的执行机制依赖以下核心组件:

  1. Job
    一个完整的数据同步任务,由 Reader(数据读取插件)和 Writer(数据写入插件)组成。

  2. Reader
    负责从源数据源(如 MySQL、HDFS)读取数据。

  3. Writer
    负责将数据写入目标数据源(如 HDFS、Oracle)。

  4. Channel
    数据传输通道,负责缓存和传输数据,是 Reader 和 Writer 之间的桥梁。

  5. Task
    Job 的并行执行单元,每个 Task 包含一个 Reader 和 Writer,通过 Channel 连接。

  6. TaskGroup
    一组 Task 的集合,共享线程资源。

二、执行流程

DataX 的任务执行分为以下几个阶段:

1. 任务初始化
  1. 解析配置

    DataX 解析用户提交的 JSON 配置文件,生成 Job 对象。

  2. 插件加载

    根据配置加载对应的 Reader 和 Writer 插件。

2. 任务切分(Split)
  1. Reader 切分

    Reader 插件根据数据源的特性(如表的分区、文件块大小),将数据读取任务切分为多个 分片(Split)

  2. Writer 切分

    Writer 插件根据目标数据源的写入规则,生成对应的写入分片。

  3. 生成 Task

    每个 Reader 分片和 Writer 分片组合成一个 Task。

3. 任务调度
  1. Task 分配

    DataX 根据 channel 参数(并发度),将 Task 分配到多个 TaskGroup 中。

  2. 资源分配

    每个 TaskGroup 由独立的线程池管理,Task 在 TaskGroup 内并行执行。

4. 数据同步
  1. Reader 读取数据

    每个 Task 的 Reader 从数据源读取数据,转换为 DataX 内部的数据格式 Record

  2. Channel 传输

    Record 数据通过 Channel 传输到 Writer。

  3. Writer 写入数据

    Writer 将 Record 数据转换为目标数据源的格式并写入。

5. 资源回收与统计
  1. 关闭连接

    释放 Reader 和 Writer 占用的资源(如数据库连接、文件句柄)。

  2. 统计信息

    汇总每个 Task 的同步结果(如数据量、耗时、错误记录)。

三、关键机制

1. 数据流与控制流分离
  1. 数据流

    Reader → Channel → Writer,通过内存或磁盘缓冲数据。

  2. 控制流

    由 DataX 框架统一调度 Task 的启停和资源分配。

2. 流量控制
  1. 字节限速

    通过 byte 参数限制每秒传输的字节数。

  2. 行数限速

    通过 record 参数限制每秒传输的记录数。

  3. 动态调整

    根据网络带宽和目标端写入能力自动调整传输速度。

3. 容错与重试
  1. Task 失败重试

    单个 Task 失败后自动重试(默认重试 1 次)。

  2. 错误记录容忍

    通过 errorLimit 参数设置允许的最大错误记录数或比例。

4. 数据一致性
  1. 原子性

    单个 Task 的数据传输是原子的,要么全部成功,要么失败回滚。

  2. 最终一致性

    分布式场景下,通过重试和补偿机制保证最终一致性。

四、示例:MySQL → HDFS 同步流程

切分阶段

        MySQL Reader 按主键范围切分为 10 个分片。

        HDFS Writer 生成 10 个写入分片。

执行阶段

        10 个 Task 并发执行,每个 Task 读取 1 个分片数据并写入 HDFS。

合并阶段

        HDFS Writer 将多个分片文件合并为最终输出文件。

相关文章:

大数据学习(59)-DataX执行机制

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…...

YashanDB认证,YCA证书认证教程,免费证书,内含真题考试题库及答案——五分钟速成

目录 一.账号及平台注册登录流程 二.登录进行设备调试核验 三.考试(考完获取分数) 四.获取证书 五.题库及答案 一.账号及平台注册登录流程 1-点击这里进行账号注册(首次学习必须先注册,有账号之后可以直接在2号链接登录&#…...

消防行业如何借助 TDengine 打造高效的数据监控与分析系统

小T导读:本篇文章来自“2024,我想和 TDengine 谈谈”征文活动的优秀投稿,深入探讨了如何在消防行业中运用 TDengine 进行业务建模。文章重点介绍了如何通过 TDengine 的超级表、标签设计和高效查询功能,有效管理消防监控系统中的时…...

自然语言处理中的语音识别技术:从声波到语义的智能解码

引言 语音识别(Automatic Speech Recognition, ASR)是自然语言处理(NLP)的关键分支,旨在将人类语音信号转化为可处理的文本信息。随着深度学习技术的突破,语音识别已从实验室走向日常生活,赋能…...

010-Catch2

Catch2 一、框架简介 Catch2 是一个基于 C 的现代化单元测试框架,支持 TDD(测试驱动开发)和 BDD(行为驱动开发)模式。其核心优势在于: 单头文件设计:v2.x 版本仅需包含 catch.hpp 即可使用自然…...

TypeScript类:面向对象编程的基石

一、从现实世界到代码世界 想象你要建造一栋房子,首先需要一张设计蓝图——它定义了房屋的结构(几个房间)、功能(卧室/厨房)和特性(材料/颜色)。在TypeScript中,class就是这个设计蓝…...

Bad owner or permissions on ssh/config - 解决方案

问题 在Windows系统通过ssh连接远程服务器时报错: ssh [ssh_user][ip] Bad owner or permissions on C:\\Users\\[win_user]/.ssh/config原因 这是因为.ssh文件夹或.ssh/config文件的权限异常,当前Windows账号没有读写权限导致的。 Windows系统重装&a…...

C++之序列容器(vector,list,dueqe)

1.大体对比 在软件开发的漫长历程中,数据结构与算法始终占据着核心地位,犹如大厦的基石,稳固支撑着整个程序的运行。在众多编程语言中,数据的存储与管理方式各有千秋,而 C 凭借其丰富且强大的工具集脱颖而出&#xff…...

安卓Android与iOS设备管理对比:企业选择指南

目录 一、管理方式差异 Android Enterprise方案包含三种典型模式: Apple MDM方案主要提供两种模式: 二、安全防护能力 Android系统特点: 三、应用管理方案 四、设备选择建议 五、典型场景推荐 需求场景 推荐方案 六、决策建议要点…...

git本地仓库链接远程仓库

重命名本地分支为main 如果你希望本地分支名称与远程分支名称保持一致,可以考虑将本地的master分支重命名为main。这可以通过以下命令完成: 在连接之前要先提交 git add . git commit -m "init" 强制推送到远程 git push -f origin main 首…...

版本控制器Git(1)

文章目录 前言一、初识Git问题引入解决方案注意事项 二、Git安装三、Git配置与基本操作Git创建Git配置用户名称和地址认识工作区、暂存区、版本库添加文件到仓库添加文件到暂存区提交暂存区内容到本地仓库 查看提交历史 四、Git 暂存区、HEAD、对象库及文件Git内部结构概览查看…...

推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet

引言 随着大型语言模型(LLMs)在技术领域的应用日益广泛,评估这些模型在特定技术任务上的能力变得越来越重要。本研究聚焦于四款领先的推理模型——DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet在SQL理解与分析方面的能力,…...

[动手学习深度学习]12.权重衰退

1.介绍 权重衰退是常见的处理过拟合的方法 控制模型容量方法 把模型控制的比较小,即里面参数比较少使参数选择范围小 约束就是正则项 每个特征的权重都大会导致模型复杂,从而导致过拟合。 控制权重矩阵范数可以使得减少一些特征的权重,甚至…...

JavaEE_多线程(二)

目录 1. 线程的状态2. 线程安全2.1 线程不安全问题的原因 3. 线程安全中的部分概念3.1 原子性3.2 可见性3.3 指令重排序 4. 解决线程安全问题4.1 synchronized关键字4.1.1 可重入4.1.2 synchronized使用 4.2 volatile关键字4.2.1 volatile使用 5. wait和notify5.1 wait()方法5.…...

【unity小技巧】分享vscode如何进行unity开发,且如何开启unity断点调试模式,并进行unity断点调试(2025年最新的方法,实测有效)

文章目录 前言一、前置条件1、已安装Visual Studio Code,并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号],2、在Visual Studio Code扩展中搜索Unity,并安装3、同时注意这个插件下面的描述,需要根…...

【Hadoop】详解HDFS

Hadoop 分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上,能够提供高吞吐量的数据访问,非常适合大规模数据集上的应用。为了做到可靠性,HDFS创建了…...

Spring(4)——响应相关

一、返回静态页面 1.1**RestController和Controller** 想返回如下页面: 如果我们依旧使用原来的**RestController** 可以看到的是仅仅返回了字符串。 此时将**RestController改为Controller** 可以看到这次返回的是html页面。 那么**RestController和Controller…...

axure11安装教程包含下载、安装、汉化、授权(附安装包)图文详细教程

文章目录 前言一、axure11安装包下载二、axure11安装教程1.启动安装程序2.安装向导界面3.安装协议协议页面2.选择安装位置3.开始安装4.完成安装 三、axure11汉化教程1.axure11汉化包2.axure11汉化设置 四、axure11授权教程1.打开axure112.设置使用方式3.输入许可证号4.axure11安…...

如何注册海外社媒平台账号

在数字贸易时代,社媒平台已成为外贸企业触达全球客户的战略要地。数据显示,2023年全球B2B采购决策者中,87%通过社媒渠道完成供应商初筛。本文深度解析主流平台的运营规则与技术方案,构建覆盖获客转化全链路的数字化营销体系。 一…...

Python IO编程-序列化

目录 JSON JSON进阶 练习 在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: d dict(nameBob, age20, score88)可以随时修改变量,比如把name改成Bill,但是一旦程序结束,变量所…...

Redis-缓存穿透击穿雪崩

1. 穿透问题 缓存穿透问题就是查询不存在的数据。在缓存穿透中,先查缓存,缓存没有数据,就会请求到数据库上,导致数据库压力剧增。 解决方法: 给不存在的key加上空值,防止每次都会请求到数据库。布隆过滤器…...

Windows server网络安全

摘要 安全策略 IP安全策略,简单的来说就是可以通过做相应的策略来达到放行、阻止相关的端口;放行、阻止相关的IP,如何做安全策略,小编为大家详细的写了相关的步骤: 解说步骤: 阻止所有: 打…...

代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus适用场景和工作方式

在 Swift 开发中,在 Swift 开发中,代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus 主要用于 组件之间的通信,但它们的适用场景和工作方式有…...

Python从入门到精通1:FastAPI

引言 在现代 Web 开发中,API 是前后端分离架构的核心。FastAPI 凭借其高性能、简洁的语法和自动文档生成功能,成为 Python 开发者的首选框架。本文将从零开始,详细讲解 FastAPI 的核心概念、安装配置、路由设计、请求处理以及实际应用案例&a…...

使用 crontab 定时同步服务器文件到本地

https://www.dong-blog.fun/post/1987 1. 安装 sshpass sshpass 是一个可以自动输入密码的工具。如果未安装,运行以下命令安装: • 对于 Debian/Ubuntu 系统: apt update && apt install sshpass• 对于 CentOS/RHEL 系统&#xf…...

Leetcode做题记录----2

1、两数之和 思路: 1、不能使用相同元素,可以想到哈希表,,C#中可以通过字典建立当前值和下标的关系 2、显然,依次判断数组中的每个数即可 3、定义other target - num[ i ] 这个other就是我们用于在字典中进行寻找…...

批量合并 Word 文档,支持合并成一个 Word,也支持按文件夹合并

我们经常会碰到需要将多个 Word 文档批量合并成一个 Word 文档的场景,比如需要合并后打印、合并后方便整理存档等等。如果是人工的操作,会非常的麻烦。因此我们通常会借助一些批量处理脚本或者寻找批量处理的工具来帮我们实现批量合并 Word 文档的操作。…...

项目实操分享:一个基于 Flask 的音乐生成系统,能够根据用户指定的参数自动生成 MIDI 音乐并转换为音频文件

在线体验音乐创作:AI Music Creator - AI Music Creator 体验者账号密码admin/admin123 系统架构 1.1 核心组件 MusicGenerator 类 负责音乐生成的核心逻辑 包含 MIDI 生成和音频转换功能 管理音乐参数和音轨生成 FluidSynth 集成 用于 MIDI 到音频的转换 …...

神经网络为什么要用 ReLU 增加非线性?

在神经网络中使用 ReLU(Rectified Linear Unit) 作为激活函数的主要目的是引入非线性,这是神经网络能够学习复杂模式和解决非线性问题的关键。 1. 为什么需要非线性? 1.1 线性模型的局限性 如果神经网络只使用线性激活函数&…...

RK3568平台(音频篇)AD82584F功放

一.AD82584 功放芯片简介 AD82584 是 Analog Devices 公司推出的一款高性能、多通道音频功率放大器芯片。 它专为汽车音响系统、家庭影院和其他需要高质量音频放大的应用而设计。以下是关于 AD82584 的详细介绍。 Analog Devices 官方网站:https://www.analog.com AD82584…...