從Hadoop到Spark,看大數據框架發展之路

談到大數據框架,不得不提Hadoop和 Spark,今天我們進行歷史溯源,幫助大家瞭解Hadoop和Spark的過去,感應未來。


在Hadoop出現前人們採用什麼計算模型呢?是典型的高性能 HPC workflow,它有專門負責計算的compute cluster,cluster memory很小,所以計算產生的任何數據會存儲在storage中,最後在Tape裡進行備份,這種workflow主要適用高速大規模複雜計算,像核物理模擬中會用到。


從Hadoop到Spark,看大數據框架發展之路


HPC workflow在實際應用中存在一些問題,這些問題促進了Hadoop的出現。


首先如果想對大量進行簡單計算,比如對Search logs 進行“what are the popular keywords”計算,這時是否可以用HPC workflow?當然可以,但卻並不適合,因為需要做的計算非常簡單,並不需要在 high performance compute cluster中進行。


其次由於數據量大,HPC workflow是I/O bound,計算時間只有1個微秒,但剩下的100個微秒可能都需要等數據,這時候compute cluster就會非常空閒,因此HPC同樣不不適用於 specific use。


另外HPC主要在政府部門、科研等領域使用,成本高昂,不適合廣泛推廣。


如果不能把數據移到計算的地方,那為什麼不轉換思維,把計算移到數據裡呢?


所以Google在2003至2006年發表了著名的三大論文——GFS、BigTable、MapReduce,解決怎麼樣讓framework 挪到有數據的地方去做,解決了數據怎麼存儲,計算及訪問的問題。


在Google 發出三大論文後,Yahoo用相同的框架開發出JAVA語言的project,這就是Hadoop。Hadoop Ecosystem在十年多時間發展的如火如荼,其核心就是HDFS,Mapreduce和Hbase。


從Hadoop到Spark,看大數據框架發展之路


HDFS很好地實現了數據存儲的以下特性要求:


  • Cheap
  • High availability
  • High throughput
  • High scalability
  • Failure detection and recovery


從Hadoop到Spark,看大數據框架發展之路


大家從圖中可以看到HDFS數據讀取和寫入的過程,這個Architecture非常穩定,當數據量越來越大時Namenode從一個發展為多個,使內存增大,產生了Namenode Federation。


從Hadoop到Spark,看大數據框架發展之路


數據存儲已經實現,那如何進行計算呢?


如果有1PB size log,當需要計數時, 一個machine肯定無法計算海量數據,這時候可能需要寫Multi-threads code,但也會存在進程壞了,性能不穩定等問題,如果Data Scientist還要寫multi-threats程序是非常浪費時間的,這時候Mapreduce 就應運而生,目的是讓framework代替人來處理複雜問題,使人集中精力到重要的數據分析過程中,只需要通過code Map和Reduce就可以實現數據運算。


從Hadoop到Spark,看大數據框架發展之路


讓我們來思考下:在一次Mapreduce中至少需寫硬盤幾次?


至少3次!


開始從HDFS中讀取數據,在Mapreduce中計算,再寫回HDFS作為 Intermediate data,繼續把數據讀出來做reduce,最後再寫回HDFS,很多時候做meachine learning需要不斷迭代,一次程序無法算出最終結果,需要不斷循環。


循環過程一直往硬盤裡寫,效率非常低,如果把中間數據寫入內存,可以極大提高性能,於是Spark出現了


從Hadoop到Spark,看大數據框架發展之路


當把數據從HDFS中讀出來到內存中,通過spark分析,Intermediate data再存到內存,繼續用spark進行分析,不斷進行循環,這樣Spark會很大地提高計算速度。

Spark在2009年由AMPLab開發,吸取了很多Hadoop發展的經驗教訓,比如Hadoop對其他語言支持不夠,Spark提供了Java,Scala,Python,R這些廣泛受到Data Scientist歡迎的語言

從Hadoop到Spark,看大數據框架發展之路

那Spark與Hadoop的區別有什麼?

  • Spark比Hadoop使用更簡單
  • Spark對數據科學家更友好(Interactive shell)
  • Spark有更多的API/language支持(Java, python, scala)


從Hadoop到Spark,看大數據框架發展之路


從Hadoop到Spark,看大數據框架發展之路

最後說一下,想要學習大數據的限時領取免費資料及課程

領取方法:

還是那個萬年不變的老規矩

1.評論文章,沒字數限制,一個字都行!

3.私信小編:“大數據開發教程”即可!

謝謝大家,祝大家學習愉快!(拿到教程後一定要好好學習,多練習哦!)


分享到:


相關文章: