• DataX 自学使用



    前言

    数据采集在数仓中是指将数据从源数据端采集到目标端的过程。涉及到数据库到数据库的数据同步问题,DataX是其中的一种工具,DataX是一个异构数据源离线同步工具。


    第1章、概述

    1.1 DataX是什么?

    • DataX是阿里巴巴开源的一个异构数据源离线同步工具。
    • 开源地址:https://github.com/alibaba/DataX

    1.2 DataX的设计

    为解决异构数据源同步问题,DataX将复杂的网状同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。

    在这里插入图片描述

    1.3 支持的数据源

    DataX目前已经有较全面的插件体系,主流的RDBMS数据库,NOSQL,大数据计算系统都已经接入。
    在这里插入图片描述

    1.4 框架设计

    在这里插入图片描述

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

    1.5 运行原理

    在这里插入图片描述

    • 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章 快速入门

    2.1 官方地址

    下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
    源码地址:https://github.com/alibaba/DataX

    2.3 安装

    将下载好的 datax.tar.gz 上传到 hadoop102 的/opt/software
    2)解压 datax.tar.gz 到/opt/module

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

    3)运行自检脚本

    cd /opt/module/datax/bin/
    python datax.py /opt/module/datax/job/job.json
    
    • 1
    • 2

    第3章 使用案例

    3.1 从stream流读取数据并打印到控制台

    1. 查看配置模板
    cd /opt/module/datax/bin
    python datax.py -r streamreader -w streamwriter
    
    • 1
    • 2
    1. 编辑模板
    vim stream2stream.json
    
    • 1

    内容

    {
     "job": {
     "content": [
     {
     "reader": {
     "name": "streamreader",
     "parameter": {
     "sliceRecordCount": 10,
     "column": [
     {
     "type": "long",
     "value": "10"
     },
     {
     "type": "string",
     "value": "hello,DataX"
     }
     ]
     }
     },
     "writer": {
     "name": "streamwriter",
     "parameter": {
     "encoding": "UTF-8",
     "print": true
     }
     }
     }
     ],
     "setting": {
     "speed": {
     "channel": 1
     }
     }
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    3)运行

    /opt/module/datax/bin/datax.py /opt/module/datax/job/stream2stream.json
    
    • 1

    3.2 读取Mysql中的数据存放到Hdfs

    3.2.1 参数解析

    • mysqlreader 参数解析:
      在这里插入图片描述
    • hdfswriter 参数解析:
      在这里插入图片描述

    3.2.2 准备数据

    创建student表并插入数据

    create database datax;
    use database;
    create table student(id int,name varchar(20));
     insert into student values(1001,'zhangsan'),(1002,'lisi'),(1003,'wangwu');
    
    • 1
    • 2
    • 3
    • 4

    3.2.3 编写配置文件

    vim /opt/module/datax/job/mysql2hdfs.json
    
    • 1
    {
     "job": {
     "content": [
     {
     "reader": {
     "name": "mysqlreader", 
     "parameter": {
     "column": [
     "id",
     "name"
     ], 
     "connection": [
    
     {
     "jdbcUrl": [
     "jdbc:mysql://hadoop102:3306/datax"
     ], 
     "table": [
     "student"
     ]
     }
     ], 
     "username": "root", 
     "password": "000000"
     }
     }, 
     "writer": {
     "name": "hdfswriter", 
     "parameter": {
     "column": [
     {
     "name": "id",
    "type": "int"
     },
     {
     "name": "name",
    "type": "string"
     }
     ], 
     "defaultFS": "hdfs://hadoop102:9000", 
     "fieldDelimiter": "\t", 
     "fileName": "student.txt", 
     "fileType": "text", 
     "path": "/", 
     "writeMode": "append"
     }
     }
     }
     ], 
     "setting": {
     "speed": {
     
     "channel": "1"
     }
     }
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    总结

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

    本文学习参考尚硅谷Datax课程

  • 相关阅读:
    10.20作业
    24.Vue条件渲染
    Flink源码阅读笔记——StreamGraph、JobGraph、ExecutionGraph
    P1347 排序(拓扑 + spfa判断环 or 拓扑[内判断环])
    【进阶C语言】排序函数(qsort)与模拟实现(回调函数的实例)
    开发工程师必备————【Day21】前端开发之jQuery
    洞悉微服务构建流程,以实战角度出发,详解微服务架构
    正则表达式
    springboot使用WebSocket
    设计模式之组合模式
  • 原文地址:https://blog.csdn.net/ZQHCSD/article/details/126049355