1. 程式人生 > >sevenot簡談大數據

sevenot簡談大數據

素材 臃腫 理念 roc 不能 語言 pm2.5 架構 mon

說到大數據,可以稱是老生常談了。但可以這樣說,時至今日,還有很多IT從業者沒有真正的理解何為大數據,大數據是用來解決什麽問題。特別是不少從事售前、客戶代表的工作者,無論什麽項目都要和大數據扯上關系,生怕表現得不專業。現在網上也有很多文章都有介紹大數據的前世今生,介紹大數據在各行各業的應用,但還是讓不少人不得其奧秘。我寫這篇文章,先拋開當下熱門的大數據技術,避開復雜的專業用語,用盡量白話的方式來談談大數據究竟為何物,究竟是何用途,希望能為大數據學者提供一個學習讀物。如有任何不妥、錯誤的地方,還請各位多多指教。

我覺得大數據可以從狹義和廣義上來理解,從狹義上來講就是當前的大數據技術和應用場景,廣義上來將大數據可以歸為一個範疇。好了不多說,免得各位讀者暈頭轉向,我先從狹義上來講大數據。即大數據究竟為何種技術。


什麽是數據

要說大數據,我們先說說什麽是數據。
“數據是事實或觀察的結果,是對客觀事物的邏輯歸納,是用於表示客觀事物的未經加工的的原始素材。”(百度百科)
是不是看起來不好理解,沒關系,我舉幾個例子。看圖:

技術分享圖片

(1)我們描述第一張圖,用t來表示溫度,當t=0時,水結成冰。我們把t=0當做一個數據,這一個數據就描述了第一幅圖。

(2)現在描述第二張圖,我們只列舉幾個汽車的指標,加速度a,最大速度v,制動系數β,耗油系數γ。那麽我們把a,v,β,γ的取值當做4個數據,我們用這4個數據描述了第二幅圖。
(3)接著描述第三張圖,我們同樣只列舉幾個天體運行參數,星體質量m,運行半徑r,公轉周期T,自轉周期t。同樣我們把m,r,T,t的取值當做4個數據,我們用這4個數據描述了第三幅圖。


(4)第4張圖是股票,我已近想不出來用什麽數據來描述股票市場了,復雜程度已超出我的理解了。
說了這麽多,那數據是什麽?數據其實就是我們對事物的一種描述,事物越復雜,我們需要的數據也就越多。例如天體運行,我們很難用語言文字來詳細描述天體運行狀態,比如用語言詳細描述地球現在運行在什麽位置,所以我們用數學的方式,以方程式為體現,來對事物進行描述。用數學的方式將事物抽象成上面的數據已經將事物的描述簡化到一定程度,但是對於計算機來理解還是過於復雜,我們便用編碼的方式將數據做成了計算機可以理解的0和1。這些對事物的描述,即是數據。


當代數據的特點

那麽高度信息化的今天,我們的數據又有什麽樣的特點呢?

時代發展越來越快,我們對世界的認識進一步加深,我們需要記錄的東西越來越多,不單單是量越來越大,種類也越來越多。從以前紙質記錄文字,到錄音機記錄聲音,再到後來的視頻等等。

隨著信息產業的飛速發展,我們不能再像以前一樣用紙筆來留存數據,也不能像上世紀70、80年代的計算機紙帶打孔器來記錄,傳統的數據庫軟件好像也不能滿足我們現有的存儲需求。我們面臨的問題:數據量越來越大,數據種類越來越多,傳統IT架構越來龐大、臃腫,傳統IT技術效率越來越低下。同時,我們對數據的安全,數據的共享,數據的使用也有了更高的需求。


需求驅動新興技術

就在這時,我們的IT精英充分發揮了聰明才智。隨著互聯網的發展,數據的存儲、共享、管理、使用和傳統的數據處理方式有了很大的變化。為了適應當前數據的管理要求,先驅們在理論上和技術大施拳腳,創造發明了一系列新理念新技術來解決數據日益膨脹帶來的問題。隨之便出現了一系列廣為人知的數據處理技術,比如以分布式存儲、並行式計算為核心架構的Hadoop。因此,我把當前新興的、不同於傳統的數據管理技術和先進的數據使用、管理理念,統一稱之為大數據
不知道說到這,小夥伴們對大數據有一個初步的認識沒有。


一個例子

在開始講大數據的特點及核心要素之前,我先講個大家都能明白的例子,使得大家能夠更好地理解文章後面的內容。
這個例子就是全國人口普查。2010年開展了第6次全國人口普查,普查內容包括:性別、年齡、民族、受教育程度、行業、職業、遷移流動、社會保障、婚姻生育、死亡、住房情況等。第六次人口普查登記(已上報戶口)的全國總人口為1,339,724,852人。對於最後這個數字的由來,過程是很艱辛的,在信息化還不那麽發達的2010年,並不是我們在電腦中統計×××號的個數就能得來的,還需要我們的民警進行核對、校驗、排錯,最後才得到的這個統計結果。
那麽各位小夥伴們,你們想一想,如果是你們來策劃人口普查,會是怎樣的思路?下面分享一下我的思路:
首先我會細化統計單元,從省-市-區縣-街道(這是我舉的是例子,不是實際的行政區域劃分),執行單位從上往下依次為公安部,各省公安廳,各市公安局,各區縣公安局,各街道派出所。公安部要求各省公安廳,在規定時間內統計該省人口數量信息,然後各省公安廳要求市公安局,市公安局要求區縣公安局,區縣公安局要求街道派出所,派出所給各位民警分配具體的任務,每位民警統計哪些小區、商鋪等,統計該街道的人口信息,然後做一個累加,核對、校驗、排錯,得出最後結果。
這個例子,體現了兩個重要的數據處理思想,並行計算,分布式存儲。
什麽叫並行計算,就是大家在同一時間進行計算,就如上面的例子,江西省的民警和廣東省的民警同時在統計各自轄區的人口。如果不是並行計算,而是1個民警來進行全國性的統計,這個工作是不是就會花費非常多的時間。
那什麽是分布式存儲,就是一份信息,拆分成1個或多個部分,存在不同的地方,可能備份多次。比如上面的例子,湖南省某市某區某街道派出所,在完成了該轄區的統計工作後,統計信息先存在本地,再依次上報給區公安局,市公安局、省公安廳、公安部。這樣這個地區的統計信息將儲存在多個地方,最後公安部將有最全面的統計信息。這樣公安部的統計信息就很難丟失。
上面人口普查的例子,不知道小夥伴們理解得怎麽樣。為了再深入一步,我再舉一個例子——支付寶的風控大腦,詳細信息參看:
http://www.sohu.com/a/164126216_297161


大數據的真正用途

那麽講到現在,我要說說大數據的真正用途了,也可以說是數據的真正用途。我覺得用6個字就可以概括:找規律,找聯系。

馬克思主義中提到,我們要認識事物發展的客觀規律和內在聯系。我們認識世界的過程,就是一個找規律的過程,我們通過無數地觀察、比對找到天體運行規律,通過分析、推演找到物種進化的規律,通過實驗找到腸胃消化的規律。這也就好比機器在大數據中進行學習的過程,比如支付寶風控大腦這個例子,計算機采集盡量多的數據,進行統計學分析,來對客戶進行身份驗證,這就是找規律的一個很好的體現。
當然,找事物的客觀發展規律和內在聯系是大數據的真正用途,但不是終極目標,我們的終極目標是通過認識事物的發展規律和內在聯系,從而充分發揮人的主觀能動性來改造世界使我們的世界更加美好(雖說有些科技破壞環境,但我們的願景是美好的)。而計算機發揮能動性,又得提到了另一個火熱的技術,人工智能。大數據為人工智能做了鋪墊。好了,點到為止,不扯遠了。
總之來講,大數據是用來幫助人們尋找規律和內在聯系的。機器的運算速度快,運算量大,可以長時間高負荷運行,這是人所沒有的優勢,所以在未來的發展中,數據科學一定會是熱門的學科之一。


大數據技術覆蓋範圍

大數據技術是很多技術的一個總稱,其覆蓋的範圍包括數據采集、數據存儲、數據建模、數據分析和數據變現,我簡單的解釋一下這部分。
數據采集,即數據從何而來,這個範圍涉及很廣。比如原始數據采集,像我們的物聯網項目中,傳感器可以采集各種數據,溫濕度,PM2.5指數,噪聲分貝等等。又比如某網站的訪問量,某資源的下載量和瀏覽量等等,這都可以當做數據采集。這裏會涉及的技術包括傳感器,Apache/Nginx網站架構等。
數據存儲,這個好理解,即是我們怎麽存儲我們采集到的數據。可以采用關系型或非關系型數據庫進行存儲,也可以采用文本文件txt進行存儲。
數據建模,即我們怎麽建立對數據的基本處理方法,像上文提到的人口普查,就是一個數量累加的操作,當然我們要解決的遠不是數據累加這樣簡單的基本模型,比如支付寶的風控大腦,就需要建立一個復雜的數學模型。
數據分析,這樣是數據處理極為核心的一部分。在建立起模型後,我們要把數據帶入到模型中進行分析,包括但不限於校隊、核查、統計、分類。如人口普查的例子,我們是不是需要對“黑戶”進行單獨處理,是不是需要對人口流動進行單獨分類排重。這裏我暫時不展開講,數據分析是體現數據價值最直觀、有效的方式。
數據變現,即我們對數據進行一系列操作後得到的結果。我們費了那麽多力,最後得出的結果必然要對我們的實際生產有指導效果,肯定不能得到的結果是一堆無用的統計數字。數據變現的方式有很多種,可以是我們給領導匯報的PPT材料,可以是指導國家制定計劃生育政策的參考數據,也可以是支付寶有效放到的重要保障。反正就一點,產生的數據一定要有價值,這就是數據變現的核心思想。


大數據的兩大核心要素

我覺得,大數據技術的核心要素有兩部分,第一是數據,第二是模型。

首先說數據,上文我也說了,當前數據的膨脹速度可以說是非常嚇人,我覺得用摩爾定律來形容數據增長毫不誇張,我們的數據呈指數級增長是有目共睹的。那麽這就有3個關鍵問題需要我們解決。數據的存儲、數據的安全與災備、數據的調用。

當前,數據計量早已突破GB單位,PB、EB、ZB級別的數據量也不再罕見。數據的存儲便成為一個很大的問題。在硬件層面上,從早期的軟盤、光盤、機械硬盤,到後來的RAID、固態硬盤等等,數據量的膨脹也在催生存儲介質的研究發展。在軟件層面,如何存儲數據也很關鍵,如果選取的技術不當,也會造成數據使用的困擾,比如一個以txt形式存儲Apache的日誌文件,可能會到達幾十GB,而這樣大的文本文件讀起來是非常困難的。在架構層面上,如何進行架構設計、技術選型,也是非常關鍵,選用何種數據庫最實惠,是選擇分布式存儲還是集中式,小企業是否采需要采購雲服務商的數據存儲服務。這幾個層面上的問題都是我們在解決數據存儲時需要面對的。

數據的安全與災備,這是老生常談的問題了。如何進行數據的安全防護,如何設置數據的共享機制,以及大量的數據如何進行備份,我在這裏也就不多說了,數據安全問題從來都是熱門話題。

數據存儲的第3個問題,就是數據調用。我所說的數據調用,即是使用何種手段、方法去訪問數據。還拿日誌文件說事,MySQL的日誌文件直接讀取不直觀,用mysqldump來讀取就直觀一點;比如數據庫中的大表,在大表中查詢一個數據會較費時;再比如P2P網絡中對資源的調度。當然如果數據量少,傳統的方式還能夠應付,但當要處理海量數據時,數據調用方法的細微差距會導致系統運行質量的天差地別。

上面說的是大數據核心要素中的數據部分,下面我說一下大數據處理模型。

所謂模型,通俗來講,就是我們如何處理數據,數據處理完畢以後要得出怎樣的結果。在我們開始一項工作之前,我們首先得要有明確的目標,有了明確目標以後,我們需要分析,為了達到這個目標,我們可能需要哪些數據,這些數據是怎樣對結果產生影響的。

建模這一過程,我用一個簡單的方程式來表述:

y=f1(x1)+f2(x2)+f3(x3)+f4(x4)+......

我們用y來表示我們最後要尋找的結果,x1、x2、x3、x4......就是我們預先判斷會影響結果y的因子,f1、f2、f3、f4......表示這些因子會怎樣來影響結果y。首先我們要建立這樣一個模型,然後開始采集數據並進行統計、回歸分析。在分析的過程中可能會排除一些無關因子,也可能發現一些新因子,這樣需要對原模型進行修改。我舉一個上世界80年代的例子,一位普林斯頓大學的經濟學家奧利·阿什菲爾特對葡萄酒的品質做了一個量化計算:

葡萄酒的品質=12.145+0.00117×冬天的降雨量+0.0614×葡萄生長期平均氣溫-0.00386×收獲季節降雨量

這就是奧利對大量數據進行分析後,使用統計、回歸的數學方法找到的葡萄酒品質的規律。

我舉的這個例子很簡單,現在我們的實際生產中可能要面對的更復雜的需求和更難預知的模型,但是建模的中心思想都是一樣的。就如支付寶風控大腦,為了判斷出支付操作人是否為賬戶所有人,風控大腦要采集多維度的數據來進行綜合判斷。


寫在最後

感謝小夥伴的閱讀,如有不妥之處,還望各位小夥伴多多指教。



sevenot簡談大數據