Spark與Hadoop之間的PK

jopen 10年前發布 | 16K 次閱讀 Spark

一說大數據,人們往往想到 Hadoop。這固然不錯,但隨著大數據技術的深入應用,多種類型的數據應用不斷被要求提出,一些 Hadoop 被關注的范疇開始被人們注意,相關技術也迅速獲得專業技術范疇的應用。最近半年來的 Spark 之熱就是典型例子。

Spark與Hadoop之間的PK

        Spark 是一個基于 RAM 計算的開源碼 ComputerCluster 運算系統,目的是更快速地進行數據分析。Spark 早期的核心部分代碼只有 3 萬行。Spark 提供了與 HadoopMap/Reduce 相似的分散式運算框架,但基于 RAM 和優化設計,因此在交換式數據分析和 datamining 的 Workload 中表現不錯。

        進入 2014 年以后,Spark 開源碼生態系統大幅增長,已成為大數據范疇最活躍的開源碼項目之一。Spark 之所以有如此多的關注,塬因主要是因為 Spark 具有的高性能、高靈活性、與 Hadoop 生態系統完美融合等叁方面的特點。

        首先,Spark 對分散的數據集進行抽樣,創新地提出 RDD (ResilientDistributedDataset)的概念,所有的統計分析任務被翻譯成對 RDD 的基本操作組成的有向無環圖(DAG)。RDD 可以被駐留在 RAM 中,往后的任務可以直接讀取 RAM 中的數據;同時分析 DAG 中任務之間的依賴性可以把相鄰的任務合并,從而減少了大量不準確的結果輸出,極大減少了 HarddiskI/O,使復雜數據分析任務更高效。從這個推算,如果任務夠復雜,Spark 比 Map/Reduce 快一到兩倍。

        其次,Spark 是一個靈活的運算框架,適合做批次處理、工作流、交互式分析、流量處理等不同類型的應用,因此 Spark 也可以成為一個用途廣泛的運算引擎,并在未來取代 Map/Reduce 的地

        最后,Spark 可以與 Hadoop 生態系統的很多組件互相操作。Spark 可以運行在新一代資源管理框架 YARN 上,它還可以讀取已有并存放在 Hadoop 上的數據,這是個非常大的優勢。

        雖然 Spark 具有以上叁大優點,但從目前 Spark 的發展和應用現狀來看,Spark 本身也存在很多缺陷,主要包括以下幾個方面:

  • 穩定性方面,由于代碼質量問題,Spark 長時間運行會經常出錯,在架構方面,由于大量數據被緩存在 RAM 中,Java 回收垃圾緩慢的情況嚴重,導致 Spark 性能不穩定,在復雜場景中 SQL 的性能甚至不如現有的 Map/Reduce。
  • 不能處理大數據,單獨機器處理數據過大,或者由于數據出現問題導致中間結果超過 RAM 的大小時,常常出現 RAM 空間不足或無法得出結果。然而,Map/Reduce 運算框架可以處理大數據,在這方面,Spark 不如 Map/Reduce 運算框架有效。
  • 不能支持復雜的 SQL 統計;目前 Spark 支持的 SQL 語法完整程度還不能應用在復雜數據分析中。在可管理性方面,SparkYARN 的結合不完善,這就為使用過程中埋下隱憂,容易出現各種難題。

        雖然 Spark 活躍在 Cloudera、MapR、Hortonworks 等眾多知名大數據公司,但是如果 Spark 本身的缺陷得不到及時處理,將會嚴重影響 Spark 的普及和發展。

來自: www.evget.com
                    <span id="shareA4" class="fl">                  
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!