一:broadcast徹底解析
1, broadcast就是將資料從乙個節點傳送到其它的節點上;例如
driver
上有一張表,而
executor
中的每個並行執行的
task
(100
萬個task
)都要查詢這張表,那我們通過
broadcast
的方式就只需要往每個
executor
把這張表傳送一次就行了,
executor
中的每個執行的
task
查詢這張唯一的表,而不是每次執行的時候都從
driver
獲得這張表!
2, 這就好像servletcontext的具體作用,只是
broadcast
是分布式的共享資料,預設情況下只要程式在執行
broadcast
變數就會存在,因為
broadcast
在底層是通過
blockmanager
管理的!但是你可以手動指定或者配置具體週期來銷毀
broadcast
變數!
3, broadcast一般用於處理共享配置檔案、通用的
dataset
、常用的資料結構等等;但是不適合存放太大的資料在
broadcast
,broadcast
不會記憶體溢位,因為其資料的儲存的
storagelevel
是memory_and_disk
的方式;雖然如此,我們也不可以放入太大的資料在
broadcast
中,因為網路
io和可能的單點壓力會非常大!
4, 廣播broadcast變數是唯讀變數,最為輕鬆保持了資料的一致性!
5, broadcast的使用:
}} 6, httpbroadcast方式的
broadcast
,最開始的時候資料放在
driver
的本地檔案系統中,
driver
在本地會建立乙個資料夾來存放
broadcast
中的data
,然後啟動
來訪問資料夾中的資料,同時寫入到
blockmanager
(storagelevel
是memory_and_disk
)中獲得
blockid
(broadcastblockid
),當第一次
eexcutor
中的task
要訪問broadcast
變數的時候,會向
driver
通過httpserver
來訪問資料,然後會在
executor
中的blockmanager
中註冊該
broadcast
中的資料
blockmanager
,這樣後需要的
task
需要訪問
broadcast
的變數的時候會首先查詢
blockmanager
中有沒有該資料,如果有就直接使用;
7, broadcastmanager是用來管理
broadcast
,該例項物件是在
sparkcontext
建立sparkenv
的時候建立的:
// called by sparkcontext or executor before using broadcast
private definitialize
() }}
在例項化broadcastmanager的時候會建立
broadcastfactory
工廠來構建具體實際的
broadcast
型別,預設情況下是
torrentbroadcastfactory;
8, httpbroadcast存在單點故障,和網路io效能問題,所以預設使用torrentbroadcast的方式,開始資料在driver中,假設a節點用了資料,b訪問的時候a節點就變成資料來源,依次類推,都是資料來源,當然是被blockmanger進行管理的,資料來源越多,節點壓力會大大降低;
9, torrentbroadcast按照
block_size(
預設是4mb)
講broadcast
中的資料劃分成為不同的
block
,然後將分塊資訊也就是
meta
資訊存放到
driver
的 blockmanager
中,同時會告訴
blockmanagermaster
說明meta
資訊存放完畢
內點法python 內點法
文字理解 內點法屬於約束優化演算法。約束優化演算法的基本思想是 通過引入效用函式的方法將約束優化問題轉換成無約束問題,再利用優化迭代過程不斷地更新效用函式,以使得演算法收斂。內點法 罰函式法的一種 的主要思想是 在可行域的邊界築起一道很高的 圍牆 當迭代點靠近邊界時,目標函式徒然增大,以示懲罰,阻止...
QPixmap loadFromData記憶體洩露
環境 qt 4.6.2 ubuntu 8.10 使用qt4.6.2 中的qpixmap loadfromdata const qbytearray data,const char format 0,qt imageconversionflags flags qt autocolor 發現記憶體有洩露...
內錶 XML互轉 JSON 內錶互轉
轉進內錶 strans try.call transformation id source xml lv text out options clear all 4.7 沒有這個options value handling accept data loss 這個引數也沒有 result data p ...