2 回答

TA貢獻1831條經驗 獲得超4個贊
解決問題的層面不一樣
首先,Hadoop和Apache Spark兩者都是大數據框架,但是各自存在的目的不盡相同。Hadoop實質上更多是一個分布式數據基礎設施: 它將巨大的數據集分派到一個由普通計算機組成的集群中的多個節點進行存儲,意味著您不需要購買和維護昂貴的服務器硬件。
同時,Hadoop還會索引和跟蹤這些數據,讓大數據處理和分析效率達到前所未有的高度。Spark,則是那么一個專門用來對那些分布式存儲的大數據進行處理的工具,它并不會進行分布式數據的存儲。
兩者可合可分
Hadoop除了提供為大家所共識的HDFS分布式數據存儲功能之外,還提供了叫做MapReduce的數據處理功能。所以這里我們完全可以拋開Spark,使用Hadoop自身的MapReduce來完成數據的處理。
相反,Spark也不是非要依附在Hadoop身上才能生存。但如上所述,畢竟它沒有提供文件管理系統,所以,它必須和其他的分布式文件系統進行集成才能運作。這里我們可以選擇Hadoop的HDFS,也可以選擇其他的基于云的數據系統平臺。但Spark默認來說還是被用在Hadoop上面的,畢竟,大家都認為它們的結合是最好的。
希望能幫到你。

TA貢獻1830條經驗 獲得超9個贊
Hadoop這項大數據處理技術大概已有十年歷史,而且被看做是首選的大數據集合處理的解決方案。MapReduce是一路計算的優秀解決方案,不過對于需要多路計算和算法的用例來說,并非十分高效。數據處理流程中的每一步都需要一個Map階段和一個Reduce階段,而且如果要利用這一解決方案,需要將所有用例都轉換成MapReduce模式。
在下一步開始之前,上一步的作業輸出數據必須要存儲到分布式文件系統中。因此,復制和磁盤存儲會導致這種方式速度變慢。另外Hadoop解決方案中通常會包含難以安裝和管理的集群。而且為了處理不同的大數據用例,還需要集成多種不同的工具(如用于機器學習的Mahout和流數據處理的Storm)。
如果想要完成比較復雜的工作,就必須將一系列的MapReduce作業串聯起來然后順序執行這些作業。每一個作業都是高時延的,而且只有在前一個作業完成之后下一個作業才能開始啟動。
而Spark則允許程序開發者使用有向無環圖(DAG)開發復雜的多步數據管道。而且還支持跨有向無環圖的內存數據共享,以便不同的作業可以共同處理同一個數據。
Spark運行在現有的Hadoop分布式文件系統基礎之上(HDFS)提供額外的增強功能。它支持將Spark應用部署到現存的Hadoop v1集群(with SIMR – Spark-Inside-MapReduce)或Hadoop v2 YARN集群甚至是Apache Mesos之中。
我們應該將Spark看作是Hadoop MapReduce的一個替代品而不是Hadoop的替代品。其意圖并非是替代Hadoop,而是為了提供一個管理不同的大數據用例和需求的全面且統一的解決方案。
- 2 回答
- 0 關注
- 709 瀏覽
添加回答
舉報