當前位置:編程學習大全網 - 編程語言 - 為什麽會有第壹代大數據hadoop和第二代大數據spark

為什麽會有第壹代大數據hadoop和第二代大數據spark

首先看壹下Hadoop解決了什麽問題,Hadoop就是解決了大數據(大到壹臺計算機無法進行存儲,壹臺計算機無法在要求的時間內進行處理)的可靠存儲和處理。

HDFS,在由普通PC組成的集群上提供高可靠的文件存儲,通過將塊保存多個副本的辦法解決服務器或硬盤壞掉的問題。

MapReduce,通過簡單的Mapper和Reducer的抽象提供壹個編程模型,可以在壹個由幾十臺上百臺的PC組成的不可靠集群上並發地,分布式地處理大量的數據集,而把並發、分布式(如機器間通信)和故障恢復等計算細節隱藏起來。而Mapper和Reducer的抽象,又是各種各樣的復雜數據處理都可以分解為的基本元素。這樣,復雜的數據處理可以分解為由多個Job(包含壹個Mapper和壹個Reducer)組成的有向無環圖(DAG),然後每個Mapper和Reducer放到Hadoop集群上執行,就可以得出結果。

用MapReduce統計壹個文本文件中單詞出現的頻率的示例WordCount請參見:WordCount?-?Hadoop?Wiki,如果對MapReduce不恨熟悉,通過該示例對MapReduce進行壹些了解對理解下文有幫助。

在MapReduce中,Shuffle是壹個非常重要的過程,正是有了看不見的Shuffle過程,才可以使在MapReduce之上寫數據處理的開發者完全感知不到分布式和並發的存在。

(圖片來源:?Hadoop?Definitive?Guide?By?Tom?White)

廣義的Shuffle是指圖中在Map和Reuce之間的壹系列過程。

Hadoop的局限和不足

但是,MapRecue存在以下局限,使用起來比較困難。

抽象層次低,需要手工編寫代碼來完成,使用上難以上手。

只提供兩個操作,Map和Reduce,表達力欠缺。

壹個Job只有Map和Reduce兩個階段(Phase),復雜的計算需要大量的Job完成,Job之間的依賴關系是由開發者自己管理的。

處理邏輯隱藏在代碼細節中,沒有整體邏輯

中間結果也放在HDFS文件系統中

ReduceTask需要等待所有MapTask都完成後才可以開始

時延高,只適用Batch數據處理,對於交互式數據處理,實時數據處理的支持不夠

對於叠代式數據處理性能比較差

比如說,用MapReduce實現兩個表的Join都是壹個很有技巧性的過程,如下圖所示:?

  • 上一篇:日本東麗醫療怎麽樣?
  • 下一篇:系動詞英語怎麽學啊,
  • copyright 2024編程學習大全網