相信看這篇文章的大家,都和我同樣對Hadoop和Apache Spark的選擇有必定的疑惑,今天查了很多資料,咱們就來談談這兩種 平臺的比較與選擇吧,看看對於工做和發展,到底哪一個更好。
算法
1、Hadoop與Spark安全
1.Spark服務器
Spark是一個用來實現快速而通用的集羣計算的平臺。速度方面,Spark擴展了普遍使用的MapReduce計算模型,並且高效地支持更多計算模式,包括交互式查詢和流處理。網絡
Spark項目包含多個緊密集成的組件。Spark的核心是一個對由不少計算任務組成的、運行在多個工做機器或者是一個計算集羣上的應用進行調度、分發以及監控的計算引擎。架構
2.Hadoop併發
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。
app
大數據是將來的發展方向,正在挑戰咱們的分析能力及對世界的認知方式,所以,咱們與時俱進,迎接變化,並不斷的成長,大數據學習扣扣羣606+859+705 一塊兒討論進步學習。 框架
2、異與同機器學習
解決問題的層面不同分佈式
首先,Hadoop和Apache Spark二者都是大數據框架,可是各自存在的目的不盡相同。Hadoop實質上更可能是一個分佈式數據基礎設施: 它將巨大的數據集分派到一個由普通計算機組成的集羣中的多個節點進行存儲,意味着您不須要購買和維護昂貴的服務器硬件。同時,Hadoop還會索引和跟蹤這些數據,讓大數據處理和分析效率達到史無前例的高度。Spark,則是那麼一個專門用來對那些分佈式存儲的大數據進行處理的工具,它並不會進行分佈式數據的存儲。
二者可合可分
Hadoop除了提供爲你們所共識的HDFS分佈式數據存儲功能以外,還提供了叫作MapReduce的數據處理功能。因此這裏咱們徹底能夠拋開Spark,使用Hadoop自身的MapReduce來完成數據的處理。
相反,Spark也不是非要依附在Hadoop身上才能生存。但如上所述,畢竟它沒有提供文件管理系統,因此,它必須和其餘的分佈式文件系統進行集成才能運做。這裏咱們能夠選擇Hadoop的HDFS,也能夠選擇其餘的基於雲的數據系統平臺。但Spark默認來講仍是被用在Hadoop上面的,畢竟,你們都認爲它們的結合是最好的。
順帶說一下什麼是mapreduce:咱們要數圖書館中的全部書。你數1號書架,我數2號書架。這就是「Map」。咱們人越多,數書就更快。如今咱們到一塊兒,把全部人的統計數加在一塊兒。這就是「Reduce」。
Spark數據處理速度秒殺MapReduce
Spark由於其處理數據的方式不同,會比MapReduce快上不少。MapReduce是分步對數據進行處理的: 」從集羣中讀取數據,進行一次處理,將結果寫到集羣,從集羣中讀取更新後的數據,進行下一次的處理,將結果寫到集羣,等等…「 Booz Allen Hamilton的數據科學家Kirk Borne如此解析。
反觀Spark,它會在內存中以接近「實時」的時間完成全部的數據分析:「從集羣中讀取數據,完成全部必須的分析處理,將結果寫回集羣,完成,」 Born說道。Spark的批處理速度比MapReduce快近10倍,內存中的數據分析速度則快近100倍。若是須要處理的數據和結果需求大部分狀況下是靜態的,且你也有耐心等待批處理的完成的話,MapReduce的處理方式也是徹底能夠接受的。
但若是你須要對流數據進行分析,好比那些來自於工廠的傳感器收集回來的數據,又或者說你的應用是須要多重數據處理的,那麼你也許更應該使用Spark進行處理。大部分機器學習算法都是須要多重數據處理的。此外,一般會用到Spark的應用場景有如下方面:實時的市場活動,在線產品推薦,網絡安全分析,機器日記監控等。
Recovery 恢復
二者的災難恢復方式迥異,可是都很不錯。由於Hadoop將每次處理後的數據都寫入到磁盤上,因此其天生就能頗有彈性的對系統錯誤進行處理。Spark的數據對象存儲在分佈於數據集羣中的叫作彈性分佈式數據集(RDD: Resilient Distributed Dataset)中。「這些數據對象既能夠放在內存,也能夠放在磁盤,因此RDD一樣也能夠提供完成的災難恢復功能」
3、學哪一個?
其實,正如所瞭解的那樣,Spark的確是大數據行業中的後起之秀,與Hadoop相比,Spark有不少的優點。Hadoop之因此在大數據行業可以獲得充分的認同主要是由於:
Hadoop解決了大數據的可靠存儲和處理問題;
Hadoop的開源性,這能讓不少大數據從業人員在裏面找到靈感,方便實用;
Hadoop通過了多年的開發,擁有完整的生態系統。
HDFS在由普通PC組成的集羣上提供高可靠的文件存儲,經過將塊保存多個副本的辦法解決服務器或硬板壞掉的問題。
MapReduce經過簡單的Mapper和Reducer的抽象提供一個變成模型,能夠在一個由幾十臺至上百臺的PC組成的不可靠集羣上併發地,分佈式地處理大量的數據集,而把併發、分佈式和故障恢復等計算細節隱藏起來。
Hadoop也有許多侷限和不足,籠統的講,在數據量不斷擴大的狀況下,Hadoop的運算速度會愈加顯得吃力。雖然現階段,Hadoop在大數據行業內仍然有很高頻率的應用,但不難想象在若干年後,數據量又上升幾個數量級時,Hadoop所面臨的窘境。而Spark的運算速度是Hadoop的百分之一甚至更快,所以,在將來,Spark必然會取代Hadoop,主宰大數據行業。
那是否是就能夠跳過Hadoop,只學Spark呢?固然不是,有如下緣由:
現階段,Hadoop仍然主導着大數據領域,咱們能夠學習先進的技術,但更是爲了現階段的就業,就目前階段而言,學大數據必學Hadoop。
MapReduce中有許多經典的思想,值得咱們學習,這對咱們理解大數據十分有幫助。
確切的講,Spark要替換的是Hadoop中的MapReduce,而不是Hadoop,Hadoop是一個工具包,而Spark和MapReduce同樣,只是一種工具而已。
結論:
若是你是往業界的算法工程方面發展,那麼兩個都要學,Hadoop要了解,Spark要熟悉。若是你是大數據研究人員,那麼要精通這兩種。因此,這裏的建議是,對於有志於在ML和大數據等領域發展的各位,能夠按照Java - Hadoop - Spark這樣的路徑,若是你有C++和SQL的基礎,那麼學習曲線將不會特別陡峭,對於spark來講,學一點Scala則會更有幫助