2、flink计算任务可以在哪些环境中运行

目录

1. 说明

2. 初始化 执行环境对象

2.1 getExecutionEnvironment(推荐)

2.2 createLocalEnvironment (本地环境对象)

2.3  createRemoteEnvironment (远程环境对象)


1、说明

Flink计算任务是用`特定的语言(java、scala、python、sql)`,根据业务需求编写的代码

最终需要将编写好的代码发送到可运行的环境中,计算出所需要的结果

Flink计算任务支持在多种环境中运行:

        集群环境:Yarn、Standalone、K8s

        本地环境(调试使用)

这就需要提交Flink计算任务时,为其找到一个`合适`的执行环境对象


2、初始化 执行环境对象

2.1 getExecutionEnvironment(推荐)

语法:

通过 配置文件对象 自动获取相适应 的 执行环境对象
           如果在IDE中执行 或者 作为一般的java程序执行 ,则返回 本地执行环境
           如果你将 jar包提交到集群, 则返回 集群执行环境

public static StreamExecutionEnvironment getExecutionEnvironment() {
    return getExecutionEnvironment(new Configuration());
}


2.2 createLocalEnvironment (本地环境对象)

语法:

创建 本地执行环境对象
tips:
       1. 在本地的JVM中 以多线程的方式执行
       2. 不指定并行度时,用当前机器CPU核数作为并行度


2.3  createRemoteEnvironment (远程环境对象)

语法:

创建 远程执行环境对象
tips:
    1.不指定并行度时,将使用 flink-conf.yaml 设置的并行度 parallelism.default=1


3、代码示例

开发语言:Java1.8

Flink版本:1.17.0

package com.baidu.datastream.env;

import org.apache.flink.streaming.api.environment.LocalStreamEnvironment;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

/*
 * TODO 思考:flink的计算任务(flink application) 可以在那些环境运行呢?
 *      1.集群环境:yarn、Standalone、K8s
 *      2.本地环境:本地的JVM中
 * */

public class ExecutionEnvironment {
    public static void main(String[] args) {
        // 方式1
        //getExecutionEnvironment();
        // 方式2
        //createLocalEnvironment();
        // 方式3
        createRemoteEnvironment();
    }

    // 方式1(推荐): getExecutionEnvironment 方法
    public static void getExecutionEnvironment() {
        /*
         * TODO 根据运行的上下文(配置文件),来判断当前运行环境
         *     如果在IDE中执行 或者 作为一般的java程序执行 ,则返回 本地执行环境
         *     如果你将 jar包提交到集群, 则返回 集群执行环境
         *
         * */
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        System.out.println("并行度: " + env.getParallelism());
    }

    // 方式2(不推荐): createLocalEnvironment 方法
    public static void createLocalEnvironment() {
        /*
         * TODO 返回本地执行环境
         * */
        LocalStreamEnvironment localEnv = StreamExecutionEnvironment.createLocalEnvironment();
        System.out.println("并行度: " + localEnv.getParallelism());
    }

    // 方式3(不推荐): createRemoteEnvironment 方法
    public static void createRemoteEnvironment() {
        /*
         * TODO 返回集群执行环境
         * */
        StreamExecutionEnvironment remoteEnv = StreamExecutionEnvironment.createRemoteEnvironment(
                "localhost"
                , 8081
                , 8
                , "../FlinkAPI/target/FlinkAPI-1.0-SNAPSHOT.jar"
        );
        System.out.println("并行度: " + remoteEnv.getParallelism());
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42845827/article/details/129842367
今日推荐