作业出现Amazon S3; Status Code: 503错误分析

503 Slow Down 响应码的官方文档说明

您每秒可以在 Amazon S3 存储桶中为每个分区前缀发送 3500 个 PUT/COPY/POST/DELETE 和 5500 个 GET/HEAD 请求。当您提高至存储桶的请求速率时,S3 可能会在扩展以支持该请求速率时返回 503 Slow Down 错误。此扩展过程被称为分区。

为避免或尽量减少 503 Slow Down 响应,请验证您的存储桶中的唯一前缀数量支持您所需的每秒事务数 (TPS)。此验证可以确保您的存储桶利用 Amazon S3 的扩展和分区功能。此外,请确保对象及对象的请求均匀分布在唯一的前缀中。有关更多信息,请参阅最佳实践设计模式:优化 Amazon S3 性能。

官方文档说明:

解决 Amazon S3 中的 503 Slow Down 错误

其中问题:分区是指什么


S3储存说明

  • 键值对说明

实际上S3的储存中,是按键值对进行文件储存

例如下面2个文件

/dir1/obj1

/dir1/dir2/obj1

虽然看着像是在不同的层级(把【/】看成文件夹路径的话),实际上其实都在一层

即:

"/dir1"     :obj1
"/dir1/dir2":obj1

  • 分区说明

S3中的分区是按文件key值的相同部分来进行动态分区,即随时可能发生扩分区和缩小分区

例如下面2个文件

/dir1/dir2/dir2/3/obj1
/dir1/dir2-2/obj1

虽然看着key值只有前半部分相同,但是根据S3的机制,可能会获取该key值相同部分的值来进行分区

即:

"/dir1/dir2" + "/dir2/3" : obj1

"/dir1/dir2" + "-2"      : obj1 

那么,如果在 "/dir1/dir2" 这个分区中的请求次数超过限制时,会出现下面2个现象 

  • 请求的响应码为503 Slow Down.
    • 此现象无法避免
    • 技术人员反馈说,正常每天会有几千条503响应码,合并小文件能很好解决这个情况
    • 若出现上万条,才可能会影响到作业
  • 触发S3扩容机制
    • 扩容需要时间
    • 没有提早进行扩容的机制(例如添加参数)

解决方法

临时解决方法

  • 可以单独为这个路径提交工单添加分区
    • 但是其他任务也可能会出现503的现象,这个方法只算是治标不治本的解决方法
  • 减少对该分区中的请求数
    • 减少并发
    • 减少文件数

根本解决方法

AWS侧的技术人员表示曾多次反馈,建议多建立S3桶来创建更多的分区,最好的是一个EMR集群对应一个S3桶

但是目前看来,是比较难以推动的

  • S3桶中现有的储存数据量较大
  • 库表的储存命名规则也不便于增加分区
    • AWS侧建议的命名规则是桶路径的前面增加更多可分区的名字,例如将日期YYYYMMDD改成DDMMYYYY
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默哀d

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值