spark(三):blockManager、broadcast、cache、checkpoint

blockManager

spark(三):blockManager、broadcast、cache、checkpoint

10年積累的成都做網站、成都網站設計經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有安康免費網站建設讓你可以放心的選擇與我們合作。

  1. Driver和executor上分別都會啟動blockManager,其中driver上擁有所有executor上的blockManager的引用;所有executor上的blockManager都持有driver上的blockManager的引用;
  2. blockManagerSlave會不斷向blockManagerMaster發送心跳,更新block信息等;
  3. BlockManager對象被創建的時候會創建出MemoryStore和DiskStore對象用以存取block,如果內存中擁有足夠的內存, 就 使用 MemoryStore存儲, 如果 不夠, 就 spill 到 磁盤中, 通過 DiskStore進行存儲。
  4. DiskStore 有一個DiskBlockManager,DiskBlockManager 主要用來創建并持有邏輯 blocks 與磁盤上的 blocks之間的映射,一個邏輯 block 通過 BlockId 映射到一個磁盤上的文件。 在 DiskStore 中會調用 diskManager.getFile 方法, 如果子文件夾不存在,會進行創建, 文件夾的命名方式為(spark-local-yyyyMMddHHmmss-xxxx, xxxx是一個隨機數), 所有的block都會存儲在所創建的folder里面。
  5. MemoryStore 相對于DiskStore需要根據block id hash計算出文件路徑并將block存放到對應的文件里面,MemoryStore管理block就顯得非常簡單:MemoryStore內部維護了一個hash map來管理所有的block,以block id為key將block存放到hash map中。而從MemoryStore中取得block則非常簡單,只需從hash map中取出block id對應的value即可。
  6. GET操作 如果 local 中存在就直接返回, 從本地獲取一個Block, 會先判斷如果是 useMemory, 直接從內存中取出, 如果是 useDisk, 會從磁盤中取出返回, 然后根據useMemory判斷是否在內存中緩存一下,方便下次獲取, 如果local 不存在, 從其他節點上獲取, 當然元信息是存在 drive上的,要根據我們上文中提到的 GETlocation 協議獲取 Block 所在節點位置, 然后到其他節點上獲取。
  7. PUT操作 操作之前會加鎖來避免多線程的問題, 存儲的時候會根據 存儲級別, 調用對應的是 memoryStore 還是 diskStore, 然后在具體存儲器上面調用 存儲接口。 如果有 replication 需求, 會把數據備份到其他的機器上面。

cache、persist、checkpoint

  1. 如果要對一個RDD進行持久化,只要對這個RDD調用cache()和persist()即可。
  2. cache()方法表示:使用非序列化的方式將RDD中的數據全部嘗試持久化到內存中。
  3. persist()方法表示:手動選擇持久化級別,并使用指定的方式進行持久化。默認緩存級別是StorageLevel.MEMORY_ONLY,也就是cache就是這個默認級別的。
  4. checkpoint是將數據持久化到HDFS或者硬盤。
  5. rdd.persist(StorageLevel.DISK_ONLY) 與 checkpoint 也有區別。前者雖然可以將 RDD 的 partition 持久化到磁盤,但該 partition 由 blockManager 管理。一旦 driver program 執行結束,也就是 executor 所在進程 CoarseGrainedExecutorBackend stop,blockManager 也會 stop,被 cache 到磁盤上的 RDD 也會被清空(整個 blockManager 使用的 local 文件夾被刪除)。而 checkpoint 將 RDD 持久化到 HDFS 或本地文件夾,如果不被手動 remove 掉( 話說怎么 remove checkpoint 過的 RDD? ),是一直存在的,也就是說可以被下一個 driver program 使用,而 cached RDD 不能被其他 dirver program 使用。

broadcast、accumulator

  1. 廣播變量允許程序員將一個只讀的變量緩存在每臺機器上,而不用在任務之間傳遞變量。(注意是一個較大的只讀變量,不能修改)
  2. Accumulator是spark提供的累加器,顧名思義,該變量只能夠增加。
  3. 只有driver能獲取到Accumulator的值(使用value方法),Task只能對其做增加操作(使用 +=)
  4. 使用累加器的過程中只能使用一次action的操作才能保證結果的準確性。如果需要使用多次則使用cache或persist操作切斷依賴。

當前題目:spark(三):blockManager、broadcast、cache、checkpoint
URL標題:http://m.kartarina.com/article18/gessdp.html

成都網站建設公司_創新互聯,為您提供網站改版營銷型網站建設標簽優化虛擬主機網站導航做網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
主站蜘蛛池模板: 中文字幕丰满乱子无码视频| 无码国产亚洲日韩国精品视频一区二区三区 | 无码中文人妻在线一区| 丰满少妇人妻无码专区| 亚洲精品无码乱码成人| 亚洲av成人中文无码专区| 亚洲AV无码乱码在线观看牲色 | 久久无码国产专区精品| 亚洲一区无码精品色| 91精品无码久久久久久五月天| 人妻少妇无码视频在线| 人妻少妇偷人精品无码| 亚洲精品无码久久久久去q| 日本无码一区二区三区白峰美| 亚洲AV无码一区东京热久久| 日韩电影无码A不卡| 亚洲av无码专区在线电影天堂| 亚洲AV无码精品色午夜在线观看| 色欲AV无码一区二区三区| 久久ZYZ资源站无码中文动漫| 少妇无码AV无码一区| 成人毛片无码一区二区| AV无码久久久久不卡蜜桃| 亚洲AV无码成人专区片在线观看| 亚洲人成无码网站久久99热国产| 精品人妻无码一区二区三区蜜桃一| 无码国产福利av私拍| 久久久久久久无码高潮| 亚洲午夜国产精品无码| 亚洲日韩精品无码专区网址 | 亚洲国产精品无码久久久久久曰| av大片在线无码免费| 日日摸夜夜添无码AVA片| 亚洲av中文无码乱人伦在线r▽| 一本色道无码道在线观看| 久久久精品无码专区不卡| 无码视频在线播放一二三区| yy111111少妇影院里无码| 日日摸夜夜爽无码毛片精选| 在线高清无码A.| 久久久久久亚洲Av无码精品专口|