gpt4 book ai didi

java - Apache Flink 与 Hadoop 2.8.0 结合使用进行 S3A 路径样式访问

转载 作者:行者123 更新时间:2023-12-02 02:43:34 28 4
gpt4 key购买 nike

我正在尝试将 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 进行管理。

最佳答案

  1. 不要尝试混合 Hadoop JAR,它不会起作用,并且所有支持 JIRA 都将被拒绝。
  2. 在 maven 中,您可以尝试从 flink 导入中排除 Hadoop 2.7 依赖项,然后显式引入 hadoop-client、hadoop-aws...我没有 flink 设置,但这里是 one for Spark旨在让我将 Hadoop 3.0 beta 版本与 Spark 2.2 混合在一起,从 Spark 中排除 hadoop 内容,并从 hadoop 中排除所有 jackson 和 jetty 位。是的,这很痛苦,但这是我能够完全控制最终结果的唯一方法。
  3. 不知道 flink-snapshot,这取决于它是用什么构建的。在邮件列表上询问

关于java - Apache Flink 与 Hadoop 2.8.0 结合使用进行 S3A 路径样式访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029838/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com