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

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

相关文章:

  • 【笔记】【开发方案】APN 配置参数 bitmask 数据转换(Android KaiOS)
  • 数字热潮:iGaming 能否推动加密货币的普及?
  • 【LeetCode-337】打家劫舍III(动态规划)
  • vivado FSM Components
  • 云HIS系统源码,基于云计算技术的B/S架构的云HIS系统,二甲医院信息管理系统
  • 【Ubuntu】Anaconda的安装和使用
  • etcd: mac 环境部署
  • Windows+Yolo3-darknet训练自己数据集并测试
  • 【0265】postmaster守护进程入口
  • 学习大数据所需的java基础(5)
  • 【PHP设计模式03】抽象工厂模式
  • 面试经典150题——快乐数
  • 大数据-数据可视化-环境部署vue+echarts+显示案例
  • uniapp:APP端webview拦截H5页面跳转,华为市场发布需要限制webview的H5页面跳转
  • 【Elasticsearch专栏 12】深入探索:Elasticsearch使用索引生命周期管理(ILM)自动化删除旧数据
  • 【面试系列】之二:关于js原型
  • C++类中的特殊成员函数
  • Computed property XXX was assigned to but it has no setter
  • Flannel解读
  • node入门
  • Redash本地开发环境搭建
  • select2 取值 遍历 设置默认值
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SQLServer之索引简介
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Unix命令
  • Vue.js源码(2):初探List Rendering
  • 程序员最讨厌的9句话,你可有补充?
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于axios的vue插件,让http请求更简单
  • 使用权重正则化较少模型过拟合
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 新书推荐|Windows黑客编程技术详解
  • 你对linux中grep命令知道多少?
  • 移动端高清、多屏适配方案
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #include
  • #QT(智能家居界面-界面切换)
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (5)STL算法之复制
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (转)c++ std::pair 与 std::make
  • (转)菜鸟学数据库(三)——存储过程
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .Family_物联网
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET开发者必备的11款免费工具
  • .Net面试题4
  • .NET项目中存在多个web.config文件时的加载顺序