軟件發展主要是兩件事:簡單性和模塊化,簡單是簡化情況以解決問題,模塊則是為了分工合作。大數據發展完美詮釋了這個過程。
大數據,是在網頁檢索中發展起來的,其中關鍵是 Google,它奠定了大數據技術的基礎。
網頁檢索,海量數據,面臨很多挑戰。
海量網頁(ye)存儲,但現有存儲系統,“貴”、“不(bu)易擴展”、“數據存儲還不(bu)可靠”(注(zhu):Raid5重建,慢,且(qie)重建過(guo)程中(zhong)壞(huai)盤(pan),則就(jiu)無法(fa)恢(hui)復了)。
Google據此,推出(chu)GFS分布式文(wen)件系(xi)統,它有如下特點:
■ 獨立元數據節點。
■ 不要Raid,多機存多份(使用廉價服務器群,并認為故障是常態)。
■ 不(bu)刪除,不(bu)修(xiu)改,只添加和覆蓋(一次寫,多(duo)次讀)。
海量網頁需要建立(li)索(suo)引(yin),但現有數(shu)據庫寫入性能(neng)低,檢索(suo)起來慢。
分析,大數據(ju)(ju)(ju)下(xia)的讀(du)寫模型(xing)和傳統數據(ju)(ju)(ju)庫(ku)有(you)差異,傳統數據(ju)(ju)(ju)庫(ku)模型(xing),大量時間在硬盤尋址(zhi)上,所以(yi)Google推出BigTable非關系型(xing)數據(ju)(ju)(ju)庫(ku),它有(you)如下(xia)特點(dian):
■不要多表 。
■不要回滾 。
■不要格式校驗 。
■不要觸發器 。
■批量讀數據,減少磁頭尋址時間。
■數據容忍丟失,大量緩存,排好序一次寫。
■多(duo)費些硬盤,對關(guan)鍵值Hash,快速查找 。
網頁詞頻分析,需分布式計算,但編程復雜。
分析,計(ji)算(suan)(suan)過(guo)程中,大部(bu)分運算(suan)(suan)是矩陣運算(suan)(suan),矩陣運算(suan)(suan)可分解(jie)(jie)為(wei)小(xiao)矩陣乘積。據此,Google推出(chu)MapReduce計(ji)算(suan)(suan)框(kuang)架,它簡化計(ji)算(suan)(suan)模型,只解(jie)(jie)決80%的場(chang)景問(wen)題,過(guo)程抽(chou)象如下:
■ Map過程:“數據分N份,每個數據獨立映射”,這部分可高度并發。
■ Reduce過程:數據集數據進行合并運算。
■ 分布式(shi)調度(du)框架(jia):調度(du)原則為“移動(dong)計算比(bi)移動(dong)數(shu)據更(geng)便宜”。
檢索中,用(yong)戶輸入和(he)結果(guo)之間,是(shi)(shi)先知(zhi)經(jing)驗,有各種方(fang)法(fa)可(ke)定義經(jing)驗,Google的方(fang)法(fa)是(shi)(shi)“知(zhi)識圖譜”,觀點(dian)是(shi)(shi)“數據足(zu)夠,通過常用(yong)的統計,足(zu)可(ke)模擬出(chu)大(da)部分人的先知(zhi)經(jing)驗”。
檢索中,多(duo)媒體理(li)解的需求越(yue)(yue)來越(yue)(yue)多(duo),Google提出的理(li)念是:“數據比(bi)算法重要,如訓練數據合理(li)且充分(fen),簡(jian)單(dan)的模型也可無限逼近現(xian)實”,近年(nian)來,語音和智能識別的突破方向,也說(shuo)明(ming)了這(zhe)種趨勢(shi)。
大數據的(de)發(fa)展歷(li)史,給(gei)我們很多(duo)啟示(shi):“簡(jian)單拿來主義是不夠的(de),更重(zhong)要(yao)的(de)是,要(yao)以問題(ti)出發(fa),在(zai)(zai)行業理解的(de)基礎(chu)上(shang),模(mo)型充分(fen)簡(jian)單化(hua),并在(zai)(zai)過程中,要(yao)有(you)打破傳統思(si)維的(de)勇氣(qi)”。