文章目录

  • 1. DataX简介
    • 1.1 DataX概述
    • 1.2 DataX支持的数据源
  • 2. DataX架构原理
    • 2.1 DataX设计理念
    • 2.2 DataX框架设计
    • 2.3 DataX运行流程
    • 2.4 DataX调度决策思路
    • 2.5 DataX与Sqoop对比
  • 3. DataX部署
    • 3.1 下载DataX安装包并上传到hadoop102的/opt/software
    • 3.2 解压datax.tar.gz到/opt/module
    • 3.3 自检,执行如下命令

1. DataX简介

1.1 DataX概述

  DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
源码地址:https://github.com/alibaba/DataX

1.2 DataX支持的数据源

  DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图。

类型 数据源 Reader(读) Writer(写)
RDBMS关系型数据库 MySQL
Oracle
OceanBase
SQLServer
PostgreSQL
DRDS
通用RDBMS
阿里云数仓数据存储 ODPS
ADS
OSS
OCS
NoSQL数据存储 OTS
Hbase0.94
Hbase1.1
Phoenix4.x
Phoenix5.x
MongoDB
Hive
Cassandra
无结构化数据存储 TxtFile
FTP
HDFS
Elasticsearch
时间序列数据库 OpenTSDB
TSDB

2. DataX架构原理

2.1 DataX设计理念

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

2.2 DataX框架设计

  DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

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

2.3 DataX运行流程

  下面用一个DataX作业生命周期的时序图说明DataX的运行流程、核心概念以及每个概念之间的关系。
Job:单个数据同步的作业,称为一个Job,一个Job启动一个进程。
Task:根据不同数据源的切分策略,一个Job会切分为多个Task,Task是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
TaskGroup: Scheduler调度模块会对Task进行分组,每个Task组称为一个Task Group。每个TaskGroup负责以一定的并发度运行其所分得的Task,单个Task Group的并发度为5。
Reader→Channel→Writer:每个Task启动后,都会固定启动Reader→Channel→Writer的线程来完成同步工作。

2.4 DataX调度决策思路

举例来说,用户提交了一个DataX作业,并且配置了总的并发度为20,目的是对一个有100张分表的mysql数据源进行同步。DataX的调度决策思路是:
1)DataX Job根据分库分表切分策略,将同步工作分成100个Task。
2)根据配置的总的并发度20,以及每个Task Group的并发度5,DataX计算共需要分配4个TaskGroup。
3)4个TaskGroup平分100个Task,每一个TaskGroup负责运行25个Task。

2.5 DataX与Sqoop对比

功能 DataX Sqoop
运行模式 单进程多线程 MR
分布式 不支持,可以通过调度系统规避 支持
流控 有流控功能 需要定制
统计信息 已有一些统计,上报需定制 没有,分布式的数据收集不方便
数据校验 在core部分有校验功能 没有,分布式的数据收集不方便
监控 需要定制 需要定制

3. DataX部署

3.1 下载DataX安装包并上传到hadoop102的/opt/software

下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

3.2 解压datax.tar.gz到/opt/module

[summer@hadoop102 software]$ tar -zxvf datax.tar.gz -C /opt/module/

3.3 自检,执行如下命令

[summer@hadoop102 ~]$ python /opt/module/datax/bin/datax.py /opt/module/datax/job/job.json

大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署相关推荐

  1. 尚硅谷大数据项目之电商数仓(4即席查询数据仓库)

    尚硅谷大数据项目之电商数仓(即席查询) (作者:尚硅谷大数据研发部) 版本:V4.0 第1章 Presto 1.1 Presto简介 1.1.1 Presto概念 1.1.2 Presto架构 1.1 ...

  2. 电商数仓描述_笔记-尚硅谷大数据项目数据仓库-电商数仓V1.2新版

    架构 项目框架 数仓架构 存储压缩 Snappy与LZO LZO安装: 读取LZO文件时,需要先创建索引,才可以进行切片. 框架版本选型Apache:运维麻烦,需要自己调研兼容性. CDH:国内使用最 ...

  3. 31 大数据项目之电商数仓(用户行为数据采集)

    文章目录 第1章 大数据项目之电商数仓(用户行为数据采集) 第2章 项目需求 2.1 项目需求分析 2.2 项目框架 2.2.1 技术选型 2.2.2 系统架构图设计 2.2.3 系统数据流程设计 2 ...

  4. 大数据项目之电商数仓、业务数据介绍、电商系统表结构

    文章目录 6. 业务数据介绍 6.1 电商系统表结构 6.1.1 活动信息表(activity_info) 6.1.2 活动规则表(activity_rule) 6.1.3 活动商品关联表(activ ...

  5. 大数据项目之电商数仓离线计算

    本次项目是基于企业大数据的电商经典案例项目(大数据日志以及网站数据分析),业务分析.技术选型.架构设计.集群规划.安装部署.整合继承与开发和web可视化交互设计. 1.系统数据流程设计 我这里主要分享 ...

  6. 大数据项目之电商数仓(业务数据仓库)

    第1章 电商业务与数据结构简介 1.1 电商业务流程 1.2 电商表结构 电商业务流程 1.2.1 电商常识(SKU.SPU) SKU=Stock Keeping Unit(库存量单位).即库存进出计 ...

  7. 大数据项目之电商数仓(3电商数据仓库系统)V6.1.3

    第1章 数仓分层1.1 为什么要分层 1.2 数据集市与数据仓库概念 1.3 数仓命名规范1.3.1 表命名ODS层命名为ods_表名DWD层命名为dwd_dim/fact_表名DWS层命名为d ...

  8. 大数据项目之电商数仓(用户行为数据采集)

    第1章 数据仓库概念 第2章 项目需求 2.1 项目需求分析 2.2 项目框架 2.2.1 技术选型 2.2.2 系统架构图设计 2.2.3 系统数据流程设计 2.2.4 框架版本选型 产品 版本 H ...

  9. 大数据项目之电商数仓、数据仓库概念、项目需求及架构设计

    文章目录 1.数据仓库概念 2. 项目需求及架构设计 2.1 项目需求分析 2.1.1 采集平台 2.1.2 离线需求 2.1.3 实时需求 2.1.4 思考题 2.2 项目框架 2.2.1 技术选型 ...

最新文章

  1. Java Timer 定时器的使用
  2. SpringBoot集成websocket(java注解方式)
  3. Nature:初步探索限制饮食如何影响肿瘤生长
  4. 有限算法下的技术实现路线
  5. CVPR 2018 《High-speed Tracking with Multi-kernel Correlation Filters》论文笔记
  6. 数据包接收系列 — IP协议处理流程(一)
  7. SAP Spartacus的全局配置
  8. Springboot环境下mybatis配置多数据源配置
  9. java面板中添加面板_java – 在面板中添加一个复杂的图像,在一个定制的用户界面中使用按钮...
  10. python中执行shell脚本之subprocess模块_如何使用Python中的subprocess模块检查shell脚本的状态?...
  11. 大三寒假--算法复习
  12. eclipseini设置使用的jdk_设置 Maven 对应的JDK 版本
  13. 在页面加载后执行任务
  14. 计算机连接小米usb驱动,win10系统安装小米usb驱动的详细步骤
  15. Python编写斗地主游戏(单机版)
  16. QT中的QLineEdit设置setEchoMode
  17. “Outlook 中的搜索结果不正确,因为缺少MapiPH.dll” 的解决方法
  18. Python 爬取QQ飞车手游赛道 or 宠物 图片
  19. 申请Google AdSense联盟(还没有通过)
  20. 【生活问题】买房子,采光计算,还有一些生活教育感悟

热门文章

  1. 卡普雷卡与西西弗斯.C
  2. 【openMP并行计算】计算π
  3. 什么是SQL注入式攻击,如何去防范SQL注入式攻击
  4. 如何防范SQL注入式攻击?
  5. RK3568 VS RK3399
  6. RK3588参数 rk3288处理器属于什么档次
  7. Linux 驱动简介
  8. opencv 图像填充
  9. 表单input标签type属性详解
  10. 微信小程序——获取openid