MHuiG

「看庭前花开花落,望天上云卷云舒」

Overview

# Flink 概述

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

## Flink 是什么

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

## 数据类型

### 有界流（bounded stream） 批量数据

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

#### 常见的有界流

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

### 无界流（unbounded stream） 实时数据

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

#### 常见的无界流

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

### 有界流和无界流

## 数据运算模型

### 流式计算

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

### 批处理

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

### Flink 组件栈

### Deploy

#### 本地 Local

- 一个 Java 虚拟机 `Single JVM`（IDE 中直接运行）

  #### 集群 Cluster

- Standalone（start-cluster.sh）
- YARN
- MESOS
- K8s

  #### 云 Cloud

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

#### Program Code

- Flink 应用程序代码

  #### Job Client

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

  #### Job Manager

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

  #### Task Manager

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

### Runtime

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

### API&Libaries

#### 核心 APIs

- `DataSet API`：批处理，处理有界的数据集
- `DataStream API`：流式处理，处理有界或无界的数据集

  #### Table API

- 以表为中心声明的 DSL
- `select`、`project`、`join`、`group-by`、`aggregate` 操作
- 支持与 `DataStream/DataSet` 混合使用

  #### SQL

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

  #### 面向批处理的 Lib

- `FlinkML` 机器学习
- `Gelly` 图处理

  #### 面向流处理的类库

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

## Flink 的基本编程模型

### Source 数据输入

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

  ### Transformation 数据转换

- `Map`、`FlatMap`、`Filter`、`Reduce`、`Window`

  ### Sink 数据输出

- 写文件
- 打印
- `socket`
- 自定义：`Apache Kafka`、`HDFS`、`MySQL`

## 大数据框架对比（流式 / 实时数据处理）

## 大数据 Lamdba 框架

Flink

.fa-secondary{opacity:.4} Flink Flink .prev-next{ display: none !important; }

Flink 编程模型

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

留言区

Notes
Flink
本文目录
<pjax>
</pjax>
<pjax></pjax>
<pjax> Are you Robot?</pjax>