在远程群集上运行Flink程序

时间:2015-12-07 18:20:56

标签: apache-flink

我在Apache Flink中有一个程序。我测试并在本地机器上运行它,一切正常。要在远程群集上运行该程序,我按照Apache Flink Official Website中的说明进行了必要的更改。

我做了以下更改:

  1. 以下两点

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

  3. 从程序中生成一个薄罐并放入必要的罐子         库除了我的项目jar文件之外的文件夹         myproj.jar

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

     java -cp pathToJarLib \\*  -jar myproj.jar
    
  5. 但是,我得到以下错误,我没有任何线索来解决这个问题。没有相关的日志文件可以帮助我解决这个问题。

    错误:

      

    线程中的异常" main" java.lang.NoClassDefFoundError:org / apache / flink / api / common / functions / MapFunction           at java.lang.Class.getDeclaredMethods0(Native Method)           at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)           在java.lang.Class.getMethod0(Class.java:2813)           在java.lang.Class.getMethod(Class.java:1663)           在sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)           在sun.launcher.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)           at java.security.AccessController.doPrivileged(Native Method)           在java.net.URLClassLoader.findClass(URLClassLoader.java:354)           at java.lang.ClassLoader.loadClass(ClassLoader.java:425)           at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)           at java.lang.ClassLoader.loadClass(ClassLoader.java:358)           ......还有6个

1 个答案:

答案 0 :(得分:3)

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