當前位置:編程學習大全網 - 編程語言 - 為什麽Spark發展不如Hadoop

為什麽Spark發展不如Hadoop

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的普及和發展。

  • 上一篇:常減壓裝置爐出口溫度降低5度對產品收率影響有多大
  • 下一篇:馬斯克姆編程
  • copyright 2024編程學習大全網