教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Spark處理數(shù)據(jù)的速度比Hive更快?原因是什么?

更新時間:2021年05月20日15時02分 來源:傳智教育 瀏覽次數(shù):

傳智教育-一樣的教育,不一樣的品質(zhì)

問題分析

考官主要考核你對Spark和Hadoop運行機制的理解,考察你對技術(shù)應用場景的敏感性和理解程度,這對工作的具體質(zhì)量有很大的影響。

核心問題講解

Spark SQL比Hadoop Hive快,是有一定條件的,而且不是Spark SQL的引擎比Hive的引擎快,相反,Hive的HQL引擎還比Spark SQL的引擎更快。
其實,關(guān)鍵還是在于Spark 本身快。那么Spark為什么快呢?

  1. 消除了冗余的HDFS讀寫
    Hadoop每次shuffle操作后,必須寫到磁盤,而Spark在shuffle后不一定落盤,可以cache到內(nèi)存中,以便迭代時使用。如果操作復雜,很多的shufle操作,那么Hadoop的讀寫IO時間會大大增加。、

  2. 消除了冗余的MapReduce階段
    Hadoop的shuffle操作一定連著完整的MapReduce操作,冗余繁瑣。而Spark基于RDD提供了豐富的算子操作,且action操作產(chǎn)生shuffle數(shù)據(jù),可以緩存在內(nèi)存中。

  3. JVM的優(yōu)化
    Hadoop每次MapReduce操作,啟動一個Task便會啟動一次JVM,基于進程的操作。而Spark每次MapReduce操作是基于線程的,只在啟動Executor時啟動一次JVM,內(nèi)存的Task操作是在線程復用的。
    每次啟動JVM的時間可能就需要幾秒甚至十幾秒,那么當Task多了,這個時間Hadoop不知道比Spark慢了多少。
    總結(jié):Spark比Mapreduce運行更快,主要得益于其對mapreduce操作的優(yōu)化以及對JVM使用的優(yōu)化。

問題擴展

Spark快不是絕對的,但是絕大多數(shù)Spark都比Hadoop計算要快。
考慮一種極端查詢:Select month_id,sum(sales) from T group by month_id;這個查詢只有一次shuffle操作,此時,也許Hive HQL的運行時間也許比Spark還快。

結(jié)合項目中使用

公司在技術(shù)人員儲備滿足的情況下,同樣的業(yè)務處理,優(yōu)先選擇spark來進行實現(xiàn),這樣對統(tǒng)計分析的執(zhí)行效率會有很大的提升。
如果業(yè)務對性能沒有要求,而且內(nèi)存資源有限,也可以采用Hive來進行計算分析。





猜你喜歡:

怎樣使用Spark方法完成RDD的創(chuàng)建?

Spark的應用場景有哪些?

Spark SQL如何實現(xiàn)Hive數(shù)據(jù)倉庫的操作?

傳智教育python+大數(shù)據(jù)開發(fā)培訓培訓課程

0 分享到:
和我們在線交談!