我在尝试在Flink集群上集成Hadoop 3.x版本时遇到了一些问题。我的目标是使用HDFS作为永久存储和存储检查点。我目前使用的是Flink 1.13.1和HDFS 3.3.1。我在尝试提交作业时遇到的错误是HDFS不支持作为文件系统。在独立版本中,通过在本地计算机上指定 HADOOP_CLASSPATH 解决了此错误。下一步,我在集群中使用的所有计算机上应用了上述解决方案,在独立版本中,我成功地在所有这些计算机上提交了作业,而没有遇到任何问题。但是,当我开始修改配置来设置我的集群(通过指定我的机器的IP)时,这个问题再次出现。2我遗漏了什么?
在Hadoop 2.x中,官方flink下载页面中提供了预捆绑的jar文件,可以解决过去的类似问题,但Hadoop 3.x版本却不是这样
2条答案
按热度按时间hc2pp10m1#
在集群中的每台计算机上设置
HADOOP_CLASSPATH
就足够了。rlcwz9us2#
对于任何仍在为类似问题而挣扎的人来说,大卫提出的答案最终对我起到了作用。我遗漏的细节是环境变量的定义。
在我最初的尝试中,我使用
.bashrc
脚本来永久定义我的环境变量。由于脚本的作用域,这在独立集群中是有效的,而在分布式集群中则不是这样。实际上,对我有效的是在/etc/profile
中定义我的变量(和 $HADOOP_CLASSPATH)我还设法找到了另一种解决方案,同时还在努力解决HADOOP_CLASSPATH问题。正如我在第一篇文章中提到的,在Hadoop 2.x的官方Flink下载页面中有预捆绑的jar文件来支持HDFS集成,这在Hadoop 3.x中不是这样的。我找到了下面的Maven存储库页面,在测试了所有现有的jar之后,我设法找到了一个在我的情况下工作的jar。更准确地说,对于Hadoop 3.3.1,
3.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