在 Amazon EMR 上 rdd.write.csv 时如何处理 S3 内部服务器错误?
How to handle S3 Internal Server Errors when rdd.write.csv on Amazon EMR?
我有一个 pyspark Amazon Elastic Map Reduce (EMR) 应用程序正在使用 rdd.write.csv
方法写入 S3。这在 99.999% 的时间内都有效。不幸的是,我们在写入过程中有 0.001% 的时间会遇到内部 S3 错误。
错误发生在 EMR 工作节点上。我们不能用 Python try/catch 语句捕获它。
这是我们收到的错误消息的示例:
Caused by: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Internal Server Error
(Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Server Error;
Request ID: F0AFDAB32ADEF5EC; S3 Extended Request ID: aHJpZ0drMEZOREl5b0lUQWI2YkRKWFZWT2hCbnhFUmlDeVlLV2JFOFlVM2ljU1ZINmxFdDVZMTVweEMxNWQK4=),
S3 Extended Request ID: aHJpZ0drMEZOREl5b0lUQWI2YkRKWFZWT2hCbnhFUmlDeVlLV2JFOFlVM2ljU1ZINmxFdDVZMTVweEMxNWQK4=
除了写入 HDFS 然后使用子进程将文件从 HDFS 复制到 S3 之外,我没有看到任何明显的解决方案。那可能仍然会崩溃,但至少我可以在不终止我的 pyspark
程序的情况下重试它。
我们也偶尔会在 aws s3 cp --recursive s3://bucket/prefix/file local/file
中看到错误。同样,失败率约为 0.001%。
亚马逊说我们应该重试。问题是,当工作节点上发生错误时,无法重试 rdd.write.csv
。或者有没有?
属性fs.s3.maxRetries
默认为4:
$ hdfs getconf -confKey fs.s3.maxRetries
4
$
将其增加到更高的数字将增加重试次数。
我有一个 pyspark Amazon Elastic Map Reduce (EMR) 应用程序正在使用 rdd.write.csv
方法写入 S3。这在 99.999% 的时间内都有效。不幸的是,我们在写入过程中有 0.001% 的时间会遇到内部 S3 错误。
错误发生在 EMR 工作节点上。我们不能用 Python try/catch 语句捕获它。
这是我们收到的错误消息的示例:
Caused by: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Internal Server Error
(Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Server Error;
Request ID: F0AFDAB32ADEF5EC; S3 Extended Request ID: aHJpZ0drMEZOREl5b0lUQWI2YkRKWFZWT2hCbnhFUmlDeVlLV2JFOFlVM2ljU1ZINmxFdDVZMTVweEMxNWQK4=),
S3 Extended Request ID: aHJpZ0drMEZOREl5b0lUQWI2YkRKWFZWT2hCbnhFUmlDeVlLV2JFOFlVM2ljU1ZINmxFdDVZMTVweEMxNWQK4=
除了写入 HDFS 然后使用子进程将文件从 HDFS 复制到 S3 之外,我没有看到任何明显的解决方案。那可能仍然会崩溃,但至少我可以在不终止我的 pyspark
程序的情况下重试它。
我们也偶尔会在 aws s3 cp --recursive s3://bucket/prefix/file local/file
中看到错误。同样,失败率约为 0.001%。
亚马逊说我们应该重试。问题是,当工作节点上发生错误时,无法重试 rdd.write.csv
。或者有没有?
属性fs.s3.maxRetries
默认为4:
$ hdfs getconf -confKey fs.s3.maxRetries
4
$
将其增加到更高的数字将增加重试次数。