java Apache Flink与Hadoop 2.8.0一起使用,用于S3A路径式访问
我正在尝试使用S3后端和自定义端点。但是,hadoop不支持它-aws@2.7.3,我需要使用至少2.8.0版本。underyling的原因是请求被发送如下
DEBUG [main] (AmazonHttpClient.java:337) - Sending Request: HEAD http://mustafa.localhost:9000 / Headers:
因为fs.s3a.path.style.acces"
在旧版本中无法识别。我希望域保持不变,将bucket名称追加到路径(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)
我应该以某种方式把hadoop-common
排除在弗林克之外吗?使用mvn clean install -DskipTests -Dhadoop.version=2.8.0
从源代码构建flink是可行的,但我希望尽可能通过maven来管理它
# 1 楼答案