美柚与MaxCompute数据同步架构说明
大美柚与MaxCompute数据同步架构说明
- 2017 / 8 / 10九戒
本文涉及到的重要概念:
敲黑板
在使用自定义资源与MaxCompute做数据同步任务,务必在odps端加上
- "tunnelServer": "http://dt-ext.nu16.odps.aliyun-inc.com",
配置.免费且能提升同步速度
网络拓扑图
既然数加提供了默认资源为什么我们还要使用自定义资源?
目前默认资源只在华东2区有,而我们大部分的数据和机器在北京,只能通过公网进行数据同步,网络延迟比较大(33ms),且不稳定,经常出现time out情况.且默认资源会限速,而我们需要上传的日志量比较大,数据延迟会比较大,不能很好的满足业务需求.
为什么自定义资源放在华北2区?
因为我们北京机房和华北2区有专线连接,方便与北京机房的机器做数据同步
使用自定义资源给我们带来了什么好处?
- 华北2区的自定义资源可以通过MaxCompute专线(**需要在任务里配置tunnelServer**)连接MaxCompute服务,比通过公网连接更稳定,更快.
- 另一端,自定义资源和北京机房或北京ECS是通过专线或内网连接,网络也比公网更有保障.
总结一下怎么选择资源组
- 如果MaxCompute和华东区的ECS的数据同步,请选用默认资源
- 如果MaxCompute和(华北ECS或者北京机房)的数据同步有两种方式:
- 通过自定义资源(如果操作见下文)
- 通过华北ECS做端口转发:只需将北京机房对应机器的端口(一般是22端口),转发到ECS出口的某个端口(例如21222),然后使用默认资源,使用ECS的外网ip和端口就可以了.
什么时候用自定义资源?什么时候用端口转发?
- 对网络延迟比较敏感的用自定义资源(例如数据要写到北京ECS或机房上mysql,如果使用默认资源,容易报错,连接超时)
- 对网络延迟不那么敏感,且数据量不是很大的,可通过端口转发的方式进行数据同步,通过端口转发方式能满足需求的尽量使用这种方式,以免自定义资源负载过高.
## 怎么使用自定义资源
-
项目配置自定义资源组:一个项目只需要配置一次,而且只有项目owner才有权限(这个不需要大家操作)
-
配置数据源:由项目管理员配置(一般来说一台服务器只需要配置一次),需要配置数据源服务器的内网地址,因此datax通过内网地址读写,更快速,稳定; 此时不需要测试连接,因为测试连接是通过默认资源发起的测试,所以网络不通.
-
编写数据同步任务:参看文档,只是数据源需要用第2步配置的数据源
-
修改任务的资源组:见下图步骤
-
运行: 这里只对新生成的实例生效,例如测试运行或补数据;而之前生成的实例,还是会用默认资源,会导致失败.
最后的废话
其实使用默认资源也是以上的这些步骤,只是有些步骤是默认值,不需要更改,例如:
- 项目配置资源组(数加项目生成的时候,就已经有了默认资源组,不需要我们额外配置)
- 配置数据源(默认有odps_first,指该odps项目),我们自己的数据源同样需要配置
- 编写数据同步任务(一样)
- 修改任务的资源组(默认值是默认资源组,无需修改)
- 运行数据同步任务(一样)
在实际使用过程中,出现失败的话,多思考一下:
数据同步基于datax , 是通过datax到reader数据源抽取数据,在通过writer数据源写数据,
多思考一下网络方面的原因:例如防火墙,mysql的白名单,账号是否有权限等等.
来源: https://yq.aliyun.com/articles/193208