本文出處:算法
正文網絡
1. hadoop與spark的聯繫與區別框架
解決問題的層面不同機器學習
首先,Hadoop和Apache Spark二者都是大數據框架,可是各自存在的目的不盡相 同。Hadoop實質上更可能是一個分佈式數據基礎設施: 它將巨大的數據集分派到一個由 普通計算機組成的集羣中的多個節點進行存儲,意味着您不須要購買和維護昂貴的服務 器硬件。同時,Hadoop還會索引和跟蹤這些數據,讓大數據處理和分析效率達到前所 未有的高度。分佈式
Spark則是那麼一個專門用來對那些分佈式存儲的大數據進行處理的工具,它並不 會進行分佈式數據的存儲。 工具
二者可合可分 oop
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的應用場景 有如下方面:實時的市場活動,在線產品推薦,網絡安全分析,機器日記監控等。
災難恢復
二者的災難恢復方式迥異,可是都很不錯。由於Hadoop將每次處理後的數據都寫入 到磁盤上,因此其天生就能頗有彈性的對系統錯誤進行處理。
Spark的數據對象存儲在分佈於數據集羣中的叫作彈性分佈式數據集(RDD: Resilient Distributed Dataset)中。「這些數據對象既能夠放在內存,也能夠放在磁盤,因此 RDD一樣也能夠提供完成的災難恢復功能,」Borne指出。
2. Hive:hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件(或者非結構化的數據)映射爲一張數據庫表,並提供簡單的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。 其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。 使用Hive,就不用去寫MapReduce,而是寫sql語句就好了。
正文結束.