数据传输服务概述

数据传输服务是MaxCompute数据进出的最重要通道,其中包括适用于批量操作的普通Tunnel和适用于流式写入的Stream Tunnel,同时在所有Region提供免费限量使用的数据传输服务共享资源组,也提供数据传输服务(包年包月)独享资源组,供您采购使用。

使用分类

  • 命令。

    目前命令只能通过MaxCompute客户端(odpscmd)执行。

  • 批量操作。

    普通Tunnel可以对数据进行离线批操作,对数据进行上传与下载,包括单表数据上传下载和查询实例下载。

  • 流式操作。

    Stream Tunnel可以对流式数据做数据微批的方式写入表。

Tunnel服务

产品架构

数据传输服务产品架构图如下,目前一个地域只有一个数据传输服务共享资源组,资源被该地域所有用户共享使用,对每个租户有并发上限限制。数据传输服务(包年包月)独享资源组需要用户单独购买,您可以购买一个或者多个独享资源组,购买后独享资源组将由您独享使用。同时您可以手工指定独享资源组来执行数据传输任务。如果没有特别指定,会读取项目上默认的独享资源组执行数据传输服务。数据传输服务产品架构

关于数据传输服务共享资源组和独享数据传输服务(包年包月)的详情,请参见购买与使用独享数据传输服务资源组

数据传输服务使用限制

  • 批量数据通道使用限制说明。

    • 批量数据上传。

      限制项

      限制说明

      UploadSession生命周期

      24小时。

      单UploadSession写入Block个数

      20000个。

      单Block写入速度

      10 MB/s。

      单Block写入数据量

      100 GB。

      单表创建UploadSession数

      每5分钟500个。

      单表写入Block数

      每5分钟500个。

      单表并发提交UploadSession数

      32个。

      并发写入Block数

      受Slot并发数限制,单次Block写入占用一个Slot。

      并发写入

      MaxCompute会根据ACID进行并发写入的保障。关于ACID的具体语义请参见ACID语义

    • 批量数据下载。

      限制项

      限制说明

      DownloadSession生命周期

      24小时。

      InstanceDownloadSession生命周期

      24小时,受实例生命周期限制。

      单Project创建InstanceDownloadSession数

      每5分钟200个。

      单表创建DownloadSession数

      每5分钟200个。

      单次下载请求速度

      10 MB/s。

      并发创建DownloadSession数

      受Slot并发数限制,单次创建DownloadSession占用一个Slot。

      并发创建InstanceDownloadSession数

      受Slot并发数限制,单次创建InstanceDownloadSession占用一个Slot。

      并发下载请求数

      受Slot并发数限制,单次数据下载请求占用一个Slot。

    说明

    批量数据支持Delta Table的Upsert功能,使用限制如下:

    • UpsertSession生命周期:24小时(h)。

    • UpsertSession最大写入速度:表或分区Bucket数*10 MB/s。

    • UpsertSession最大Slot Quota占用:表或分区Bucket数。

    • UpsertSession Commit频率:Delta Table每个分区1分钟(min)内仅允许Commit 1次。如果某个分区Commit间隔小于1分钟,将会收到ErrorCode=FlowExceeded, ErrorMessage=CommitUpsert QPS Quota exceeded系统报错信息。

  • 流式数据通道使用限制说明。

    限制项

    限制说明

    单Slot写入速度

    1 MB/s。

    单Slot写入请求数

    每秒10个。

    单表并发写入分区数

    64个。

    单分区最大可用Slot数

    32个。

    StreamUploadSession占用Slot数

    受Slot并发数限制,创建StreamUploadSession时指定Slot数。

  • 上传数据限制。

    • 每个字段的大小不能超过该字段本身的限制,详情请参见数据类型版本说明

      说明

      STRING类型的字段大小不能超过8 MB。

    • 上传的过程中会将多条数据打包成一个Package进行上传。

  • 数据传输网络限制(独享资源组)。

    • 只支持云上VPC网络访问,暂时不支持公共网络访问。

    • 只支持同地域的数据传输服务,暂时不支持跨地域的数据传输服务。

说明

网络因素对数据传输服务上传下载速度的影响较大,正常情况下速度范围为1 MB/s~20 MB/s。如果上传数据速度太慢,可以考虑使用多线程上传方式。

数据传输服务共享资源组说明

下表数据为不同区域下免费共享资源(单位:Slot)Project级最多可用Slot数说明。

站点

地域

Slot(个数)

中国

华东1(杭州)

300

中国

华东2(上海)

600

中国

华东2金融云(上海)

50

中国

华北2(北京)

300

中国

华北2政务云(北京)

100

中国

华北3(张家口)

300

中国

华北6(乌兰察布)

300

中国

华南1(深圳)

150

中国

华南1金融云(深圳)

50

中国

西南1(成都)

150

中国

中国(香港)

50

亚太

新加坡(新加坡)

100

亚太

马来西亚(吉隆坡)

50

亚太

印度尼西亚(雅加达)

50

亚太

日本(东京)

50

欧洲与美洲

德国(法兰克福)

50

欧洲与美洲

美国(硅谷)

100

欧洲与美洲

美国(弗吉尼亚)

50

欧洲与美洲

英国(伦敦)

50

中东与印度

阿联酋(迪拜)

50

数据传输服务有效状态码

状态码标识

状态码名称

200

HTTP_OK

201

HTTP_CREATED

400

HTTP_BAD_REQUEST

401

HTTP_UNAUTHORIZED

403

HTTP_FORBIDDEN

404

HTTP_NOT_FOUND

405

HTTP_METHOD_NOT_ALLOWED

409

HTTP_CONFLICT

422

HTTP_UNPROCESSABLE_ENTITY

429

HTTP_TOO_MANY_REQUESTS

499

HTTP_CLIENT_CLOSED_REQUEST

500

HTTP_INTERNAL_SERVER_ERROR

502

HTTP_BAD_GATEWAY

503

HTTP_SERVICE_UNAVAILABLE

504

HTTP_GATEWAY_TIME_OUT

  • 请求失败重试策略

    • 客户端需要在收到请求失败后等待一段时间再重新发起请求。

    • 连续失败请求等待时间需要满足指数增长规则,最短1秒。例如:1s,2s,4s,8s,16s,32s,32s...

  • 重复请求

    • URL相同(URI和URI Parameter)。

    • 相同客户端IP连续发起。

  • 有效请求

    返回码为有效状态码且满足失败重试策略。

  • 非法请求

    返回码为有效状态码但不满足失败重试策略的请求。

    说明

    非法请求不受服务SLA保障。

  • 攻击类请求

    • 针对流控状态码429、503,未遵守失败重试策略的请求。

    • 针对攻击类请求,服务侧会对发起攻击的客户端IP、UID、Project进行隔离处理,被隔离的对象无法正常访问服务。

    说明

    攻击类请求不受服务SLA保障。

常见问题

数据传输服务变慢一般由什么原因导致?

受服务架构限制,MaxCompute Tunnel服务在以下几种场景中会出现偶发的请求延迟问题(单次上传、下载10MB数据耗时从秒级增长到分钟级)。

  • 共享Tunnel服务资源用满(CPU/网络带宽)

    • 持续时间:几分钟~几小时。

    • 受服务架构限制无法避免,有强保障需求的用户,可以购买独享资源Tunnel。

  • 客户端到Tunnel服务网络链路不稳定(公网上传/下载)

    • 持续时间:无法评估。

    • 公网稳定性无法保障,稳定性要求高的用户建议使用阿里云内网。

  • 客户端资源用满(CPU/网络带宽)

    • 持续时间:无法评估。

    • 需要用户对客户端物理资源做充分的评估。

  • 客户端代码逻辑不合理(长连接做上传、下载过程有耗时很长的数据处理逻辑)

    • 持续时间:无法评估。

    • 需要用户在代码设计上充分考虑数据传输性能。

其他问题