回覆列表
  • 1 # 趙帥虎

    首先明確下定義:計算時間是指計算機實際執行的時間,不是人等待的時間,因為等待時間依賴於有多少資源可以排程。

    Spark 任務

    Spark 任務的總執行時間可以看 Spark UI,以下圖為例

    Spark 任務是分多個 Physical Stage 執行的,每個stage下有很多個task,task 的時間也有大致的預估,如下圖

    Task 個數依賴於 Hive 表的檔案數,每個task的執行時間依賴於 UDF是怎麼實現的,需要具體問題具體分析。

    MapReduce 任務

    MapReduce 任務的執行時間,也需要參考 hadoop web ui

    整體執行時間 = map_time * map_number + reduce_time * reduce_number;

    map 個數一般情況下是 hive 表的分割槽數;

    map 執行時間取決於 每個分割槽裡的資料量 和 udf 的邏輯;

    不管是 Spark 還是 MapReduce,計算時間都依賴於:

    資料來源分割槽數每個分割槽裡的檔案數每個檔案的大小udf 邏輯sql 邏輯(group by、filter、distinct count)實際場景下資源是有限的,我們也不關心計算時間,反而是更關心一個數據集需要多久能處理完,比如一個1T的Hive表大概需要幾個小時跑完MapReduce。這時候我們需要做實驗,觀察一個分割槽大概需要多久跑完,資料有沒有 skew,從經驗上給出一個合理的時間,進而保證任務交付。

  • 中秋節和大豐收的關聯?
  • 英語該如何發音比較正確?