S3連接複位錯誤

Apache Spark任務失敗,S3連接重置錯誤。

寫的arjun.kaimaparambilrajan

最後發布時間:2022年3月15日

問題

嚐試S3操作時,Apache Spark作業失敗。

錯誤信息:Caused by: java.net.SocketException: Connection reset出現在堆棧跟蹤中。

S3讀操作的堆棧跟蹤示例:

原因:javax.net.ssl.SSLException: Connection reset;請求ID: XXXXX,擴展請求ID: XXXXX,雲提供程序:AWS,實例ID: i-XXXXXXXX at sun.security.ssl.Alert.createSSLException(Alert.java:127) at sun.security.ssl.TransportContext.fatal(TransportContext.java:324)…at sun. secure .ssl. sslsocketimpl $AppInputStream.read(SSLSocketImpl.java:833) at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)…at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:135) at com.amazonaws.internal.SdkFilterInputStream.read(SdkFilterInputStream.java:90) at com.amazonaws.event.ProgressInputStream.read(ProgressInputStream.java:180) at com.amazonaws.internal.SdkFilterInputStream.read(SdkFilterInputStream.java:90)…由:java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:210) at java.net.SocketInputStream.read(SocketInputStream.java:141) at sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:467) at sun.security.ssl. sslsocketinputrecord . readfull (SSLSocketInputRecord.java:450) at sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(SSLSocketInputRecord.java:243)

導致

舊版本的Hadoop S3連接器不進行重試SocketTimeoutExceptionSSLException錯誤。這些異常可能分別發生在客戶端超時或服務器端超時時。

解決方案

這個問題已經在Hadoop S3連接器的新版本中得到了解決。Databricks Runtime 7.3 LTS及以上版本使用新的連接器。

  • 如果您使用的是Databricks Runtime 7.3 LTS或以上版本,請確保集群的Spark配置中不存在這些設置:
    spark.hadoop.fs.s3。impl com.databricks.s3a.S3AFileSystemspark.hadoop.fs.s3n.impl com.databricks.s3a.S3AFileSystem spark.hadoop.fs.s3a.impl com.databricks.s3a.S3AFileSystem
  • 如果您使用的是Databricks Runtime 7.0 - 7.2,請升級到Databricks Runtime 7.3 LTS或以上版本。
  • 如果您使用的是Databricks Runtime 6.4或以下版本,請聯係技術支持以獲得幫助。