大数据工具之DataX

  • DataX简介
  • DataX框架设计
  • DataX3.0插件体系
  • 工具部署
  • 三种案例实操
    • stream2mysql
    • mysql2hdfs
  • 拓展

DataX简介

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。
在这里插入图片描述

DataX框架设计


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

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

DataX3.0插件体系

DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图,详情请点击:DataX数据源参考指南
在这里插入图片描述

工具部署

(1) 环境要求

(2) 工具部署

  • 方法一、直接下载DataX工具包:DataX,下载后解压至本地某个目录,进入bin目录,即可运行同步作业。
$ cd  {YOUR_DATAX_HOME}/bin
python datax.py {YOUR_JOB.json}
  • 方法二、下载DataX源码,自己编译:DataX源码

下载DataX源码:

$ git clone git@github.com:alibaba/DataX.git

通过maven打包:

$ cd  {DataX_source_code_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true

打包成功,日志显示如下:

[INFO] BUILD SUCCESS

[INFO] ————————————————————————————————-

[INFO] Total time: 08:12 min

[INFO] Finished at: 2015-12-13T16:26:48+08:00

[INFO] Final Memory: 133M/960M

[INFO] ————————————————————————————————-

三种案例实操

  • stream2mysql

从stream读取数据并打印到控制台,
第一步、创建创业的配置文件(json格式)

#stream2mysql.json
{
    "job": {
        "setting": {
            "speed": {
                "channel": 1
            }
        },
        "content": [
            {
                 "reader": {
                    "name": "streamreader",
                    "parameter": {
                        "column" : [
                            
							{
                                "value": "DataX",
                                "type": "string"
                            },
							{
                                "value": "man",
                                "type": "string"
                            }
                        ],
                        "sliceRecordCount": 100
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "root",
                        "password": "******",
                        "column": [
                            "name",
							"sex"
                        ],
                        "session": [
                        	"set session sql_mode='ANSI'"
                        ],
						 "preSql": [
                            "delete from test"
                        ],
                       
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://192.168.157.130:3306/testdb?useUnicode=true&characterEncoding=utf8",
                                "table": [
                                    "test"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

整个配置文件是一个Job配置文件,以Job为起手根元素,Job下面两个子元素配置项:setting和content,
在这里插入图片描述
 其中,setting描述任务本身的信息,content描述源(reader)和目的端(writer)的信息:
 在这里插入图片描述
第二步:启动DataX在这里插入图片描述
同步结束,显示日志如下:

在这里插入图片描述
数据库中导入成功:
在这里插入图片描述

  • mysql2hdfs

第一步、创建创业的配置文件(json格式)

{
    "job": {
        "setting": {
            "speed": {
                 "channel": 4
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "******",
                        "column": [
                            "id",
                            "name",
							"sex"
                        ],
						"where":"id>=50",
                        "splitPk": "id",
                        "connection": [
                            {
                                "table": [
                                    "test"
                                ],
                                "jdbcUrl": [
     "jdbc:mysql://192.168.157.130:3306/testdb"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "defaultFS": "hdfs://spark01:9000",
                        "fileType": "text",
                        "path": "/testdata1/textfull",
                        "fileName": "testext",
                        "column": [
                            {
                                "name": "id",
                                "type": "INT"
                            },
                       
                            {
                                "name": "name",
                                "type": "STRING"
                            },
                            
                            {
                                "name": "sex",
                                "type": "STRING"
                            }
                        ],
                        "writeMode": "append",
                        "fieldDelimiter": "\t",
						 
                    }
                }
            }
            
        ]
    }
}

HDFS中数据导入成功
在这里插入图片描述在这里插入图片描述

拓展

任务很少,情景简单的情况下,使用Linux自带的corntab即可(crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令),当然,正常的时候推荐使用调度平台,这一块我还没详细研究过,但是我知道已有完整项目代码已经放在github上,如:基于Django的FirstBlood博客地址;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值