在远程群集上运行Flink程序



我在Apache Flink中有一个程序。我在本地机器上测试并运行了它,一切都很好。为了在远程集群上运行该程序,我做了必要的更改,如ApacheFlink官方网站中所述。

我做了以下更改:

  1. 下方的两点

    • ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    • ExecutionEnvironment env = ExecutionEnvironment.createRemoteEnvironment("taskManagerName",
      portNo,paralelismNo);
  2. 修复读取输入文件和写入输出所需的路径。

  3. 从程序中生成一个薄jar,并放入必要的jar库添加到我的项目jar文件之外的一个名为myproj.jar

  4. 将数据、jar库和myproj.jar复制到集群中并在集群上远程运行以下命令:

     java -cp pathToJarLib \*  -jar myproj.jar
    

但是,我得到了以下错误,我没有任何线索来解决这个问题。没有相关的日志文件可以帮助我解决这个问题。

错误:

线程"main"java.lang.NoClassDefFoundError:org/apache/flink/api/common/functions/MapFunction中出现异常位于java.lang.Class.getDeclaredMethods0(本机方法)位于java.lang.Class.privateGetDeclaredMethods(Class.java:2570)位于java.lang.Class.getMethod0(Class.java:2813)位于java.lang.Class.getMethod(Class.java:1663)在sun.selauncher.LauncherHelper.getMainMethod(LauncherHelper.java:494)在sun.selauncher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)引起原因:java.lang.ClassNotFoundException:org.apache.flink.api.common.functions.MapFunction位于java.net.URLClassLoader$1.run(URLClassLoader.java:366)位于java.net.URLClassLoader$1.run(URLClassLoader.java:355)位于java.security.AccessController.doPrivileged(本机方法)位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)在sun.mic.Launcher$AppClassLoader.loadClass(Launcher.java:308)位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)…还有6个

您的类路径显然不完整。尝试通过bin/flink run myproj.jar提交。这将正确设置类路径。

相关内容

  • 没有找到相关文章

最新更新