DataX用户向导(下载安装及配置)

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQLSQL ServerOraclePostgreSQLHDFS
HiveHBaseOTSODPS 等各种异构数据源之间高效的数据同步功能。

一、核心特性

  • 插件化架构DataX 本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的 Reader 插件,以及向目标端写入数据的
    Writer 插件
  • 高度可扩展:理论上 DataX 框架可以支持任意数据源类型的数据同步工作
  • 生态互通DataX 插件体系作为一套生态系统,每接入一套新数据源即可实现和现有数据源的互通

二、系统要求

三、快速开始

3.1 部署DataX

方法一:直接下载DataX工具包

DataX releases仓库

DataX目前最新下载地址

  1. 下载并解压DataX

# 切换到你准备安装的目录
cd /usr/local

# 下载DataX
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz

# 解压DataX
tar -zxvf datax.tar.gz

  1. 进入 DataX的 bin 目录,并自检
cd datax/bin

# 运行DataX自检脚本
python datax.py ../job/job.json

  1. 查看输出日志

查看输出日志,一切正常就表示成功了。

方法二:下载DataX源码并自行编译

一般在需要修改DataX源码的场景下才使用该方式。

DataX源码

  1. 下载 DataX 源码:
git clone git@github.com:alibaba/DataX.git
  1. 通过 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] -----------------------------------------------------------------

打包成功后的 DataX 包位于 {DataX_source_code_home}/target/datax/datax/,结构如下:

cd {DataX_source_code_home}
ls ./target/datax/datax/
bin		conf		job		lib		log		log_perf	plugin		script		tmp

3.2 配置示例:从stream读取数据并打印到控制台

第一步:创建作业配置文件(json格式)

可以通过命令查看配置模板:

cd {YOUR_DATAX_HOME}/bin
python datax.py -r streamreader -w streamwriter

命令输出示例:

DataX (UNKNOWN_DATAX_VERSION), From Alibaba !
Copyright (C) 2010-2015, Alibaba Group. All Rights Reserved.
Please refer to the streamreader document:
    https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md 

Please refer to the streamwriter document:
     https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.md 
 
Please save the following configuration as a json file and  use
     python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json 
to run the job.

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "streamreader", 
                    "parameter": {
                        "column": [], 
                        "sliceRecordCount": ""
                    }
                }, 
                "writer": {
                    "name": "streamwriter", 
                    "parameter": {
                        "encoding": "", 
                        "print": true
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}

根据模板配置的 stream2stream.json 文件如下:

{
  "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": 5
      }
    }
  }
}

第二步:启动DataX

python datax.py ./stream2stream.json 

同步结束,显示日志如下:

...
2015-12-17 11:20:25.263 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2015-12-17 11:20:15
任务结束时刻                    : 2015-12-17 11:20:25
任务总计耗时                    :                 10s
任务平均流量                    :              205B/s
记录写入速度                    :              5rec/s
读出记录总数                    :                  50
读写失败总数                    :                   0

四、常见问题

运行datax脚本时提示权限被拒绝

-bash: ./datax.py: Permission denied

解决方案:

## 先确认文件当前的权限设置
## 输出结果中,若文件名前的权限位(如 -rw-r--r--)没有 x(执行权限),则说明缺少可执行权限。
ls -l ./datax.py 

## 使用 chmod 命令为 datax.py 赋予执行权限:
chmod +x ./datax.py