DataX学习详解

参考视频

02_DataX_概述_哔哩哔哩_bilibili

参考文档

大数据技术之DataX-阿里云开发者社区

介绍

        DataX 是阿里巴巴开源的一个 异构数据源 离线 同步工具

        致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP,MongDB等各种异构数据源之间稳定高效的数据同步功能(简而言之:不同数据源的离线同步工具)

适用人群

  • 从事数据采集工作
  • 数仓从0-1的建设阶段(架构选型)

前置基础

        Java基础,Linux命令、数据库的了解

DataX的设计

        为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步

        设计理念:插件式

DataX支持的数据库(GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。)

  1. 类型数据源Reader(读)Writer(写)文档
    RDBMS 关系型数据库MySQL读 、写
    Oracle读 、写
    OceanBase读 、写
    SQLServer读 、写
    PostgreSQL读 、写
    DRDS读 、写
    Kingbase读 、写
    通用RDBMS(支持所有关系型数据库)读 、写
    阿里云数仓数据存储ODPS读 、写
    ADB
    ADS
    OSS读 、写
    OCS
    Hologres
    AnalyticDB For PostgreSQL
    阿里云中间件datahub读 、写
    SLS读 、写
    图数据库阿里云 GDB读 、写
    Neo4j
    NoSQL数据存储OTS读 、写
    Hbase0.94读 、写
    Hbase1.1读 、写
    Phoenix4.x读 、写
    Phoenix5.x读 、写
    MongoDB读 、写
    Cassandra读 、写
    数仓数据存储StarRocks读 、写
    ApacheDoris
    ClickHouse读 、写
    Databend
    Hive读 、写
    kudu
    selectdb
    无结构化数据存储TxtFile读 、写
    FTP读 、写
    HDFS读 、写
    Elasticsearch
    时间序列数据库OpenTSDB
    TSDB读 、写
    TDengine读 、写

DataX架构设计

DataX在设计之初就将同步理念抽象成框架+插件的形式.框架负责内部的序列化传输,缓冲,并发,转换等而核心技术问题,数据的采集(Reader)和落地(Writer)完全交给插件执行。

  • Reader 数据采集模块,负责采集数据源的数据,将数据发送至FrameWork。
  • Writer 数据写入模块,负责不断的向FrameWork取数据,并将数据写入目的端。
  • FrameWork 用于连接reader和write,作为两者的数据传输通道,处理缓冲,流控,并发,转换等核心技术问题。

运行原理

  • Job 完成单个数据同步的作业称之为job。DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。负责数据清理,子任务划分,TaskGroup监控管理。
  • Task 由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
  • Schedule 将Task组成TaskGroup,默认单个任务组的并发数量为5。
  • TaskGroup 负责启动Task。

详细解说:DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行。Task便是DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5。每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务.

DataX调度流程
举例来说,用户提交了一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps里面。 DataX的调度决策思路是:

  • 1 DataXJob根据分库分表切分成了100个Task。
  • 2 根据20个并发,且默认单个任务组的并发数量为5,DataX计算共需要分配4个TaskGroup。
  • 3 这里4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。

与Sqoop的对比

参考文档:

sqoop or datax_sqoop和datax-CSDN博客

功能dataxsqoop
运行模式单进程多线程,但配置的好可以打满贷款,也不慢mr
Mysql读写单机压力大,但读写粒度容易控制mr模式重,写出错处理麻烦,看日志麻烦
hive读写单机压力大很好
文件格式orc支持orc不支持,可添加
分布式不支持,可以通过调度系统规避支持
运行信息
 
运行时间,数据量,消耗资源,脏数据稽核不支持
数据库数据来源比较多数据来源比较纯粹单一
流量控制支持需要定制
社区开源不久,不太活跃活跃

读取mysql写入到hdfs

# 查看mysql到hdfs的json文件怎么写
bin/datax.py -r mysqlreader -r hdfswriter

多线程如何保证全部成功

        会先创建一个临时路径,存放到临时路径下,如果有线程失败则全部失败,删除所有数据;如果全部成功,则最后合并,移到临时路径外,删除临时路径

大数据常用组件官网: 大数据常用组件官网地址_datax官网-CSDN博客

1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[python][whl]PyOpenGL轮子文件whl格式所有版本含python3.12版本下载地址汇总

以下PyOpenGL都是windows x64系统使用pyopengl注意对应版本下载,文件名命名规则为,以PyOpenGL-3.1.6-cp312-cp312-win-amd64.whl为例子 PyOpenGL:python模块名称 3.1.6:pyopengl版本号 cp312:表示支持python3.12版本不支持其他…

五、深入学习TensorRT,Developer Guide篇(四)

上一篇文章我们介绍了C的API,这篇文章我们主要针对的是Python的API,起始C和Python在整体流程上面基本一致,但是由于Python天然的简洁性和易用性,Python的API相对来讲还是比较简单的,我们一起来看一下吧。 文章目录 4.…

windows下快速安装nginx 并配置开机自启动

1、下载地址:http://nginx.org/en/download.html 2、启动nginx 注意⚠️ 不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程。 在nginx.exe目录,打开命令行工具&#xf…

【springblade】springblade(bladeX) 数据权限失效原因分析

文章目录 数据权限接口权限 前言:最近博主在按照bladeX官方文档 配置数据权限 结果发现失效了,网上搜了一下没找到合适的答案,本着求人不如求己的精神,自己调试了一下发现了问题所在,也大致看了一下bladeX的权限逻辑。…

代码随想录算法训练营29期Day56|LeetCode 300,674,718

文档讲解:最长递增子序列 最长连续递增序列 最长重复子数组 300.最长递增子序列 题目链接:https://leetcode.cn/problems/longest-increasing-subsequence/description/ 思路: 设dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长…

unity——shader入门知识点 学习笔记【个人复习向/侵删/有不足之处欢迎斧正】

零、不同图形接口程序对Shader开发的影响: 1.渲染管线(流水线)和图形接口程序的关系:图形接口程序(OpenGL、 DX等)提供了对渲染管线(流水线)的控制和管理功能,它是开发者和硬件打交道的中间层 2. Shader和图形接口程序的关系&#xf…

计算机毕业设计 基于SpringBoot的宠物商城网站系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

LeetCode206反转链表

LeetCode206,直接看下面链接的动画演示部分就行了,就能快速理解pre和cur的作用 代码随想录:反转链表 这个是另外的在B站的视频讲解链接 【帮你拿下反转链表 | LeetCode:206.反转链表 | 双指针法 | 递归法】 https://www.bilibili.com/video/BV1nB4y1i7eL/?share_so…

Linux理解

VMware安装Linux安装 目录 VMware安装Linux安装 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2.1 主流操作系统 2.2 Linux系统版本 VMware安装Linux安装 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统。 1.2 为什么要学Linux 1). 企业用人…

Python3获取办公室IP并更新至腾讯云安全组

需求来源: 由于云服务器的安全组限制了只能在公司IP下远程连接,每次更新安全组时只能通过手动更新,办公室IP是动态IP,每隔三天变一次IP,时间久了就觉得麻烦,所以在查阅了腾讯云文档后发现有安全组的SDK&…

【Git】:初识git

初识git 一.创建git仓库二.管理文件三.认识.git内部结构 一.创建git仓库 1.安装git 使用yum install git -y即可安装git。 2.创建仓库 首先创建一个git目录。 3.初始化仓库 这里面有很多内容,后面会将,主要是用来进行追踪的。 4.配置name和email 当然也…

Node.js的debug模块源码分析及在harmonyOS平台移植

Debug库 是一个小巧但功能强大的 JavaScript 调试工具库,可以帮助开发人员更轻松地进行调试,以便更快地发现和修复问题。它的主要特点是可以轻松地添加调试日志语句,同时在不需要调试时可以轻松地禁用它们,以避免在生产环境中对性…

室内外一体化定位系统

随着科技的不断发展,定位系统已经成为了人们生活中不可或缺的一部分。无论是在户外还是室内,定位服务都给人们带来了极大的便利。然而,传统的定位系统主要集中在室外环境,对于室内环境的定位还存在一定的困难。因此,室…

深度优先搜索-DFS

介绍 英文全称:Deep First Search 枚举所有完整路径来遍历所有情况的搜索方法 return不同情况的介绍 问题描述 在n件物品中,输入其容量与价值。给定容量,求物品的价值之和最大值。 思路 用DFS思想来看,每件物品有选择与不选择…

Spring Boot应用集成Actuator端点自定义Filter解决未授权访问的漏洞

一、前言 我们知道想要实时监控我们的应用程序的运行状态,比如实时显示一些指标数据,观察每时每刻访问的流量,或者是我们数据库的访问状态等等,需要使用到Actuator组件,但是Actuator有一个访问未授权问题,…

Postgresql源码(123)事务提交时三段资源释放分析ResourceOwnerRelease

0 总结 三段释放原因:因为如果先释放锁,没有释放一些共享资源(比如pin住的buffer),别人拿到锁后发现我们仍然持有一些资源,就会有问题。所以三阶段释放主要是以锁为分界线,先释放锁保护的资源&…

智慧未来:人工智能驱动下的创新与发展

智慧未来:人工智能驱动下的创新与发展 随着人工智能技术的迅猛发展和广泛应用,我们正迎来一个智慧未来的时代。人工智能作为驱动力推动着创新与发展,改变着我们的生活、工作和社会。让我们一起探讨人工智能驱动下的创新与发展所带来的影响和…

酷开科技丨新年新玩法!酷开系统壁纸模式给客厅“换”新

甲辰龙年即将到来,新年新家新气象,快到酷开系统壁纸模式中挑选一款喜欢的壁纸,为新的一年增添一份美好和喜悦吧! 酷开科技将更多的电视新玩法带给你,让你的电视成为家庭中的焦点!酷开系统壁纸模式&#xf…

LabVIEW高效核磁测井仪器多线程优化

LabVIEW高效核磁测井仪器多线程优化 为提高核磁测井仪器的测试效率与性能,开发了基于LabVIEW的多线程优化模型。该研究针对传统的核磁测井仪器软件,在多任务调度测试和并行技术需求上存在的效率不高和资源利用率低的问题,提出了一个多线程优…

智能家居现状分析及未来展望

当前现状 家居行业经过多年发展,顺利完成了从无到有的进化历程,现正在智能化的道路上奋力驰骋,虽发展迅速但也面临一些问题。主要有: APP操作复杂、UI不统一 传统硬件厂家的优势在设备制造领域,让设备“上网”不是其…