抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


Flink 概述

Apache Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能

Flink 是什么

  • Apache Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能
  • Apache Flink 的前身是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了 Apache Software Foundation 的顶级项目之一
  • 代码主要由 Java 实现,部分代码是 Scala
  • Flink 主要处理的场景就是流数据,批处理只是流数据的一个极限特例

Flink是什么

数据类型

有界流(bounded stream) 批量数据

  • 有界流有定义流的开始,也有定义流的结束。有界流可以在摄取所有数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理。
  • 有界流通常被称为有界数据集,数据的特点为有限不会改变的数据集合

常见的有界流

  • T+1 的销售数据
  • 11 月的汽车销售数量
  • 2018 年全国电影票房

无界流(unbounded stream) 实时数据

  • 有定义流的开始,但没有定义流的结束。它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定顺序摄取数据,例如事件发生的顺序,以便能够推断结果的完整性。
  • 无界流通常被称为无穷数据集,数据的特点为无穷集成的数据集合

常见的无界流

  • 用户与客户断的实时交互数据
  • 应用时产生的日志
  • 金融市场的实时交易记录

有界流和无界流

有界流和无界流

数据运算模型

流式计算

  • 只要数据一直在产生,计算就持续的进行
  • 处理无界数据集

批处理

  • 在预定义的时间内运行计算,当计算完成时释放计算机资源
  • 处理有界数据集

Flink 组件栈

Flink组件栈

Deploy

本地 Local

  • 一个 Java 虚拟机 Single JVM(IDE 中直接运行)

集群 Cluster

  • Standalone(start-cluster.sh)
  • YARN
  • MESOS
  • K8s

云 Cloud

  • GCE google
  • AWS/EC2 amazon
  • MapR
  • Aliyun

Flink部署方式

Flink架构

Program Code

  • Flink 应用程序代码

Job Client

  • 任务执行起点,负责接受用户的程序代码、创建数据流、提交数据流给 Job Manager 、返回结果

Job Manager

  • 作业管理器协调管理程序

Task Manager

  • 从 Job Manager 接受需要部署的 Task

Runtime

Runtime 层提供了支持 Flink 计算的全部核心实现,比如:支持分布式 Stream 处理、JobGraph 到 ExecutionGraph 的映射、调度等等,为上层 API 层提供基础服务

API&Libaries

API&Libaries

核心 APIs

  • DataSet API:批处理,处理有界的数据集
  • DataStream API:流式处理,处理有界或无界的数据集

Table API

  • 以表为中心声明的 DSL
  • selectprojectjoingroup-byaggregate 操作
  • 支持与 DataStream/DataSet 混合使用

SQL

  • Flink 提供的最高级抽象
  • 支持与 DataStream/DataSet 混合使用

面向批处理的 Lib

  • FlinkML 机器学习
  • Gelly 图处理

面向流处理的类库

  • CEP 复杂事件处理
  • SQL-Like Table 的关系操作

Flink 的基本编程模型

Flink的基本编程模型

Flink的基本编程模型

Source 数据输入

  • 基于文件
  • 基于本地集合
  • 基于网络套接字
  • 自定义:Apache Kafka、RabbitMQ

Transformation 数据转换

  • MapFlatMapFilterReduceWindow

Sink 数据输出

  • 写文件
  • 打印
  • socket
  • 自定义:Apache KafkaHDFSMySQL

大数据框架对比(流式 / 实时数据处理)

大数据框架对比

大数据 Lamdba 框架

大数据Lamdba框架

推荐阅读
Flink Flink Flink 编程模型 Flink 编程模型 Flink常用的算子 Flink常用的算子 Flink实时处理Socket数据 Flink实时处理Socket数据 Flink 时间语义 Flink 时间语义 大数据技术概述 大数据技术概述

留言区

Are You A Robot?