我有一个Flink作业,在Map运算符中状态很大。我们正在使用保存点,该保存点将大约80GB存储到AWS S3。这个操作符大约有100个并行度。但是,当我们从保存点恢复时,总会有类似
的异常由以下原因引起:java.io.InterruptedIOException:无法在s3a:// 0上打开s3a:// xxxx / UbfK / flink / savepoints / logjoin / savepoint-a9600e-39fd2cc07076 / f9a31490-461a-42f3-88be-ec169145c35f失败/ adshonor-data-cube-test-apse1 / UbfK / flink / savepoints / logjoin / savepoint-a9600e-39fd2cc07076 / f9a31490-461a-42f3-88be-ec169145c35f:org.apache.flink.fs.s3base.shaded.com。 .SdkClientException:无法执行HTTP请求:等待池中的连接超时。
是否存在用于增加Flink中AWS S3的超时设置的配置参数,或者是避免此错误的另一种方法?
答案 0 :(得分:1)
尝试将fs.s3a.connection.maximum
设置为50或100之类的
答案 1 :(得分:0)
详细说明Steve所说的...很可能问题在于所使用的HTTP客户端没有足够大的“连接池”。
每个S3A客户端都以单个用户身份与单个存储桶进行交互, 具有自己的专用开放HTTP 1.1连接池以及一个 用于上载和复制操作的线程池。默认池 尺寸旨在在性能和 内存/线程的使用。
要全面了解您可以调整的内容(包括fs.s3a.connection.max
,请参见this Hadoop page的“调整选项”部分。
答案 2 :(得分:0)
因为Flink使用AWS连接代码,所以将设置更改为fs.s3.maxConnections
,这与纯Hadoop配置不同。
在AWS EMR上运行时,您可以参考以下文档:https://aws.amazon.com/cn/premiumsupport/knowledge-center/emr-timeout-connection-wait/