用脚本模式配置数据同步

大数据开发套件里可以通过配置同步任务,实现数据在不同数据源之间的迁移。但是因为目前只部署在华东1(参考文档),有一些特殊网络环境可能无法覆盖到。比如VPC下的DRDS或者其他区域自建数据库内网就不通了。不过套件还提供了脚本模式+调度资源设置这2个大杀器,满足各种复杂场景下的数据同步功能。

本文就数据从MaxCompute的数据导出到VPC下的DRDS为例,详细介绍如何使用这两种方法来实现灵活的数据同步。

同步原理

首先介绍下大数据开发套件的同步任务是怎么做的。

(这个图片来自这里)
常有人以同步是MaxCompute的功能,其实MaxCompute和DRDS、RDS一样只是一种数据源。图片中间的框框是一个数据同步服务,它有一个Reader和一个Writer配置,通过Reader从来源抽取数据,然后用Writer写到目标数据源上。
如果有各种网络通不通的问题,其实就是来源数据源到同步服务通不通,以及同步服务到目标数据源通不通两个问题。大数据开发套件提供了一个数据同步的服务,部署在华东1,所以也就有了前文提到的华东1的说法。在这种场景下,就需要考虑华东1的同步集群到来源数据源和目标数据源通不通。因为本文的例子里,虽然MaxCompute和同步集群虽然是通的,但是在华北2的VPC下的DRDS内网是不通,所以就有了同步不了的尴尬情况。
除了用大数据开发套件提供的同步服务集群外,也可以用直接的自己的ECS来做同步,那这样的问题就变成了来源数据源和目标数据源这两个数据源和自己的ECS通不通的问题了。这时候就可以通过安全组设置、高速通道等方法,实现数据的同步。而且这样防火墙等安全设置自主可控,用户自己排查网络问题也比较方便。本文就是用这种方法实现把数据写入到华北2的VPC内的DRDS的。为了能够和华北2的VPC内的DRDS能很好的内网连接,我使用华北2的VPC下的ECS来做调度资源。

DRDS的配置

DRDS没有做特殊的设置,只是说明下情况:它是在华北2的VPC里,里面的数据表是做了分库的。
需要特殊说明的是,这里因为VPC下的DRDS目前不支持设置白名单,所以本文不涉及白名单的部分。但是如果是其他的数据源(比如自建Mysql),需要看同步服务是什么。如果是用大数据开发套件默认的同步集群,需要参考文档设置白名单或者在防火墙/安全组等安全设置上开放这些IP的访问。如果是用自己的ECS做的调度资源,那只需要开放自己的ECS的IP给数据源,保证数据源和ECS之间是通的,系统的IP就可以不设置。只是如果因为用自己的ECS调度,没有开放系统的那些IP的话,可能在用模板模式配置任务的时候可能会有问题(比如本文如果用模板模式的话会在DRDS数据源里获取数据库下的表的列表的时候出现连接不通的情况),这时候就切换成脚本模式,直接修改同步脚本即可。
DRDS购买成功后,我从DMS登录到数据库上,使用

create table user_pay(
 user_id  varchar(100),
 shop_id  varchar(100),
 time_stamp timestamp) ;

在DRDS里创建好表。

ECS的配置

我的ECS是新购买的,购买时选择了和DRDS一样的专有网络和虚拟交换机,使得DRDS和ECS内网能通。另外我设置了公网IP,准备通过公网从MaxCompute获取数据。

调度资源

机器购买成功后需要配置这台ECS,让大数据开发套件知道这台机器可以用来做调度资源。到调度资源列表里创建一个调度资源,添加一台ECS

数据源

创建数据源的步骤也只是跟着文档配置,没太多需要注意的。因为VPC下的DRDS不需要设置白名单,所以这里也省了一步。如果是其他数据源,注意对配置处提示的IP添加白名单放行。

任务配置

接下来是最重要的同步脚本编写。到数据集成页面创建一个任务,直接使用脚本模式。选择好数据是从Odps导入到DRDS后,得到一个模板(模板自动生成的,这里就不再写拷一次)。
填上实际的业务数据后,变成

{
  "configuration": {
    "setting": {
      "speed": {
        "mbps": "1"
      }
    },
    "reader": {
      "parameter": {
        "partition": "",
        "column": [
          "*"
        ],
        "table": "user_pay",
        "datasource": "maxcompute_ds"
      },
      "plugin": "odps"
    },
    "writer": {
      "parameter": {
        "writeMode": "replace",
        "preSql": [
          "delete from user_pay;"
        ],
        "column": [
          "user_id",
          "shop_id",
          "time_stamp"
        ],
        "table": "user_pay",
        "datasource": "vpc_drds"
      },
      "plugin": "drds"
    }
  },
  "type": "job",
  "version": "1.0"
}

然后保存提交。

修改调度资源

任务提交后,需要到任务运维里修改任务运行使用的调度资源,这样任务才是运行在自己的ECS上的,可以看这个图

修改好了后,直接在这个页面可以点截图右下角的操作下拉选项里的补数据来跑任务。

总结

本文主要用自定义的ECS来调度来解网络不可达的问题。通过使用脚本模式来解因为网络不可达导致的向导模式无法配置的问题。脚本模式除了能解这个问题外,其实还能支持比向导模式更多的数据源。

最后需要提醒一句,大数据开发套件的产品形态还没有完全固定,产品本身还在做迭代,在界面和功能上后续可能还是会有一些不同,但是数据同步大致的思路就是这样不会变。希望本文能给大家在做ETL上有一些帮助和启发。

本文使用的产品涉及大数据计算服务(MaxCompute),地址为https://www.aliyun.com/product/odps
配合大数据开发套件 https://data.aliyun.com/product/ide 完成的。
如果有问题,可以加入我们的钉钉群来咨询

时间: 2024-08-05 13:30:12

用脚本模式配置数据同步的相关文章

Jboss EAP 6.1集群环境下Ejb3.1 timer配置数据同步问题-----急急急!!!

问题描述 Hi,请问大神,我们公司有个web项目是基于JbossEAP6.1+EJB3.1+JSF2架构开发的,并部署在Jboss的集群环境下(ServerA,ServerBandServerC).项目中用EJB3.1TimerServer创建了一些scheduletasks,Timer的配置数据文件独立的存放于另一台中央文件服务器中.用户能访问一个配置task的页面,来创建新的task或更改,删除已有的tasks.但我们发现这样做在集群环境下出现问题.详情如下:当服务器被启动时,每台服务器会去

Mysql主主同步-配置数据同步

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/809411 Mysql主主同步数据   一.环境 192.168.1.1  MysqlA 192.168.1.2    MysqlB 二,安装配置 1.安装mysql省略,MysqlA和MysqlB版本保持一致就可以了! 2.配置mysql 1)在两台机器上给对方授权 MysqlA GRANT REPLICATIO

ZAB协议恢复模式-数据同步

上一篇博客中,我们详细讨论了Zookeeper的Leader选举过程,接下来我们讨论一下Leader选举以后的事情,并了解zookeeper的集群管理原理. 提前说明: 本文主题虽然是讲述崩溃恢复模式,不过也会对广播模式的内容进行简单的描述. 为了在文中描述不至于太过啰嗦,所以对超过半数省略掉了一个限定返回.例如当出现类似于"超过半数follower与leader同步","收到超过半数follower的回复"这种描述时,这种描述不正确,因为这个半数计算的时候是包含l

MySQL超时参数以及相关数据集成、DataX数据同步案例分享

一.背景 MySQL系统变量提供关于服务器的一些配置和能力信息,大部分变量可在mysqld服务进程启动时设置,部分变量可在mysqld服务进程运行时设置.合理的系统变量设值范围,是保障MySQL稳定提供服务的重要因素.本文主要描述MySQL数据库的超时timeout相关的一些系统变量,部分参数同程序应用中常见到的CommunicationsException: Communications link failure异常息息相关. 本文也结合数据同步的场景,对使用DataX3进行MySQL数据同步

Ubuntu Server Rsync服务端与Windows cwRsync客户端实现数据同步配置教程

1.Rsync服务端 系统:Ubuntu Server 11.10 IP地址:192.168.21.168 数据存放目录:/home/mysql_data2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:mysql_data实现目的:cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/home/mysql_data目录中的数据到D:mysql_data目录系统运维 温馨提醒:qihang01原创内容版权所有

Ubuntu Server Rsync服务端与Windows cwRsync客户端数据同步配置方法_服务器其它

说明:1.Rsync服务端 系统:Ubuntu Server 11.10 IP地址:192.168.21.168 数据存放目录:/home/mysql_data2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:\mysql_data实现目的:cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/home/mysql_data目录中的数据到D:\mysql_data目录一.Rsync服务端配置 1.开启防火墙t

Sersync实现数据同步的配置教程

Sersync 基于 boost1.43.0,inotify api,rsync command 开发,主要用于服务器同步,web镜像等功能.软件作者:周洋.项目官网:https://code.google.com/p/sersync/ Sersync 优点: 1.sersync 是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合 rsync 同步的时候,节省了运行时耗和网络资源.因此更快. 2.相比较 inotify-tools + rsync 和

CentOS Rsync服务端与Windows cwRsync客户端实现数据同步配置方法_服务器其它

说明: 1.Rsync服务端 系统:CentOS 5.5 IP地址:192.168.21.160 数据存放目录:/data/osyunwei 2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:\osyunwei 实现目的: cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/data/osyunwei目录中的数据到D:\osyunwei目录 一.Rsync服务端配置 1.关闭SELINUX vi /etc/

用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核

一,为A组在X单独另建一个MYSQL服务器(MYSQL B),A组平时更新的数据库为MYSQL B.待MYSQL B的数据审核准确无误后.发布给现在布置在X上的MYSQL服务器(MYSQL A).并进行一致性CHECK. 有这样一道正式网站数据库同步前的隔离审查,就可以保证接下来的数据库同步的数据准确无误. 二,MYSQL A数据库收到MYSQL B的同步数据之后,才将其更新发布到网站MYSQL数据库上(MYSQL C).在同步过程中,建立启用半同步复制(有别于目前的异步复制,是google组开