Flink原理與實現 理解Flink中的計算資源

2021-12-30 10:25:22 字數 897 閱讀 3953

本文所討論的計算資源是指用來執行 task 的資源,是乙個邏輯概念。本文會介紹 flink 計算資源相關的一些核心概念,如:slot、slotsharinggroup、colocationgroup、chain等。並會著重討論 flink 如何對計算資源進行管理和隔離,如何將計算資源利用率最大化等等。理解 flink 中的計算資源對於理解 job 如何在集群中執行的有很大的幫助,也有利於我們更透徹。

本文所討論的計算資源是指用來執行 task 的資源,是乙個邏輯概念。本文會介紹 flink 計算資源相關的一些核心概念,如:slot、slotsharinggroup、colocationgroup、chain等。並會著重討論 flink 如何對計算資源進行管理和隔離,如何將計算資源利用率最大化等等。理解 flink 中的計算資源對於理解 job 如何在集群中執行的有很大的幫助,也有利於我們更透徹地理解 flink 原理,更快速地定位問題。

為了更高效地分布式執行,flink會盡可能地將operator的subtask鏈結(chain)在一起形成task。每個task在乙個執行緒中執行。將operators鏈結成task是非常有效的優化:它能減少執行緒之間的切換,減少訊息的序列化/反序列化,減少資料在緩衝區的交換,減少了延遲的同時提高整體的吞吐量。

我們仍以經典的 wordcount 為例(參考前文job例子),下面這幅圖,展示了source並行度為1,flatmap、keyaggregation、sink並行度均為2,最終以5個並行的執行緒來執行的優化過程。

上圖中將keyaggregation和sink兩個operator進行了合併,因為這兩個合併後並不會改變整體的拓撲結構。但是,並不是任意兩個 operator 就能 chain 一起的。其條件還是很苛刻的:

Flink原理與實現 詳解Flink中的狀態管理

上面flink原理與實現的文章中,有引用word count的例子,但是都沒有包含狀態管理。也就是說,如果乙個task在處理過程中掛掉了,那麼它在記憶體中的狀態都會丟失,所有的資料都需要重新計算。從容錯和訊息處理的語義上 at least once,exactly once flink引入了stat...

流式處理新秀Flink原理與實踐

隨著大資料技術在各行各業的廣泛應用,要求能對海量資料進行實時處理的需求越來越多,同時資料處理的業務邏輯也越來越複雜,傳統的批處理方式和早期的流式處理框架也越來越難以在延遲性 吞吐量 容錯能力以及使用便捷性等方面滿足業務日益苛刻的要求。我們主要從以下幾個部分來看 一.流式處理的背景 1.流式處理的背景...

Flink學習筆記之Metrics原理與實戰

目錄 1.概述 2.metrics基礎知識介紹 2.1 metric types 2.2 metric group 3.metrics的使用 3.1 system metrics 3.2 使用者自定義metrics 3.3 獲取metrics的方式 3.4 metric reporter 4.met...