问题现象

java.io.IOException: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: 2E8B8866BFF00645; S3 Extended Request ID: oGSeRdT4xSKtyZAcUe53LgUf1+I18dNXpL2+qZhFWhuciNOYpxX81bpFiTw2gum43GcOHR+UlJE=), S3 Extended Request ID: oGSeRdT4xSKtyZAcUe53LgUf1+I18dNXpL2+qZhFWhuciNOYpxX81bpFiTw2gum43GcOHR+UlJE=

简短描述

此错误会在您超出 Amazon Simple Storage Service (Amazon S3) 请求速率(在存储桶中每个前缀在每秒处理 3500 个 PUT/COPY/POST/DELETE 和 5500 个 GET/HEAD 请求)时发生。

解决此问题的方式有两种:

  • 减少 Amazon S3 请求的数量。
  • 添加更多前缀到 S3 存储桶。
  • 提高 EMR 文件系统 (EMRFS) 重试限制。

解决方案

在您可以确定请求过多问题前,首先配置 Amazon CloudWatch 的请求指标

配置 CloudWatch 请求指标

要监控 Amazon S3 请求,为存储桶启用 CloudWatch 请求指标。然后,为前缀定义筛选条件。如需要监控的有用指标列表,见 Amazon S3 CloudWatch 请求指标。

在启用指标后,使用指标中的数据确定以下哪个解决办法最适用于您的用例。

减少 Amazon S3 请求的数量

  • 如果多个并发作业(Spark、Apache Hive 或 s3-dist-cp)正在读取或写入相同的 Amazon S3 前缀:减少并发作业的数量。如果为 Amazon S3 配置跨账户访问,记住其他账户也有可能会提交作业到前缀。
  • 如果作业尝试写入目标存储桶时发生错误:降低作业的并行性。例如,在写入 Amazon S3 前使用 Spark .coalesce() 或 .repartition() 操作减少 Spark 输出分区的数量。您还可以减少每个执行程序的内核数量,或减少执行程序的数量。
  • 如果作业尝试从源存储桶读取时发生错误:减少文件数量,从而减少 Amazon S3 请求的数量。例如,使用 s3-dist-cp 将大量小文件合并成少量大文件。

添加更多前缀到 S3 存储桶

解决 "Slow Down" 错误的另一种方法是,添加更多前缀到 S3 存储桶。存储桶中的前缀数量没有限制。请求速率针对每个前缀,而不是存储桶。

例如,如果您在一个存储桶中创建三个前缀,如下:

  • s3://awsexamplebucket/images
  • s3://awsexamplebucket/videos
  • s3://awsexamplebucket/documents

那么,您可以每秒对该存储桶发出 10500 个写入请求或 16500 个读取请求。

提高 EMRFS 重试限制

默认情况下,EMRFS 重试限制设置为 4。运行以下命令,以确认集群的重试限制:

$ hdfs getconf -confKey fs.s3.maxRetries
  • 要提高新集群的重试限制:请在启动集群时添加以下类似的配置对象。
  • 要在运行的集群上提高重试限制:请使用以下配置对象覆盖实例组的集群配置(Amazon EMR 版本 5.21.0 及更高版本)。
[{"Classification": "emrfs-site","Properties": {"fs.s3.maxRetries": "20"}}
]

提高集群的重试限制时,Spark 和 Hive 应用程序页可以使用新限制。以下是使用更高重试限制的 Spark shell 会话的示例:

spark> sc.hadoopConfiguration.set("fs.s3.maxretries", "20")
spark> val source_df = spark.read.csv("s3://awsexamplebucket/data/")
spark> source_df.write.save("s3://awsexamplebucket2/output/")

EMR 上的 Spark 或 Hive 作业失败并出现 HTTP 503 “Slow Down” AmazonS3Exception相关推荐

  1. hadoop emr_在Amazon EMR上运行Hadoop MapReduce作业

    hadoop emr 不久前,我发布了如何使用CLI设置EMR群集的信息. 在本文中,我将展示如何使用适用于AWS的Java SDK来设置集群. 展示如何使用Java AWS开发工具包执行此操作的最佳 ...

  2. 在Amazon EMR上运行Hadoop MapReduce作业

    不久前,我发布了如何使用CLI设置EMR群集的信息. 在本文中,我将展示如何使用适用于AWS的Java SDK来设置集群. 展示如何使用Java AWS开发工具包执行此操作的最佳方法是展示完整的示例, ...

  3. Spark读取Hive数据的两种方式与保存数据到HDFS

    Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...

  4. Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项

    背景: 最近在测试华为云DAYU MRS Spark操作Hive的流程,因kerberos认证的问题一直测试失败. 代码示例: val sparkSession = SparkSession.buil ...

  5. 小白学习Spark03-在集群上运行Spark

    03 在集群上运行Spark 3.1 Spark运行架构 3.1.1 驱动器节点 3.1.2 执行器节点 3.1.3 集群管理器 3.1.4 启动Spark程序 3.1.5 小结 3.2 使用spar ...

  6. 【Spark+Hadoop+Hive+MySQL+Presto+SpringBoot+Echarts】基于大数据技术的用户日志数据分析及可视化平台搭建项目

    目录 1.项目概述 1.1.项目背景 1.2.项目流程 2.功能需求描述 2.1.系统功能组成 2.2.数据描述 2.3.功能描述 2.3.1.流量概况分析 2.3.2.日新日活分析 2.3.3.交互 ...

  7. spark读取hive表异常,处理WARN HiveExternalCatalog: The table schema given by Hive metastore

    文章目录 1 问题概述 1.1 数据库表状况 1.2 问题背景 2 报错场景 2.1 修改Hive元数据信息 2.2 报错信息 2.3 其他现象 2.4 查看表结构时的发现 2.5 报错分析 2.6 ...

  8. Apache Hudi在AWS Glue和AWS EMR上同步元数据的异同

    继我们上篇文章<在AWS Glue中使用Apache Hudi>介绍了如何在Glue中同步Hudi元数据之后,本文我们再简短截说一下Hudi在EMR上的元数据同步. 首先,EMR对于元数据 ...

  9. Spark采坑系列(三)Spark操作Hive的坑

    2019独角兽企业重金招聘Python工程师标准>>> 跟着教学试着用Idea编程,实现Spark查询Hive中的表.结果上来就凉了. 捣鼓好久都不行,在网上查有说将hive-sit ...

最新文章

  1. LeetCode 228: Summary Ranges
  2. Win7安vc2008编译报LINK : fatal error LNK1000: Internal error during IncrBuildImage
  3. ASP.NET Core中如何调整HTTP请求大小的几种方式
  4. C++ 字符串编程训练2
  5. 【OJ】洛谷排序题单题解锦集
  6. python3高级 一 迭代器
  7. mysql 删除创建表分区_创建,增加,删除mysql表分区
  8. 详解mysql事务_详解MySQL执行事务的语法和流程
  9. 1024程序员节:除了高薪,你还有什么理由坚持做程序员?
  10. BiANet:用于快速高效实现RGB-D数据显著性目标检测的双边注意力模型
  11. java实例化类方法_Java 实例化类的的几种方法
  12. cad生成最小包围盒lisp_cad.net 葛立恒凸包算法和面积最小包围盒
  13. 天然产物分子机制研究(内含彩蛋)——药物靶点预测系统案例分析2
  14. 2022年下半年软件设计师考试上午真题(专业解析+参考答案)
  15. 【树状数组】【P5069】[Ynoi2015]纵使日薄西山
  16. 2020牛客寒假算法基础集训营1 I nico和niconiconi
  17. Windows10 运行 WSA
  18. 2022-2027年中国医学影像设备市场竞争态势及行业投资前景预测报告
  19. NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp
  20. java pda开发_《Java 手机/PDA 程序设计入门》读书笔

热门文章

  1. dpdk 内核模块 Unknown symbol in module 问题
  2. Python入门学习笔记——12.文件操作
  3. 电脑连接热点无internet访问权限_电脑连接无线网,显示无网络访问权限
  4. Tensorflow入门——自制数据集:将未经处理的图片制成npy格式的数据集
  5. 系统设计-开放平台(一)
  6. Android Studio 光标莫名其妙加粗后,与 insert 键相反的问题
  7. matlab最小二乘法拟合 做图像,用MatLab画图(最小二乘法做曲线拟合)
  8. 2022第三届全国大学生网络安全精英赛练习题(1)
  9. 年中团建之军训-回顾
  10. 第三方代付入帐是什么意思