說到spark的shuffle,我們就不得不先提一下hadoop的shuffle,但是過程我就不說啦,有興趣的可以看我之前發的mr原理的博文裡面有說hadoop的mr shuffle的執行方式
總的來說,hadoop哪怕到現在預設的也是那麼一套shuffle形式,當然hadoop也是支援你自定義分組來改變shuffle結果的
這個預設的shuffle處理方式就是雜湊,一開始的時候spark跟著老大哥hadoop看齊,shuffle的方式模仿了老大哥的hash思想,以key的hash值,往外溢位檔案的形式,進行shuffle
敲黑板了注意!我有必要提醒各位一句的是,spark的shuffle第一代的時候,只是模仿了hadoop的思想,並不是照搬啊!
有人以為是一模一樣的,他們之間是有差異的,hadoop是以環形緩衝區的模式基於記憶體向外溢位檔案,具體怎麼出的可以去看我之前發的mr原理,而spark第一代的時候是沒有緩衝區、排序等那些高階操作,他是直接按key的hash往外溢位資料
但是之後用著用著發現不對勁,發現老大哥,在捨棄物理空間,來換取計算結果的路上越走越遠,一直不回頭,再跟著老大哥的步伐走,老大哥一次執行基於磁碟出乙個結果,但是spark自身鏈式呼叫,一調一大串,這要是把物理空間給搞掛了,那可不是鬧著玩的。
這裡就講到了這篇**的第
簡單的說一說mmap
mmap memory map,就是記憶體對映 簡單的說就是將檔案對映到使用者的位址空間中。這麼做有什麼好處呢?1.傳統檔案訪問方式是,首先用open系統呼叫開啟檔案,然後使用read,write等呼叫進行順序或者隨即的i o.這種方式是非常低效的,每一次i o操作都需要一次系統呼叫.而通過mmap...
說一說JS的IIFE
iife immediately invoked function expression,意為立即呼叫的函式表示式,也就是說,宣告函式的同時立即呼叫這個函式。對比一下,這是不採用iife時的函式宣告和函式呼叫 function foo foo 下面是iife形式的函式呼叫 functionfoo 函...
說一說JS的IIFE
iife immediately invoked function expression,意為立即呼叫的函式表示式,也就是說,宣告函式的同時立即呼叫這個函式。對比一下,這是不採用iife時的函式宣告和函式呼叫 function foo window console.log a 2 js的模組就是函式...