Flink 快速入门

什么是 Flink

Apache Flink 是一个分布式计算框架,它能够对有界和无界的数据流进行高效的处理。

  • 有界数据:即批数据(离线数据),具有已定义的起止位置,属于静态数据集
  • 无界数据:即流式数据(实时数据),无已定义的结束位置,属于动态数据集

image.png

Flink 特点

在官方的介绍中,Flink 具有以下优势:

  • Deploy Applications Anywhere:Flink 集成了所有常见的集群资源管理器,例如 Hadoop YARNApache MesosKubernetes,也可以设置为作为独立集群运行
  • Run Applications at any Scale:Flink 的设计目标就是为了支撑任意规模、有状态流应用程序的运行,应用程序被并行化为分布式集群中的数千个任务,因此,可以利用几乎无限量的 CPU、主内存、磁盘和网络 IO
  • Leverage In-Memory Performance:在 Flink 中,任务状态始终保存在内存中,因此,任务通过访问本地的状态(通常在内存中)来执行所有计算,从而产生非常低的处理延迟

image.png
综合所有方面来看,Flink 具有以下特点:

  • 支持 Scala 和 Java API
  • 支持批流一体
  • 同时支持高吞吐、低延迟、高性能
  • 支持事件时间和处理时间语义,基于事件时间语义能够针对无序事件提供精确、一致的结果;基于处理时间语义能够用在具有极低延迟需求的应用中
  • 支持不同时间语义下的窗口编程
  • 支持有状态计算
  • 支持具有 Backpressure 功能的持续流模型
  • 提供精确一次(exactly once)的状态一致性保障
  • Flink 在 JVM 内部实现了自己的内存管理
  • 基于轻量级的分布式快照 CheckPoint 的容错
  • 支持 SavePoint 机制,手工触发,适用于升级
  • 支持高可用性配置(无单点失效),与 k8s、Yarn、Apache Mesos 紧密集成。
  • 提供常见存储系统的连接器:Kafka,Elasticsearch 等
  • 提供详细、可自由定制的系统及应用指标(metrics)集合,用于提前定位和响应问题

与其他框架的对比

指标/框架 Flink Spark Storm Storm-Trident
处理模型 Native Micro-Batch Native Micro-Batch
处理语义 Exactly-Once Exactly-Once At-Least-Once Exactly-Once
容错 CheckPoint CheckPoint Ack Ack
吞吐量 High High Low Medium
延迟 Low High High Very Low

Flink 集群架构

Flink 的架构与大数据中常见的分布式架构(如 HDFS、HBase、Spark 等)相似,都遵循主从模式。

下图为官方提供的 Flink 架构图:
image.png
图中蓝色部分为 Flink 核心组件:

组件名 组件职责 实现
Flink Client Flink 客户端,可以将作业提交给 JobManager Command Line Interface、REST Endpoint、SQL Client、Python REPL、Scala REPL
JobManager Flink 的中心协调组件 Standalone、Kubernetes、YARN、Mesos
TaskManager 执行 Flink 作业的进程

橙色部分为外部支撑组件:

组件名 组件职责 实现
High Availability Service Provider 高可用性服务提供商,支撑 JobManager 运行在高可用模式下 Zookeeper、Kubernetes HA
File Storage and Persistency 外部文件系统(用于支撑 checkpoint 等功能) HDFS、Alluxio、阿里云 OSS
Resource Provider 资源提供者 Yarn、Mesos、Kubernetes
Metrics Storage Flink 指标模块,用于暴露运行时指标 JMX、InfluxDB、Prometheus

Flink 核心概念

概念 说明
Task​ 一个阶段多个功能相同 subTask 的集合,类似于 Spark 中的 TaskSet。
SubTask​ Flink 中任务最小执行单元,是一个 Java 类的实例,这个 Java 类中有属性和方法,完成具体的计算逻辑。
Slot​ Flink 中计算资源进行隔离的单元,一个 Slot 中可以运行多个 subTask,但是这些 subTask 必须是来自同一个 application 的不同阶段的 subTask。
State​ Flink 在运行过程中计算的中间结果。
Source​ Flink 作业的数据源,可以是本地文件、Socket、Kafka 等。
Transformation​ 负责数据处理的算子&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值