最近有不少質疑大數據的聲音,這些質疑有一定的道理,但結論有些以偏概全,應該具體問題具體分析。對大數據的疑問和抗拒往往是因為對其不了解,需要真正了解之后才能得出比較客觀的結論。
大數據是一個比較寬泛的概念,它包含大數據存儲和大數據計算,其中大數據計算可大致分為計算邏輯相對簡單的大數據統(tǒng)計,以及計算邏輯相對復雜的大數據預測。
下面分別就以上三個領域簡要分析一下:
第一,大數據存儲解決了大數據技術中的首要問題,即海量數據首先要能保存下來,才能有后續(xù)的處理。因此大數據存儲的重要性是毫無疑問的。
第二,大數據統(tǒng)計是對海量數據的分析統(tǒng)計和輕度挖掘,例如統(tǒng)計海量用戶產品的日/月活躍度、用戶基于地區(qū)的分布、用戶歷史操作、運營側數據指標等,這些需要大數據計算平臺的支持才能實現,對于擁有海量用戶的互聯網公司來說是不可或缺的技術。
第三,大數據預測領域才是爭議最多的領域。事實上,預測必有誤差、必有小概率事件,大數據預測的背后是各種機器學習/模式識別等深度挖掘算法,這些算法只是工具而已,用得好不好、恰不恰當還是要看應用的領域和使用者本身的能力。就像C++語言這個工具,適合做后臺開發(fā),不適合做網頁前端,有C++編程很牛的程序員,也有編程很差的程序員,不能因為存在編程差的程序員而否定C++。此外,大數據預測想要做到精準,門檻非常高,所以有很多聲稱使用大數據預測的產品,實際效果往往不佳,給人們造成了大數據預測普遍不行的印象。由于門檻高,真正能掌握大數據預測能力,做到精準的,目前只有很少數產品。
綜上所述,大數據存儲和大數據統(tǒng)計是海量用戶產品不可或缺的技術,而對于大數據預測技術,小概率事件必然出現,且并不是每個人都能運用得好。所以不能籠統(tǒng)地說大數據沒有用處,要看具體領域,以及產品背后的團隊。
大數據經過最近幾年的發(fā)展,它的基礎設施——各個大數據存儲和計算平臺已經比較成熟,業(yè)界主流的大數據平臺在后臺的層次角色一般如下圖所示:

在物理層,根據不同的使用場景以及成本預算的考慮,會采用不同的硬件配置方案。對于自身容錯備份機制較好的大存儲系統(tǒng),只需使用SATA硬盤即可;若所承載的平臺自身容災機制較弱甚至是無,且數據比較重要,則可以使用RAID或者SAS硬盤。對于大部分存儲和計算平臺來說,網絡一般不是最大的瓶頸,所以使用千兆網卡和交換機即可;對于內部網絡吞吐量非常大,內部網絡IO已經成為瓶頸,并且時效性要求非常高的核心業(yè)務,可以使用萬兆網卡和交換機提高性能。
在計算性能上,近年來逐步興起與成熟的語音識別技術和深度學習技術,由于計算量異常巨大,需要依靠GPU加速或者是重核卡的加速才能在可容忍的時間內完成計算,業(yè)界不少的專用集群都配備了GPU或是重核卡。隨著SSD的成本不斷下降,它成為對硬盤IO性能有高要求的應用非常有吸引力的選擇。為了充分復用服務器的資源,將其空閑部分繼續(xù)加以利用,虛擬機技術成為了有效的解決方案;同時虛擬機的資源隔離機制,使得服務器的資源分配可以達到更精細的粒度,從而使資源分配更加合理和高效。業(yè)界不少大數據平臺,都搭建在了虛擬機集群之上。
此外,為了保證服務的高可用性,防止機架、機房甚至是城市的網絡、電源故障等突發(fā)災情,重要的業(yè)務需要進行多機房、多城市的容災部署。
在軟件層面上,第一層首先是云存儲層。按時效性劃分,各個大數據存儲平臺一般分為離線存儲和在線存儲兩種類型。離線存儲用來對超大規(guī)模數據(一般PB以上)進行持久性存儲,適用于數據訪問響應時間要求低(秒級以上)的場景。在主流平臺里最典型的就是hadoop的HDFS。在線存儲用來對海量數據進行實時的訪問,適用于在線服務場景或者是對數據訪問響應時間有高要求的計算任務提供支持的場景。在線存儲不一定需要對數據進行持久化,同時它既可以是原始數據,也可以只是緩存的數據。在主流的平臺里,Memcached是一個分布式內存緩存系統(tǒng),不提供持久化。Redis與Memcached類似,但是它提供了持久化能力及主從同步能力,所支持的數據類型和操作更加豐富。