0
点赞
收藏
分享

微信扫一扫

第二章 DataX专题之基础概述

八怪不姓丑 2022-01-20 阅读 33

1、DataX概述

(1)星型数据链路

  • DataX为传输通道
github地址:https://github.com/alibaba/DataX

在这里插入图片描述

(2)框架设计

在这里插入图片描述

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

(3)运行原理

在这里插入图片描述

  • Job:单个作业的管理节点,负责数据清理、子任务划分、TaskGroup监控管理。
  • Task:由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
  • Schedule:将Task组成TaskGroup,单个TaskGroup的并发数量为5。
  • TaskGroup:负责启动Task。

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

1)DataXJob 根据分库分表切分成了100个Task。
2)根据 20 个并发,DataX计算共需要分配4个 TaskGroup。
3)4 个 TaskGroup 平分切分好的100个Task,每一个 TaskGroup 负责以5个并发共计运
行 25个Task。

2、DataX安装

(1)前置要求

  • linux
  • JDK1.8
  • Python(2.6,2.7版本)

(2)解压到到/opt/module

 tar -zxvf datax.tar.gz -C /opt/module/

在这里插入图片描述

(3)运行自检脚本

cd /opt/module/datax/bin

python datax.py /opt/module/datax/job/job.json

在这里插入图片描述

3、DataX&Sqoop对比

功能DataXSqoop
运行模式单进程多线程(java单机版)MR(分布式计算作业)
Mysql读写单机压力大,读写粒度易控制MR模式重,写出错处理麻烦
Hive读写单机压力大(最大缺陷)比较好
文件格式orc支持orc不支持,可通过hcatalog添加
分布式不支持,可通过调度系统规避(装多个节点,互不干扰,通过调度系统实现负载均衡)支持
流控有流控功能需要定制
统计信息有一些统计,上报需要定制没有,分布式收集数据不方便
数据校验在core部分有校验功能没有,分布式收集数据不方便
监控需要定制需要定制
社区封版,改无可改
  • 根据业务场景选型

(1)DataX:涉及到多样的数据源互相导入导出,使用DataX

(2)Sqoop:数据源比较少,目的地都在hdfs上

4、DataX参数说明

4.1、mysqlreader参数解读

(1)name:reader名称

(2)column:需要同步的列名集合,使用JSON数组描述自带信息

(3)jdbsUrl:对数据库的JDBC连接信息,使用JSON数组描述,支持多个链接地址

(4)table:需要同步的表,支持多个

(5)querySql自定义SQL,配置它后,mysqlreader直接忽略table、column、where

(6)username:数据库用户名;

(7)passward:数据库用户名对应密码

(8)where:筛选条件

(9)splitPK:数据分片字段,一般是主键,仅仅支持整形(一般使用代理主键)

4.2、hdfswriter

(1)name:writer名字

(2)column:写入数据的字段,其中name指定字段名,type指定类型

(3)compress:hdfs文件压缩类型,默认不填写意味着没有压缩

(4)defaultFS:hdfs文件类型namenode节点地址,格式hdfs://ip:端口

(5)fieldDelimiter:字段分隔符

(6)filename:写入文件名

(7)fileType:文件类型,目前只支持用用户配置“text”或“orc”

(8)path:存储到Hadoop hdfs文件系统的路径信息

(9)write:hdfswriter写入前数据清理处理模式

  • append:追加,写入前不做任何处理,DataX hdfswriter直接使用filename写入,并保证文件名不冲突
  • nonConflit:目录下有filename前缀的文件,直接报错
举报

相关推荐

0 条评论