日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学习笔记Flink(二)—— Flink数据流模型、时间窗口和核心概念

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记Flink(二)—— Flink数据流模型、时间窗口和核心概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Flink編程數據流模型

1.1、Flink – API封裝

Flink 提供不同級別的API封裝來支持流/批處理應用程序。


1.2、Flink-編程數據流

  • Source:一個不會結束的數據記錄流。
  • Transformations:使用一個或多個數據流作為輸入,生成一個或多個數據流結果。
  • Sink:輸出數據流。

1.3、Flink-并行數據流

  • One-to-One stream
  • Redistributing

1.4、Flink-Windows

聚合操作(如counts,sums)在streams上的操作和batch processing上面有很大不同。例如,統計流中所有記錄的個數是不可能的,因為一般流是不會結束的。所以在流上執行聚合操作,例如count,那么是會被指定為windows范圍,例如最近5分鐘的count或sum最近的100條記錄。

Windows可以時間驅動(每30秒)或數據驅動(每100個記錄)


1.5、Flink-Time

  • Event Time
    數據生成的時間。
  • Ingestion time
    數據進入Flink的時間。
  • Processing Time
    使用time-based 操作時的時間。

二、Flink核心概念

2.1、任務和算子鏈

分布式計算中,Flink 將算子(operator)的 subtask 鏈接(chain)成 task。

每個 task 由一個線程執行。把算子鏈接成 tasks 能夠減少線程間切換和緩沖的開銷,在降低延遲的同時提高了整體吞吐量。

2.2、JobManager,TaskManager,Clients

JobManagers (也稱為 masters)協調分布式計算。它們負責調度任務、協調 checkpoints、協調故障恢復等。每個 Job 至少會有一個 JobManager。高可用部署下會有多個 JobManagers,其中一個作為 leader,其余處于 standby 狀態。

TaskManagers(也稱為 workers)執行 dataflow 中的 tasks(準確來說是 subtasks ),并且緩存和交換數據 streams。每個 Job 至少會有一個 TaskManager。

客戶端雖然不是運行時(runtime)和作業執行時的一部分,但它是被用作準備和提交 dataflow 到 JobManager 的。提交完成之后,客戶端可以斷開連接,也可以保持連接來接收進度報告。

2.3、Task Slots和資源

每個worker(TaskManager)都是一個JVM進程,并且可以在不同的線程中執行一個或多個 subtasks。為了控制 worker 接收 task 的數量,worker 擁有所謂的task slots(至少一個)。

每個task slots代表TaskManager的一份固定資源子集。例如,具有三個slots的 TaskManager 會將其管理的內存資源分成三等份給每個slot。劃分資源意味著subtask之間不會競爭資源,但是也意味著它們只擁有固定的資源。(資源并不包含CPU資源,當前slots之間只是劃分任務的內存資源。)

通過調整slot的數量,用戶可以決定subtasks的隔離方式。每個TaskManager有一個slot意味著每組task在一個單獨的JVM中運行(例如,在一個單獨的容器中啟動)。擁有多個slots意味著多個subtasks共享同一個JVM。Tasks在同一個 JVM 中共享 TCP 連接(通過多路復用技術)和心跳信息(heartbeat messages)。它們還可能共享數據集和數據結構,從而降低每個 task 的開銷。

默認情況下,Flink允許subtasks共享 slots,即使它們是不同tasks的subtasks,只要它們來自同一個job。因此,一個slot可能會負責這個 job 的整個管道(pipeline)。

允許 slot sharing 有兩個好處:

  • Flink 集群需要與job中使用的最高并行度一樣多的 slots。這樣不需要計算作業總共包含多少個tasks(具有不同并行度)。

  • 更好的資源利用率。在沒有slot sharing的情況下,簡單的 subtasks(source/map())將會占用和復雜的subtasks(window)一樣多的資源。通過slot sharing,將示例中的并行度從2增加到6可以充分利用slot的資源,同時確保繁重的 subtask 在 TaskManagers 之間公平地獲取資源。

  • 總結

    以上是生活随笔為你收集整理的学习笔记Flink(二)—— Flink数据流模型、时间窗口和核心概念的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。