Apache Flink

来自站长百科
跳转至: 导航、​ 搜索

Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态的计算。Flink被设计成在所有常见集群环境中运行,以内存执行和故障快速恢复为目标。

Flink特点[ ]

  1. 支持事件时间语义和持续数据处理;
  2. 支持有状态的计算;
  3. 支持实时窗口操作;
  4. 支持exactly-once语义;
  5. 支持增量检查点和保存点;
  6. 支持异步I/O和回调。

Flink结构[ ]

Client[ ]

Flink Client主要给用户提供向Flink系统提交用户任务(流式作业)的能力。

TaskManager[ ]

Flink系统的业务执行节点,执行具体的用户任务。TaskManager可以有多个,各个TaskManager都平等。

JobManager[ ]

Flink系统的管理节点,管理所有的TaskManager,并决策用户任务在哪些TaskManager执行。JobManager在HA模式下可以有多个,但只有一个主JobManager。

Flink原理[ ]

1、Stream & Transformation & Operator

用户实现的Flink程序是由Stream和Transformation这两个基本构建块组成。

Stream是一个中间结果数据,而Transformation是一个操作,它对一个或多个输入Stream进行计算处理,输出一个或多个结果Stream。

当一个Flink程序被执行的时候,它会被映射为Streaming Dataflow。一个Streaming Dataflow是由一组Stream和Transformation Operator组成,它类似于一个DAG图,在启动的时候从一个或多个Source Operator开始,结束于一个或多个Sink Operator。

2、Pipeline Dataflow

在Flink中,程序是并行和分布式的方式运行。一个Stream可以被分成多个Stream分区(Stream Partitions),一个Operator可以被分成多个Operator Subtask。

Flink与Yarn的关系[ ]

  • Flink Yarn Client首先会检验是否有足够的资源来启动Yarn集群,如果资源足够,会将Jar包、配置文件等上传到HDFS。
  • Flink Yarn Client首先与Yarn Resource Manager进行通信,申请启动Application Master(以下简称AM)的Container,并启动AM。等所有的Yarn的Node Manager将HDFS上的Jar包、配置文件下载后,则表示AM启动成功。
  • AM在启动的过程中会和Yarn的RM进行交互,向RM申请需要的Task Manager Container,申请到Task Manager Container后,启动TaskManager进程。
  • 在Flink Yarn的集群中,AM与Flink JobManager在同一个Container中。AM会将JobManager的RPC地址通过HDFS共享的方式通知各个TaskManager,TaskManager启动成功后,会向JobManager注册。
  • 等所有TaskManager都向JobManager注册成功后,Flink基于Yarn的集群启动成功,Flink Yarn Client就可以提交Flink Job到Flink JobManager,并进行后续的映射、调度和计算处理。

相关条目[ ]