在 Flink 集群上集成 Hadoop 3.x 时出现问题

Problems Integrating Hadoop 3.x on Flink cluster

我在尝试将 Hadoop 3.x 版本集成到 Flink 集群时遇到了一些问题。我的目标是使用 HDFS 作为持久存储和存储检查点。我目前正在使用 Flink 1.13.1HDFS 3.3.1。我在尝试提交作业时遇到的错误是不支持将 HDFS 作为文件系统。在独立版本中,通过在我的本地计算机上指定 HADOOP_CLASSPATH 解决了这个错误。下一步,我在集群中使用的所有机器上应用了上述解决方案,在独立版本中,我成功地在所有机器上成功提交了我的作业,没有遇到任何问题。然而,当我开始修改配置以设置我的集群时(通过指定我的机器的 IP),这个问题再次出现。我缺少什么?

在 Hadoop 2.x 中,官方 flink 下载页面中有预捆绑的 jar 文件,过去可以解决类似的问题,但 Hadoop 3.x 版本[=11] 不是这样=]

在集群中的每台机器上设置 HADOOP_CLASSPATH 应该就足够了。

对于仍在为类似问题苦苦挣扎的任何人,David 提出的答案最终对我有用。我缺少的细节是在环境变量的定义中。

在最初的尝试中,我使用 .bashrc 脚本来永久定义我的环境变量。由于脚本的范围,这适用于独立集群,而分布式集群则不然。真正对我有用的是在 /etc/profile

中定义我的变量(和 $HADOOP_CLASSPATH

在与 HADOOP_CLASSPATH 斗争时,我还设法找到了另一个解决方案。正如我在初始 post 中提到的,在 Hadoop 2.x 中,官方 Flink 下载页面中有预先捆绑的 jar 文件以支持 HDFS 集成,而在 Hadoop 3.x 中则没有。我找到了以下 Maven 存储库页面,在测试了所有现有的 jar 之后,我设法找到了一个适用于我的案例的。更准确地说,对于 Hadoop 3.3.13.1.1.7.2.8.0-224-9.0 jar(将 jar 放在 $FLINK_HOME/lib 中)有效。虽然它不是“官方解决方案”,但似乎可以解决问题。

https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-3-uber?repo=cloudera-repos