更新時間:2021-05-20 來源:黑馬程序員 瀏覽量:
問題分析
考官主要考核你對Spark和Hadoop運(yùn)行機(jī)制的理解,考察你對技術(shù)應(yīng)用場景的敏感性和理解程度,這對工作的具體質(zhì)量有很大的影響。
核心問題講解
Spark SQL比Hadoop Hive快,是有一定條件的,而且不是Spark SQL的引擎比Hive的引擎快,相反,Hive的HQL引擎還比Spark SQL的引擎更快。
其實(shí),關(guān)鍵還是在于Spark 本身快。那么Spark為什么快呢?
消除了冗余的HDFS讀寫
Hadoop每次shuffle操作后,必須寫到磁盤,而Spark在shuffle后不一定落盤,可以cache到內(nèi)存中,以便迭代時使用。如果操作復(fù)雜,很多的shufle操作,那么Hadoop的讀寫IO時間會大大增加。、
消除了冗余的MapReduce階段
Hadoop的shuffle操作一定連著完整的MapReduce操作,冗余繁瑣。而Spark基于RDD提供了豐富的算子操作,且action操作產(chǎn)生shuffle數(shù)據(jù),可以緩存在內(nèi)存中。
JVM的優(yōu)化
Hadoop每次MapReduce操作,啟動一個Task便會啟動一次JVM,基于進(jìn)程的操作。而Spark每次MapReduce操作是基于線程的,只在啟動Executor時啟動一次JVM,內(nèi)存的Task操作是在線程復(fù)用的。
每次啟動JVM的時間可能就需要幾秒甚至十幾秒,那么當(dāng)Task多了,這個時間Hadoop不知道比Spark慢了多少。
總結(jié):Spark比Mapreduce運(yùn)行更快,主要得益于其對mapreduce操作的優(yōu)化以及對JVM使用的優(yōu)化。
問題擴(kuò)展
Spark快不是絕對的,但是絕大多數(shù)Spark都比Hadoop計(jì)算要快。
考慮一種極端查詢:Select month_id,sum(sales) from T group by month_id;這個查詢只有一次shuffle操作,此時,也許Hive HQL的運(yùn)行時間也許比Spark還快。
結(jié)合項(xiàng)目中使用
公司在技術(shù)人員儲備滿足的情況下,同樣的業(yè)務(wù)處理,優(yōu)先選擇spark來進(jìn)行實(shí)現(xiàn),這樣對統(tǒng)計(jì)分析的執(zhí)行效率會有很大的提升。
如果業(yè)務(wù)對性能沒有要求,而且內(nèi)存資源有限,也可以采用Hive來進(jìn)行計(jì)算分析。
Redis、傳統(tǒng)數(shù)據(jù)庫、HBase和Hive幾種數(shù)據(jù)存儲的區(qū)別
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級均薪12k+
2025-09-19