Flink配置执行环境和参数

一、配置DataStream API、DataSet API的执行环境

  • 执行环境(Execution Environment)表示当前执行程序的上下文,它决定了Flink应用程序在什么执行环境(本地或集群)中执行。

  • 不同的执行环境也决定了应用程序的不同类型。批处理和流处理作业分别使用不同的执行环境。

  • 创建执行环境的类:

    • StreamExecutionEnvironment:用来创建流处理执行环境
    • ExecutionEnvironment:用来创建批处理执行环境
  • 获取执行环境的方法:

    • getExecutionEnvironment():该方法自动获取当前执行环境,是常用的创建执行环境的方式。如果没有设置并行度,则以flink-conf.yaml文件中配置的并行度为准,默认值是1

    • createLocalEnvironment():该方法返回本地执行环境,需要在调用时指定并行度。如果将编译后的应用程序发布到集群中,则需要把源码改成远程执行环境

    • createRemoteEnvironment():该方法返回集群的执行环境,但需要在调用时指定作业管理器的IP地址、端口号和集群中运行的JAR包位置等。

      StreamExecutionEnvironment.createRemoteEnvironment("JobManagerHost",6021,5,"/flink_application.jar");
      

二、配置Table API、SQL的执行环境

  • BatchTableEnvironment类。该类用来创建Table API、SQL的批数据处理执行环境

    // 获取批数据处理执行环境
    ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    // 创建Table API、SQL程序的执行环境
    BatchTableEnvironment tEnv = BatchTableEnvironment.create(env);
    
  • StreamTableEnvironment类。该类用来创建Table API、SQL的流数据处理执行环境

    // 获取流数据处理的执行环境
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    // 创建Table API、SQL程序的执行环境
    StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
    

三、配置执行环境参数

  • setParallelism():用来设置并行度。在此设置的并行度将使所有算子与并行实例一起运行。此方法将覆盖执行环境中的默认并行度

    • LocalStraemEnvironment类默认使用等于硬件上下文(CPU内核/线程)数量的值。在通过命令行客户端执行程序时,才使用在这里设置的并行度
  • setBufferTimeout():用来设置刷新输出缓冲区的最大时间频率(ms)。在默认情况下,输出缓冲区会频繁刷新,以提供低延迟

    • 正整数:以该数值定期触发,优势是提高了吞吐量,劣势是增加了延迟
    • 0:在每条记录后触发,从而最大限度的减少等待时间,这会产生性能的损耗
    • -1:缓存中的数据一满就会被发送,这回移除超时机制
  • setMaxParallelism():用来设置最大并行度,以指定动态缩放的上限。

    • 最大并行度的范围:0<maxParallelism<=2^15-1
  • setStateBackend():用于设置状态后端。Flink内置了以下3种状态后端

    • MemoryStateBackend:用内存存储状态(此为默认值),用于小状态,本地调试
    • FsStateBackend:用文件系统存储状态,用于大状态、长窗口、高可用场景
    • RocksDBStateBackend:用Rocks数据库存储状态,用于超大状态、长窗口、可增量检查点和高可用场景
  • setStreamTimeCharacteristic():用来设置应用程序处理数据流的时间特性。Flink定义了以下3类时间特性的值:

    • ProcessingTime:处理时间
    • Ingestion Time:摄入时间
    • EventTime:事件时间
  • setRestartStrategy():用于设置故障重启策略。当任务的失败率上升到一定的程度时,Flink认为本次任务最终是失败的

    // 最大失败次数为2,衡量失败次数的时间间隔是1min,也可以将单位设置为s或ms
    env.setRestartStrategy(RestartStrategies.failureRateRestart(2, Time.of(1, TimeUnit.MINUTES)));
    

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我理解错了您的问题。如果您想要连接 Flink 集群,可以使用 Flink 提供的 `StreamExecutionEnvironment` 或 `ExecutionEnvironment` 类来创建执行环境,并设置相应的配置参数。 下面是一个示例代码,展示如何连接 Flink 集群: ```java import org.apache.flink.api.java.ExecutionEnvironment; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; public class FlinkConnectionTest { public static void main(String[] args) throws Exception { // 创建批处理执行环境 final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); // 创建流处理执行环境 final StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment(); // 设置连接参数 env.setParallelism(1); // 设置并行度 env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3, Time.seconds(5))); // 设置重启策略 env.getConfig().disableSysoutLogging(); // 禁用系统输出日志 // 创建数据源 DataStream<Tuple2<String, Integer>> dataStream = streamEnv.fromElements( new Tuple2<>("A", 1), new Tuple2<>("B", 2), new Tuple2<>("C", 3) ); // 执行任务 streamEnv.execute("Flink Connection Test"); } } ``` 在上述代码中,您可以根据实际需求设置连接参数,如并行度、重启策略等。然后,创建数据源并执行任务。 请确保已经正确导入 Flink 的相关库,并根据您的实际需求设置连接参数和创建数据源。希望对您有所帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值