EMR 上的 Spark 或 Hive 作业失败并出现 HTTP 503 “Slow Down” AmazonS3Exception
问题现象
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相关推荐
- hadoop emr_在Amazon EMR上运行Hadoop MapReduce作业
hadoop emr 不久前,我发布了如何使用CLI设置EMR群集的信息. 在本文中,我将展示如何使用适用于AWS的Java SDK来设置集群. 展示如何使用Java AWS开发工具包执行此操作的最佳 ...
- 在Amazon EMR上运行Hadoop MapReduce作业
不久前,我发布了如何使用CLI设置EMR群集的信息. 在本文中,我将展示如何使用适用于AWS的Java SDK来设置集群. 展示如何使用Java AWS开发工具包执行此操作的最佳方法是展示完整的示例, ...
- Spark读取Hive数据的两种方式与保存数据到HDFS
Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...
- Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项
背景: 最近在测试华为云DAYU MRS Spark操作Hive的流程,因kerberos认证的问题一直测试失败. 代码示例: val sparkSession = SparkSession.buil ...
- 小白学习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 ...
- 【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.交互 ...
- 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 ...
- Apache Hudi在AWS Glue和AWS EMR上同步元数据的异同
继我们上篇文章<在AWS Glue中使用Apache Hudi>介绍了如何在Glue中同步Hudi元数据之后,本文我们再简短截说一下Hudi在EMR上的元数据同步. 首先,EMR对于元数据 ...
- Spark采坑系列(三)Spark操作Hive的坑
2019独角兽企业重金招聘Python工程师标准>>> 跟着教学试着用Idea编程,实现Spark查询Hive中的表.结果上来就凉了. 捣鼓好久都不行,在网上查有说将hive-sit ...
最新文章
- LeetCode 228: Summary Ranges
- Win7安vc2008编译报LINK : fatal error LNK1000: Internal error during IncrBuildImage
- ASP.NET Core中如何调整HTTP请求大小的几种方式
- C++ 字符串编程训练2
- 【OJ】洛谷排序题单题解锦集
- python3高级 一 迭代器
- mysql 删除创建表分区_创建,增加,删除mysql表分区
- 详解mysql事务_详解MySQL执行事务的语法和流程
- 1024程序员节:除了高薪,你还有什么理由坚持做程序员?
- BiANet:用于快速高效实现RGB-D数据显著性目标检测的双边注意力模型
- java实例化类方法_Java 实例化类的的几种方法
- cad生成最小包围盒lisp_cad.net 葛立恒凸包算法和面积最小包围盒
- 天然产物分子机制研究(内含彩蛋)——药物靶点预测系统案例分析2
- 2022年下半年软件设计师考试上午真题(专业解析+参考答案)
- 【树状数组】【P5069】[Ynoi2015]纵使日薄西山
- 2020牛客寒假算法基础集训营1 I nico和niconiconi
- Windows10 运行 WSA
- 2022-2027年中国医学影像设备市场竞争态势及行业投资前景预测报告
- NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp
- java pda开发_《Java 手机/PDA 程序设计入门》读书笔
热门文章
- dpdk 内核模块 Unknown symbol in module 问题
- Python入门学习笔记——12.文件操作
- 电脑连接热点无internet访问权限_电脑连接无线网,显示无网络访问权限
- Tensorflow入门——自制数据集:将未经处理的图片制成npy格式的数据集
- 系统设计-开放平台(一)
- Android Studio 光标莫名其妙加粗后,与 insert 键相反的问题
- matlab最小二乘法拟合 做图像,用MatLab画图(最小二乘法做曲线拟合)
- 2022第三届全国大学生网络安全精英赛练习题(1)
- 年中团建之军训-回顾
- 第三方代付入帐是什么意思