集群执行

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

命令行界面(Interface)

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

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

远程环境(Remote Environment)

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

Maven Dependency

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

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients_2.11</artifactId>
  <version>1.12-SNAPSHOT</version>
</dependency>

示例

下面演示了 RemoteEnvironment 的用法:

public static void main(String[] args) throws Exception {
    ExecutionEnvironment env = ExecutionEnvironment
        .createRemoteEnvironment("flink-jobmanager", 8081, "/home/user/udfs.jar");

    DataSet<String> data = env.readTextFile("hdfs://path/to/file");

    data
        .filter(new FilterFunction<String>() {
            public boolean filter(String value) {
                return value.startsWith("http://");
            }
        })
        .writeAsText("hdfs://path/to/result");

    env.execute();
}

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

Back to top