何爲大數據平臺

數據分爲結構化數據(如人員信息、項目信息)和非結構化數據(如圖片,文檔),傳統上講,我們採用數據庫來存結構化數據,如MySQL Oracle SQLServer,用NFS來存非結構化數據。

大數據,意味着數據多,如果記錄數達到了上億,一般數據庫可能也就拖不動了。如果存儲文件數達到幾個T,甚至更多。那麼NFS硬件又如何佈局呢?

有時可能一臺機器上的硬盤插滿都不夠。 有人說,不是可以用羣集麼,羣集可以解決計算時多臺,但解決不了存儲容量的擴容。

能否有這樣的一個平臺:
這裏寫圖片描述

這樣的架構中,數據節點可以隨意增加,容量不夠,添加個節點就行,總容量等於數據節點之和。然後我們讀取數據時,只與總管節點打交道,至於有幾個數據節點,對程序來說是透明的。這樣的平臺,就可以完全達到我們隨意擴容的功能。同時針對備份,該平臺能自己能解決,一份數據可以直接複製到兩個數據節點上,完成備份功能。數據節點所用的服務器,還要以不用再單獨配存儲設備,直接利服務器自帶存儲即可。

有這樣的平臺哇?——有,有個牛人寫了這樣的軟件,名叫Hadoop。

目前業內流行很多大數據平臺,如華爲、華三、星環、騰訊。

其實本質上都是基於Hadoop來的,稍加包裝和改造。 就這點功能?——No。

它還有個更強大的用處,就叫計算。

有了大數據,毫無疑問需要便用,否則那就數據垃圾堆、數據墳墓。如何用呢?比如我想寫統計程序,統計一下所有文檔中,哪個詞語使用的頻次最高。

試想一下,傳統怎麼做? 我們會寫一個程序放在業務應用服務器上,然後程序從“總管節點”讀數取文檔數據,然後讀到後進行統計累加。

問題來了,我的數據是海量的,有幾十個T,請問你這個程序執行完,從“總管節點”到“業務應用”這臺電腦上的網絡中,要走到多少流量?應該就是這幾十個T吧,是不是有點恐怖?
也就是你把所有的數據,從存儲全部移動到了應用端,只不過沒有落地而已。

於是大牛們就想,這些存儲結點上不也有CPU麼,不也有計算能力麼。能否利用這些CPU資源,而不要把數據進行搬移,稱之爲移動計算(體)。

這個在Hadoop上執行計算的架構,叫MapReduce。其中包含兩個過程,Map是把計算任務下發到各計算結點上,Reduce是把各計算結點算出的結點回收回來,最終返回給用戶。

MapReduce存在個缺陷,就是計算的中間結果是落地在磁盤上,也就增加了IO操作。
後來有人改造了下,把中間結果寫入內存中,於是出現了Spark。

好了,這就是大數據平臺,提供了統一存儲以及計算的統一解決方案。各類應用都最終化解爲MapReduce過程在Hadoop上執行,包括各類機器學習算法。

試想個問題:Google搜索一條信息爲什麼這麼快?是不是就是這個思路?先把收集的各網頁信息,存於無數臺服務器上,當你執行搜索時,其實每臺服務器都在幫你執行,然後每臺上處理的數據量相對小,於是就快了,再把最終結果匯給你。

其實,Hadoop就是借鑑了Google的思想,做出的開源產品。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章