EMR Serverless无法连接跨区域S3存储桶的解决方案咨询
EMR Serverless跨区域访问S3连接超时解决方法
你看到的java.net.SocketTimeoutException: connect timed out报错,核心原因是EMR Serverless默认使用部署区域的S3端点,未开启跨区域路由时无法正确连接其他区域的S3存储桶,可通过提交作业时配置Spark参数解决,也可根据场景选择对应方案:
方案1:直接配置跨区访问参数(无网络改动,最快生效)
提交作业时在Spark parameters中添加以下配置,将<target-bucket-region>替换为目标S3桶的实际区域代码(如us-east-1、ap-southeast-1):spark.hadoop.fs.s3a.endpoint.region <target-bucket-region> spark.hadoop.fs.s3.endpoint.region <target-bucket-region> spark.hadoop.fs.s3n.endpoint.region <target-bucket-region> spark.hadoop.fs.s3.aws.cross.region.enabled true如果你使用的是S3A文件系统,额外补充端点配置:
spark.hadoop.fs.s3a.endpoint https://s3.<target-bucket-region>.amazonaws.com方案2:自定义VPC场景下的网络适配
如果你的EMR Serverless应用关联了自定义VPC,除了上述参数外,还需要确认网络连通性配置:- 在对应子网创建目标区域的S3网关端点或接口端点
- 关联的安全组、网络ACL放通到目标S3端点的443端口出站规则
- 补充参数
spark.hadoop.fs.s3a.path.style.access true,避免虚拟主机端点解析失败
方案3:高延迟场景的超时阈值调整
若跨区网络延迟较高,可在Spark参数中适当拉长连接超时时间,避免正常延迟被判定为连接失败:spark.hadoop.fs.s3a.connection.timeout 300000 spark.hadoop.fs.s3.connection.timeout 300000
注意:跨区域访问S3会产生额外的数据传输费用,若作业数据量较大,优先通过S3跨区域复制将数据同步到EMR Serverless部署区域,可同时降低成本和访问延迟。
内容的提问来源于stack exchange,提问作者solopiu
相关产品推荐
相关产品推荐

