Skip to content
Trafalgar edited this page Sep 8, 2016 · 29 revisions

Quick Start

System Requirements

一、工具下载以及部署

  • 方法一、直接下载DataX工具包(如果仅是使用,推荐直接下载):DataX下载地址

    下载后解压至本地某个目录,修改权限为755,进入bin目录,即可运行样例同步作业:

    $ tar zxvf datax.tar.gz
    $ sudo chmod -R 755 {YOUR_DATAX_HOME}
    $ cd  {YOUR_DATAX_HOME}/bin
    $ python datax.py ../job/job.json
  • 方法二、下载DataX源码,自己编译:DataX源码编译方法

二、配置示例:从MySQL读取数据 写入ODPS

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

    可以通过命令查看配置模板: python datax.py -r {YOUR_READER} -w {YOUR_WRITER}

    $ cd  {YOUR_DATAX_HOME}/bin
    $  python datax.py -r mysqlreader -w odpswriter
        DataX (DATAX-OPENSOURCE-1.0), From Alibaba !
    Copyright (C) 2010-2015, Alibaba Group. All Rights Reserved.
    
    
    Please refer to the mysqlreader document:
         https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md
    
    Please refer to the odpswriter document:
         https://github.com/alibaba/DataX/blob/master/odpswriter/doc/odpswriter.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": "mysqlreader",
                        "parameter": {
                            "column": [],
                            "connection": [
                                {
                                    "jdbcUrl": [],
                                    "table": []
                                }
                            ],
                            "password": "",
                            "username": "",
                            "where": ""
                        }
                    },
                    "writer": {
                        "name": "odpswriter",
                        "parameter": {
                            "accessId": "",
                            "accessKey": "",
                            "column": [],
                            "odpsServer": "",
                            "partition": "",
                            "project": "",
                            "table": "",
                            "truncate": true
                        }
                    }
                }
            ],
            "setting": {
                "speed": {
                    "channel": ""
                }
            }
        }
    }   
  • 第二步、根据配置文件模板填写相关选项

    命令打印里面包含对应reader、writer的文档地址,以及配置json样例,根据json样例填空完成配置即可。根据模板配置json文件(mysql2odps.json)如下:

    {
        "job": {
            "content": [
                {
                    "reader": {
                        "name": "mysqlreader",
                        "parameter": {
                            "username": "****",
                            "password": "****",
                            "column": ["id","age","name"],
                            "connection": [
                                {
                                    "table": [
                                        "test_table"
                                    ],
                                    "jdbcUrl": [
                                        "jdbc:mysql://127.0.0.1:3306/test"
                                    ]
                                }
                            ]
                        }
                    },
                    "writer": {
                        "name": "odpswriter",
                        "parameter": {
                            "accessId": "****",
                            "accessKey": "****",
                            "column": ["id","age","name"],
                            "odpsServer": "http://service.odps.aliyun.com/api",
                            "partition": "pt='datax_test'",
                            "project": "datax_opensource",
                            "table": "datax_opensource_test",
                            "truncate": true
                        }
                    }
                }
            ],
            "setting": {
                "speed": {
                    "channel": 1
                }
            }
        }
    }
  • 第三步:启动DataX

    $ cd {YOUR_DATAX_DIR_BIN}
    $ python datax.py ./mysql2odps.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

    如果您在试用Windows发现datax打印乱码,请参考:Windows乱码问题解决

  • 更多 :其它全局参数配置(可选)

(1)、Job基本配置

Job基本配置定义了一个Job基础的、框架级别的配置信息,包括:

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "",
          "parameter": {}
        },
        "writer": {
          "name": "",
          "parameter": {}
        }
      }
    ],
    "setting": {
      "speed": {},
      "errorLimit": {}
    }
  }
}

(2) Job Setting配置

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "",
          "parameter": {}
        },
        "writer": {
          "name": "",
          "parameter": {}
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1,
        "byte": 104857600
      },
      "errorLimit": {
        "record": 10,
        "percentage": 0.05
      }
    }
  }
}
  • job.setting.speed(流量控制)

Job支持用户对速度的自定义控制,channel的值可以控制同步时的并发数,byte的值可以控制同步时的速度

  • job.setting.errorLimit(脏数据控制)

Job支持用户对于脏数据的自定义监控和告警,包括对脏数据最大记录数阈值(record值)或者脏数据占比阈值(percentage值),当Job传输过程出现的脏数据大于用户指定的数量/百分比,DataX Job报错退出。

###三、配置定时任务(Linux环境):从MySQL读取数据 写入ODPS,通过crontab命令实现

  • 前置条件:安装crond服务,并已启动

    #查看crond服务是否启动,出现以下日志表示已启动
    $/sbin/service crond status
     crond (pid  30742) is running...
  • 第一步:创建作业的配置文件(json格式) 参考上节内容。这里假设已配置好MySQL到ODPS的配置文件mysql2odps.json

  • 第二步:列出列出crontab文件,命令: crontab -l
    (1)若出现以下日志,表示当前用户没有定时任务,用户需要新建crontab文件,并提交crontab文件,参考第三步。

    $crontab -l
     no crontab for xxx

(2)若出现以下日志,表示当前用户已经有正在运行的定时任务,用户只需用命令crontab -e 来编辑crontab文件,参考第四步。 shell $ crontab -l 0,10,20,35,44,50 * * * * python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S` 2>&1

  • 第三步:若当前用户没有定时任务(之前从未创建过crontab任务)
    (1)创建一个新的crontab文件,如取名crondatax
    示例1:每天13点5分进行同步作业,并把运行日志输出到目录/home/hanfa.shf/下log.运行时间 文件中,如定时运行是在2016-3-26 13:10:13运行的,产生的日志文件名为:log.20160326131023
    $ vim crondatax
    #输入以下内容
    5  13 * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json  >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`  2>&1
    #/home/admin/datax3/bin/datax.py 表示你安装的DataX datax.py所在目录(请替换为您真实的绝对路径目录);
    #/home/admin/mysql2odps.json  表示作业的配置文件目录(请替换为您真实的绝对路径目录);
    #/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S` 表示日志输出位置,并以log.当前时间 命名(请替换为您真实的绝对路径目录)

(2)提交你刚刚创建的crontab文件 shell $ crontab crondatax #crondatax 你创建的crontab文件名 (3)重启crontab服务 shell $ sudo /etc/init.d/crond restart Stopping crond: [ OK ] Starting crond: [ OK ] (4)在13点5分过后,在日志目录会看到对应的日文件 shell $ ls -al /home/hanfa.shf/ -rw-r--r-- 1 hanfa.shf users 12062 Mar 26 13:05 log.20160326130501

  • 第四步:若当前用户已有定时任务(想继续增加定时任务)
    (1)编辑已有crontab文件
    示例2:每10分钟运行一次同步任务,并把运行日志输出到目录/home/hanfa.shf/下log.运行时间 文件中,如定时运行是在2016-3-26 13:10:13运行的,产生的日志文件名为:log.20160326131023

    $ crontab -e
    #会进入已有crontab文件编辑界面,继续增加定时任务即可,本示例增加以下内容,并保存
    0,10,20,30,40,50 * * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json  >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`  2>&1

(2)重启crontab服务

```shell

$ sudo /etc/init.d/crond restart Stopping crond: [ OK ] Starting crond: [ OK ] ``` (3)用crontab -l 命令检查是否添加成功

 $ crontab -l
5  13 * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json  >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`  2>&1
0,10,20,30,40,50 * * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json  >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`  2>&1

接下来请根据您所需要的插件完成配置,并完成同步。

所有数据源配置指南,请参考:DataX数据源指南

附录:

安装crond服务
yum install crontabs
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
加入开机自动启动:
/sbin/chkconfig --level 35 crond on  

crontab命令格式说明:

image