{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

hadoop任務(wù),給定數(shù)據(jù)量和處理邏輯(Sql、UDF等),如何預(yù)估計算時間與資源?有沒有實際案例?

silenceboysilenceboy 回答0 收藏1
收藏問題

1條回答

fireflow

fireflow

回答于2022-06-28 15:02

首先明確下定義:計算時間是指計算機實際執(zhí)行的時間,不是人等待的時間,因為等待時間依賴于有多少資源可以調(diào)度。

首先我們不考慮資源問題,討論時間的預(yù)估。執(zhí)行時間依賴于執(zhí)行引擎是 Spark 還是 MapReduce。


Spark 任務(wù)

Spark 任務(wù)的總執(zhí)行時間可以看 Spark UI,以下圖為例

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

Task 個數(shù)依賴于 Hive 表的文件數(shù),每個task的執(zhí)行時間依賴于 UDF是怎么實現(xiàn)的,需要具體問題具體分析。

MapReduce 任務(wù)

MapReduce 任務(wù)的執(zhí)行時間,也需要參考 hadoop web ui

整體執(zhí)行時間 = map_time * map_number + reduce_time * reduce_number;

map 個數(shù)一般情況下是 hive 表的分區(qū)數(shù);

map 執(zhí)行時間取決于 每個分區(qū)里的數(shù)據(jù)量 和 udf 的邏輯;


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

  1. 數(shù)據(jù)源分區(qū)數(shù)
  2. 每個分區(qū)里的文件數(shù)
  3. 每個文件的大小
  4. udf 邏輯
  5. sql 邏輯(group by、filter、distinct count)

實際場景下資源是有限的,我們也不關(guān)心計算時間,反而是更關(guān)心一個數(shù)據(jù)集需要多久能處理完,比如一個1T的Hive表大概需要幾個小時跑完MapReduce。這時候我們需要做實驗,觀察一個分區(qū)大概需要多久跑完,數(shù)據(jù)有沒有 skew,從經(jīng)驗上給出一個合理的時間,進(jìn)而保證任務(wù)交付。

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<