apache-flink与hadoop2.8.0一起用于s3a路径风格的访问

hsvhsicv  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(385)

我正在尝试使用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-aws2.8.0 对于最新客户端,它会导致以下错误:
据我所知,我需要 hadoop-aws@2.7.2 以及https://ci.apache.org/projects/flink/flink-docs-release-1.3/setup/aws.html#provide-s3文件系统依赖关系

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 从Flink那里?从源头上建造flink mvn clean install -DskipTests -Dhadoop.version=2.8.0 工作,但我想管理它通过maven尽可能多。

zpqajqem

zpqajqem1#

不要尝试混用hadoopjar,它不会工作,所有支持jira的都会被拒绝。
在maven中,您可以尝试从flink导入中排除hadoop2.7依赖项,然后显式地拉入hadoopclient、hadoopaws。。。我没有flink的设置,但是这里有一个spark的设置,可以让我在Hadoop3.0测试版和Spark2.2中混合使用,不包括spark的hadoop内容,以及hadoop中所有的jackson和jetty部分。是的,很痛,但这是我唯一能完全控制自己的结局的方法。
不知道flink snapshot,这取决于它是用什么构建的。在邮件列表上询问

相关问题