Flink 分佈式緩存 廣播變量 區別

區別:

1.廣播變量是基於內存的,是將變量分發到各個worker節點的內存上(避免多次複製,節省內存)

2.分佈式緩存是基於磁盤的,將文件copy到各個節點上,當函數運行時可以在本地文件系統檢索該文件(避免多次複製,提高執行效率)

 

分佈式緩存:

Flink提供了一個分佈式緩存,類似於hadoop,可以使用戶在並行函數中很方便的讀取本地文件,並把它放在taskmanager節點中,防止task重複拉取。
此緩存的工作機制如下:程序註冊一個文件或者目錄(本地或者遠程文件系統,例如hdfs或者s3),通過ExecutionEnvironment註冊緩存文件併爲它起一個名稱。
當程序執行,Flink自動將文件或者目錄複製到所有taskmanager節點的本地文件系統,僅會執行一次。用戶可以通過這個指定的名稱查找文件或者目錄,然後從taskmanager節點的本地文件系統訪問它。

Flink 分佈式緩存 實例

 

Broadcast 廣播變量:

一句話解釋,可以理解爲是一個公共的共享變量,我們可以把一個dataset 數據集廣播出去,然後不同的任務在節點上都能夠獲取到,這個數據在每個節點上只會存在一份。如果不使用broadcast,則在每個節點中的每個任務中都需要拷貝一份dataset數據集,比較浪費內存(也就是一個節點中可能會存在多份dataset數據)。

注意:

1:廣播出去的變量存在於每個節點的內存中,所以這個數據集不能太大,避免發生OOM。因爲廣播出去的數據,會常駐內存,除非程序執行結束。

2:廣播變量在初始化廣播出去以後不支持修改,這樣才能保證每個節點的數據都是一致的。

個人建議:如果數據集在幾十兆或者百兆的時候,可以選擇進行廣播,如果數據集的大小上G的話,就不建議進行廣播了。
在這裏插入圖片描述

Flink 廣播變量 實例

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章