学习笔记Flink(一)—— Flink简介(介绍、基本概念、应用场景)
生活随笔
收集整理的這篇文章主要介紹了
学习笔记Flink(一)—— Flink简介(介绍、基本概念、应用场景)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Flink介紹
Apache Flink 是一個分布式流批一體化的開源平臺。Flink 的核心是一個提供數據分發、通信以及自動容錯的流計算引擎。Flink 在流計算之上構建批處理,并且原生的支持迭代計算,內存管理以及程序優化。
對 Flink 而言,其所要處理的主要場景就是流數據,批數據只是流數據的一個特例而已。也就是說,Flink 會把所有任務當成流來處理,這也是其最大的特點。
Flink 可以支持本地的快速迭代,以及一些環形的迭代任務。
Apache Flink VS Hadoop/Tez/Spark
每個框架都有各自的差異,以及更適合的場景,沒有哪一個框架可以完美的支持所有的場景,也就不可能有任何一個框架能完全取代另一個,就像 Spark 沒有完全取代 Hadoop。所以我們需要理解不同的其差異,從而更好的使用技術框架來解決實際問題。
二、Flink基本概念
- Flink Cluster
一般情況下,Flink 集群是由一個 Flink Master 和一個或多個 Flink TaskManager 進程組成的分布式系統。 - Flink Master
Flink Master 是 Flink Cluster 的主節點。它包含三個不同的組件:Flink Resource Manager、Flink Dispatcher、運行每個 Flink Job 的 Flink JobManager。 - Flink JobManager
JobManager 是在 Flink Master 運行中的組件之一。JobManager 負責監督單個作業 Task 的執行。以前,整個 Flink Master 都叫做 JobManager。 - Flink TaskManager
TaskManager 是 Flink Cluster 的工作進程。Task 被調度到 TaskManager 上執行。TaskManager 相互通信,只為在后續的 Task 之間交換數據。 - Event
Event 是對應用程序建模的域的狀態更改的聲明。它可以同時為流或批處理應用程序的 input 和 output,也可以單獨是 input 或者 output 中的一種。Event 是特殊類型的 Record。 - Record
Record 是數據集或數據流的組成元素。Operator 和 Function接收 record 作為輸入,并將 record 作為輸出發出。 - Partition
分區是整個數據流或數據集的獨立子集。通過將每個 Record 分配給一個或多個分區,來把數據流或數據集劃分為多個分區。在運行期間,Task 會消費數據流或數據集的分區。改變數據流或數據集分區方式的轉換通常稱為重分區。 - Function
Function 是由用戶實現的,并封裝了 Flink 程序的應用程序邏輯。大多數 Function 都由相應的 Operator 封裝。 - Operator
Logical Graph 的節點。算子執行某種操作,該操作通常由 Function 執行。Source 和 Sink 是數據輸入和數據輸出的特殊算子。 - Logical Graph
Logical Graph 是一種描述流處理程序的高階邏輯有向圖。節點是Operator,邊代表輸入/輸出關系、數據流和數據集中的之一。 - Instance
Instance 常用于描述運行時的特定類型(通常是 Operator 或者 Function)的一個具體實例。由于 Apache Flink 主要是用 Java 編寫的,所以,這與 Java 中的 Instance 或 Object 的定義相對應。在 Apache Flink 的上下文中,parallel instance 也常用于強調同一 Operator 或者 Function 的多個 instance 以并行的方式運行。 - Operator Chain
算子鏈由兩個或多個連續的 Operator 組成,兩者之間沒有任何的重新分區。同一算子鏈內的算子可以彼此直接傳遞 record,而無需通過序列化或 Flink 的網絡棧。 - Task
Task 是 Physical Graph 的節點。它是基本的工作單元,由 Flink 的 runtime 來執行。Task 正好封裝了一個 Operator 或者 Operator Chain 的 parallel instance。 - Physical Graph
Physical graph 是一個在分布式運行時,把 Logical Graph 轉換為可執行的結果。節點是 Task,邊表示數據流或數據集的輸入/輸出關系或 partition。 - Sub Task
Sub-Task 是負責處理數據流 Partition 的 Task。”Sub-Task”強調的是同一個 Operator 或者 Operator Chain 具有多個并行的 Task 。 - Transformation
Transformation 應用于一個或多個數據流或數據集,并產生一個或多個輸出數據流或數據集。Transformation 可能會在每個記錄的基礎上更改數據流或數據集,但也可以只更改其分區或執行聚合。雖然 Operator 和 Function 是 Flink API 的“物理”部分,但 Transformation 只是一個 API 概念。具體來說,大多數(但不是全部)Transformation 是由某些 Operator 實現的。
三、Flink應用場景
1、事件驅動
2、數據分析應用
6. 雙十一銷售大屏
7. 在線實時預測
8. 在線實時推薦
3、數據ETL應用
總結
以上是生活随笔為你收集整理的学习笔记Flink(一)—— Flink简介(介绍、基本概念、应用场景)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记Spark(十)—— Spark
- 下一篇: 学习笔记Flink(二)—— Flink