image.png

一、Environment

getExecutionEnvironment

创建一个执行环境,表示当前执行程序的上下文。 如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境,也就是说,getExecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。

  1. // 有界流
  2. ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
  3. // 无界流
  4. StreamExecutionEnvironment stremEnv = StreamExecutionEnvironment.getExecutionEnvironment();

如果没有设置并行度,会以flink-conf.yaml中的配置为准,默认是1

  1. # The parallelism used for programs that did not specify and other parallelism.
  2. parallelism.default: 1


createLocalEnvironment

返回本地执行环境,需要在调用时指定默认的并行度。

  1. LocalEnvironment localEnv = ExecutionEnvironment.createLocalEnvironment(1);

createRemoteEnvironment

返回集群执行环境,将Jar提交到远程服务器。需要在调用时指定JobManager的IP和端口号,并指定要在集群中运行的Jar包。

  1. ExecutionEnvironment remoteEnv = ExecutionEnvironment.createRemoteEnvironment("ip", 6123, "/Users/wells/Downloads/wordcount.jar");

二、Flink程序的结构

image.png

Flink 应用程序结构就是如上图所示:

  • Source: 数据源,Flink 在流处理和批处理上的 source 大概有 4 类:
    • 基于本地集合的 source
    • 基于文件的 source
    • 基于网络套接字的 source
    • 自定义的 source:自定义的 source 常见的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,当然你也可以定义自己的 source。
  • Transformation:数据转换的各种操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split、Select / Project 等,操作很多,可以将数据转换计算成你想要的数据。
  • Sink:接收器,Flink 将转换计算后的数据发送的地点 ,你可能需要存储下来,Flink 常见的 Sink 大概有如下几类:
    • 写入文件
    • 打印出来
    • 写入 socket
    • 自定义的 sink :自定义的 sink 常见的有 Apache kafka、RabbitMQ、MySQL、ElasticSearch、Apache Cassandra、Hadoop FileSystem 等,同理你也可以定义自己的 Sink。

      2.1、Source

      Kafka、Redis、ES、JDBC API:https://www.yuque.com/wells/big.data/vh1lyw

2.2、Transform

算子用法包括:Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Split、Select
https://github.com/Wells-Lee/flink-demo/tree/master/src/main/java/com/wells/flink/demo/api/transform

2.3、sink

kafka、redis、es、jdbc api:https://www.yuque.com/wells/big.data/qben6c

三、Time And Window

https://www.yuque.com/wells/big.data/ic4oh2