【问题标题】:Apache Flink using with Hadoop 2.8.0 for S3A Path Style AccessApache Flink 与 Hadoop 2.8.0 一起用于 S3A 路径样式访问
【发布时间】: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.2https://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


【解决方案1】:
  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,它取决于它是用什么构建的。在邮件列表中询问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 2019-05-24
    • 2022-11-25
    • 2015-08-03
    • 2020-08-16
    • 1970-01-01
    • 2023-01-21
    相关资源
    最近更新 更多