集群执行

Flink 程序可以分布式运行在多机器集群上。有两种方式可以将程序提交到集群上执行:

命令行界面(Interface)

命令行界面使你可以将打包的程序(JARs)提交到集群(或单机设置)。

有关详细信息,请参阅命令行界面文档。

远程环境(Remote Environment)

远程环境使你可以直接在集群上执行 Flink Java 程序。远程环境指向你要执行程序的集群。

Maven Dependency

如果将程序作为 Maven 项目开发,则必须添加 flink-clients 模块的依赖:

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-clients</artifactId>
  4. <version>1.16.0</version>
  5. </dependency>

示例

下面演示了 RemoteEnvironment 的用法:

  1. public static void main(String[] args) throws Exception {
  2. ExecutionEnvironment env = ExecutionEnvironment
  3. .createRemoteEnvironment("flink-jobmanager", 8081, "/home/user/udfs.jar");
  4. DataSet<String> data = env.readTextFile("hdfs://path/to/file");
  5. data
  6. .filter(new FilterFunction<String>() {
  7. public boolean filter(String value) {
  8. return value.startsWith("http://");
  9. }
  10. })
  11. .writeAsText("hdfs://path/to/result");
  12. env.execute();
  13. }

请注意,该程序包含用户自定义代码,因此需要一个带有附加代码类的 JAR 文件。远程环境的构造函数使用 JAR 文件的路径进行构造。