分布式数据同步工具Datax的部署与使用——datax部署

一、环境准备

  • JDK (1.8.0_xxx) 必选
  • Maven (3.6.1+) 必选
  • DataX 必选
  • Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下) 必选,主要用于调度执行底层DataX的启动脚本,默认的方式是以Java子进程方式执行DataX,用户可以选择以Python方式来做自定义的改造。我使用的是python3。

二、DataX安装

        DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。

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

1、基础环境:Linux、JDK8以上、Python2或者python3、maven3.6以上

2、下载Datax源码,Datax源码位置

3、clone下载Datax源码

4、通过maven进行打包

5、打包成功后,日志显示:

打包成功后,位置:

6、上传datax.tar.gz到服务器,并进行解压:

解压:tar -zxvf datax.tar.gz

7、进入datax下面的bin目录下,编写stream2stream.json:

#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,在bin目录下,执行python3 datax.py ./stream2stream.json,会报错:

错误原因是缺少plugin.json,将源码中的plugin.json文件上传到服务器指定位置中,

上传成功后,进入到datax下面的bin目录下,再次执行python3 datax.py ./stream2stream.json

执行成功后:

8、在job目录下,编辑job.json:

{
  "job": {
    "setting": {
      "speed": {
        "channel": 5,
        "byte": 1048576
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0.02
      }
    },
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "P@ssw0rd!2",
            "column": [
              "`id`",
              "`client_id`",
              "`client_secret`",
              "`scope`",
              "`authorized_grant_types`",
              "`web_server_redirect_uri`",
              "`access_token_validity`",
              "`refresh_token_validity`",
              "`create_user`",
              "`create_dept`",
              "`create_time`",
              "`update_user`",
              "`update_time`",
              "`status`",
              "`is_deleted`"
            ],
            "splitPk": "",
            "connection": [
              {
                "table": [
                  "blade_client"
                ],
                "jdbcUrl": [
                  "jdbc:mysql://ip:3306/test1?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "postgresqlwriter",
          "parameter": {
            "username": "postgres",
            "password": "P@ssw0rd!",
            "column": [
              "\"id\"",
              "\"client_id\"",
              "\"client_secret\"",
              "\"scope\"",
              "\"authorized_grant_types\"",
              "\"web_server_redirect_uri\"",
              "\"access_token_validity\"",
              "\"refresh_token_validity\"",
              "\"create_user\"",
              "\"create_dept\"",
              "\"create_time\"",
              "\"update_user\"",
              "\"update_time\"",
              "\"status\"",
              "\"is_deleted\""
            ],
            "connection": [
              {
                "table": [
                  "public.blade_client"
                ],
                "jdbcUrl": "jdbc:postgresql://ip:5432/test2"
              }
            ]
          }
        }
      }
    ]
  }
}

9.在bin目录下执行:python3 datax.py ../job/job.json,出现错误提示:

 处理bps错误问题,进入conf文件夹下,修改core.json:

将byte:-1修改为byte:2000000,保存,重新执行文件即可。

执行结果:

总结:datax安装会有或多或少的一些小问题,针对问题解决问题就可以。再次感谢datax开源组织的劳动成果。 

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值