【发布时间】:2019-05-03 17:07:18
【问题描述】:
我正在尝试将 S3 后端与自定义端点一起使用。但是,hadoop-aws@2.7.3 不支持它,我至少需要使用 2.8.0 版本。根本原因是请求被发送如下
DEBUG [main] (AmazonHttpClient.java:337) - Sending Request: HEAD http://mustafa.localhost:9000 / Headers:
因为fs.s3a.path.style.acces" 在旧版本中无法识别。我希望域保持不变,将存储桶名称附加到路径中 (http://localhost:9000/mustafa/...)
不能一味的把aws-java-sdk版本加到最新,原因是:
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.ClientConfiguration
at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:182)
所以,如果我用最新的客户端将hadoop-aws 增加到2.8.0,则会导致以下错误:
据我所知,我需要hadoop-aws@2.7.2 和
https://ci.apache.org/projects/flink/flink-docs-release-1.3/setup/aws.html#provide-s3-filesystem-dependency
Caused by: java.lang.IllegalAccessError: tried to access method org.apache.hadoop.metrics2.lib.MutableCounterLong.<init>(Lorg/apache/hadoop/metrics2/MetricsInfo;J)V from class org.apache.hadoop.fs.s3a.S3AInstrumentation
at org.apache.hadoop.fs.s3a.S3AInstrumentation.streamCounter(S3AInstrumentation.java:194)
我应该以某种方式从 Flink 中排除 hadoop-common 吗?使用mvn clean install -DskipTests -Dhadoop.version=2.8.0 从源代码构建 flink 是可行的,但我想尽可能通过 maven 来管理它。
【问题讨论】:
-
仅用于 flink 与 hadoop 2.8.0 maven 工件部分,它们将可用于 1.4.0 及更高版本。见issues.apache.org/jira/browse/FLINK-6466
-
那么,如果我在我的依赖项中使用快照中的 flink-1.4,那会起作用吗?
标签: java maven amazon-web-services amazon-s3 apache-flink