簡體   English   中英

關於Hive中的引擎,Map Reduce和Spark之間有什么區別?

[英]What is the difference between Map Reduce and Spark about engine in Hive?

看起來有兩種方法可以將spark用作Hive的后端引擎。

第一個是直接使用spark作為引擎。 喜歡本教程

另一種方法是使用spark作為MapReduce的后端引擎。 喜歡本教程

在第一個教程中, hive.execution.enginespark 而且我看不到涉及的hdfs

在第二個教程中, hive.execution.engine仍然是mr ,但是由於沒有hadoop進程,因此看起來mr的后端是spark。

老實說,我對此有些困惑。 我想推薦第一個,因為mr已被棄用。 但是hdfs涉及哪里?

我有不同的理解。

通常,除非您使用IMPALA,否則Hive將MR用作執行引擎,但並非所有發行版都具有此功能。

但是一段時間以來,Spark可以用作Spark的執行引擎。

https://blog.cloudera.com/blog/2014/07/apache-hive-on-apache-spark-motivations-and-design-principles/對此進行了更詳細的討論。

Apache Spark構建DAG(有向無環圖),而Mapreduce與本機Map和Reduce一起使用。 在Spark中執行時,邏輯依賴性形成物理依賴性。

現在什么是DAG

DAG在執行之前先構建邏輯依賴項(以可視化圖的形式考慮)。當我們有多個映射並且reduce或一個reduce的輸出是另一張映射的輸入時,DAG將幫助加速作業。 在此處輸入圖片說明 DAG是在Tez(照片的右側)中構建的,而不是在MapReduce(左側)中構建的。

注意: Apache Spark可在DAG上運行,但具有代替Map / Reduce的階段。 Tez有DAG,可以在Map / Reduce上工作。 為了簡化起見,我使用了Map / Reduce上下文,但請記住Apache Spark有階段。 但是DAG的概念保持不變。

原因2: Map會將其輸出持久保存到磁盤。(也有緩沖區,但是當90%的緩沖區被填充時,輸出將進入磁盤)從那里開始數據合並。 但是在Apache Spark中,中間數據會保留在內存中,從而使其速度更快。 檢查此鏈接以獲取詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM