Hadoop的分散式計算框架VS常用分散式計算框架
HDFS是Hadoop的分散式文件系統,現在我們已經把那些超大文件劃分成數據塊,做了備份並且存儲在集群中的節點上了,整個集群中有的機器扮演著管理者,是namenode的角色,是客戶端訪問Hadoop平台的入口,也負責維護HDFS的高可用性和容錯性。而有些機器則是工作者,是datanode的角色,負責存儲數據塊,向namenode上報自己都存儲了哪些數據塊。
有了分散式存儲的文件系統,分散式計算也是數據挖掘,大數據上的必備神器。針對不同的需求出現了下面幾種分散式計算框架。
MR(Map-Reduce)主要負責離線計算,一般處理的數據量特別大,對實時性要求不高,不要求很快就會計算出結果,MR的輸入就是HDFS文件系統中的數據塊。
優點:
大規模處理數據,隱藏細節,能夠自動並行化,負載均衡和容錯機制。
伸縮性好,可以增加集群中的機器,對MR的計算影響很小。
缺點:
實時性差,響應緩慢,不能快速得出計算結果,延遲大。
Storm一種流式分散式計算框架,用於在實時分析、在線機器學習、持續計算、分散式遠程調用和ETL等領域,主要針對的是Hadoop延遲大,響應緩慢,運維複雜而提出的分散式計算框架。
489034603
優點:
實時性高,延遲低,並且和MR一樣具備分散式,可擴展,容錯性高等優點。
缺點:
數據入口的設置比較困難,在考慮如何在流中保存狀態,還需要考慮如何將大數據放到分散式平台上去跑,Storm還不是一個完整的解決方案。
Spark基於內存的分散式計算框架,能夠快速得到結果。它將中間數據放到內存中,迭代效率更高,反覆操作的次數越多,並且讀取的數據量越大,那麼因為它把中間結果放到了內存中,迭代起來更快,計算效率越高。
489034603
優點:
Spark最大的優點在於速度,Spark將很多操作都保存在內存中,在高級數據處理上要比Hadoop表現優異。
缺點:
目前還沒有發現Spark的缺點。
雖然Hadoop主要以MR為分散式計算框架,並且有了升級版的MR--Yarn,但現在Spark已經和Hadoop進行了結合,Spark可以直接讀寫Hadoop的分散式文件系統HDFS,在數據倉庫上Spark也借用了Hive,基本上已經實現了兼容。
Map-Reduce中的Map為映射,而Reduce則是針對Map處理後的結果進行化簡。這裡涉及到Map-Reduce的一個問題:Map-Reduce是如何解決數據負載和數據均衡問題的?先給大家放張圖,下篇文章將從Map-Reduce的工作原理上來闡述這個問題。
推薦閱讀: