簡單搞定spark的shuffle流程

2021-08-11 07:57:20 字數 919 閱讀 8408

1、在spark中,什麼情況下,會發生shuffle?reducebykey、groupbykey、sortbykey、countbykey、join、cogroup等操作。

2、預設的shuffle操作的原理剖析

3、優化後的shuffle操作的原理剖析

4、shuffle相關原始碼分析

普通的shuffle:

優化後的shuffle:

第乙個特點,

在spark早期版本中,那個bucket快取是非常非常重要的,因為需要將乙個shufflemaptask所有的資料都寫入記憶體快取之後,才會重新整理到磁碟。但是這就有乙個問題,如果map side資料過多,那麼很容易造成記憶體溢位。所以spark在新版本中,優化了,預設那個記憶體快取是100kb,然後呢,寫入一點資料達到了重新整理到磁碟的閾值之後,就會將資料一點一點地重新整理到磁碟。

這種操作的優點,是不容易發生記憶體溢位。缺點在於,如果記憶體快取過小的話,那麼可能發生過多的磁碟寫io操作。所以,這裡的記憶體快取大小,是可以根據實際的業務情況進行優化的。

第二個特點,

與mapreduce完全不一樣的是,mapreduce它必須將所有的資料都寫入本地磁碟檔案以後,才能啟動reduce操作,來拉取資料。為什麼?因為mapreduce要實現預設的根據key的排序!所以要排序,肯定得寫完所有資料,才能排序,然後reduce來拉取。

但是spark不需要,spark預設情況下,是不會對資料進行排序的。因此shufflemaptask每寫入一點資料,resulttask就可以拉取一點資料,然後在本地執行我們定義的聚合函式和運算元,進行計算。

搞定spark暱稱

spark總是不顯示名稱,而是顯示乙個去掉字尾的使用者名稱,必須要設定vcard中的暱稱才行。注意在xmpp4r裡要引用vcard require xmpp4r vcard helper vcard def self.add vcard user j user.jabber conn if j ad...

輕鬆搞定Spark安裝

1.spark的官網位址是 目前最新版本為2.6.3.spark與openfire類似,為各個主流平台提供安裝包。2.安裝spark,一路 next 下去。安裝完畢之後,如下圖所示 3.可以使用openfire伺服器提供的管理員賬號 admin admin 登陸spark客戶端。也可以註冊新的賬號,...

spark 簡單實戰 Spark線性回歸簡單例子

這個課程以乙個專案來講解spark中怎麼使用線性回歸 邏輯回歸以及svm等演算法模型。專案主要是 航班的延遲時間,專案是按照如下的流程來講解 在模型訓練地方,詳細講解了交叉驗證的功能 老湯人工智慧 機器學習課程體系分為三部分 機器學習一之數學基礎 從微積分和線性代數兩個方面講解機器學習需要的數學知識...