陳文光:我看蘆義很快要走了,最近我和煜全合作,大數(shù)據(jù)第一需要數(shù)據(jù),新浪對(duì)數(shù)據(jù)的抓取限制很厲害,我們的帳號(hào)經(jīng)常封了,淘寶也不賣帳號(hào)了,有很大的困難,可能還要考慮怎么獲取數(shù)據(jù)這件事兒,是很大的問題,新浪需要有更加開放的態(tài)度。
我開始今天的報(bào)告。
其實(shí)今天是三個(gè)熱詞的混雜,云計(jì)算、大數(shù)據(jù)日、社交媒體的論壇,所以看起來非常復(fù)雜的一些東西,剛才煜全講的,前兩個(gè)東西都非常的熱,很多人在談云計(jì)算、大數(shù)據(jù),其實(shí)也出現(xiàn)了很多公司產(chǎn)品系統(tǒng)在這方面,其實(shí)社交網(wǎng)絡(luò)在座的人也不找,雖然沒有那么熱,也已經(jīng)非常的熱了。這三個(gè)之間到底什么關(guān)系呢?很簡單,我個(gè)人的看法,云計(jì)算兩件事兒,第一件事兒集中管理,第二件事兒叫做成本降低,由于我們集中在一起管理了,作為資源很好的調(diào)度,但是它是基礎(chǔ)的技術(shù),可以看成底層的技術(shù),從商業(yè)模式來看,可以看成降低管理成本和使用成本的方式。
大數(shù)據(jù)其實(shí)就更加的,我對(duì)這個(gè)詞一直沒覺得,我本人是做高性能計(jì)算的,現(xiàn)在大家講的這個(gè)數(shù)據(jù)量多大算數(shù)據(jù),這個(gè)事兒不是很清楚,我有兩個(gè)解釋跟大家分享,到底什么是大數(shù)據(jù)?社交網(wǎng)絡(luò)在大數(shù)據(jù)命題底下,產(chǎn)生大數(shù)據(jù)的一種途徑,獲得大數(shù)據(jù)的一種途徑。什么是大數(shù)據(jù)呢?大家可能看了很多,第一段話叫數(shù)據(jù)集數(shù)量比我們通常用的軟件工具,能夠處理的更大就算大,這定義等于沒定義,現(xiàn)在Hadoop算不算大數(shù)據(jù)。第二個(gè),咨詢公司給出來的,大的容量,大容量剛才講過,我做高性能計(jì)算,早就見過幾百T的數(shù)據(jù)了,對(duì)我來說不叫大問題。第二個(gè)叫做高速度,這個(gè)數(shù)據(jù)量不僅大,還有很高的數(shù)據(jù)產(chǎn)生數(shù)據(jù),動(dòng)態(tài)變化的過程,這點(diǎn)給處理數(shù)據(jù)帶來了很麻煩的事情,很嚴(yán)重的挑戰(zhàn)。
第三叫做High-velocity,我們數(shù)據(jù)可能是非結(jié)構(gòu)化,很多種類型,怎么把多種類型非結(jié)構(gòu)化數(shù)據(jù)怎么有效的處理起來,因?yàn)橛辛诉@些東西,數(shù)據(jù)量又大,又有很高的產(chǎn)生的速度,產(chǎn)生數(shù)據(jù)的形式又多樣,你怎么能夠處理這些呢?就需要新的處理方式。我們回頭來看,今天叫社交媒體或者社交網(wǎng)絡(luò)的數(shù)據(jù),到底從這三個(gè)角度來看,是不是大數(shù)據(jù)?我們前一段抓了一千萬人的微博,這個(gè)數(shù)據(jù)是5TB,我們知道現(xiàn)在新浪,新聞發(fā)布有4億用戶,這個(gè)數(shù)據(jù)是100TB,100TB我們至少小型公司還沒有太多處理這種數(shù)據(jù)級(jí)別的經(jīng)驗(yàn),但是這個(gè)數(shù)據(jù)還不包括評(píng)論和圖片,只抓了微博本身。另外一類數(shù)據(jù),用戶的profile,新浪所有用戶大概100TB這個(gè)量級(jí)。用戶關(guān)系,新浪三億用戶100GB量級(jí)把用戶和他們之間的關(guān)注關(guān)系表達(dá)出來了,像facebook有10億用戶,新浪今后可能增加到10億用戶這個(gè)量級(jí),也就是幾個(gè)TB量級(jí)的數(shù)據(jù),這個(gè)數(shù)據(jù)不算特別大的。
速度,這個(gè)速度其實(shí)是估算的,只能看一些新聞,因?yàn)闆]有到新浪里面看這個(gè)數(shù)據(jù),每天發(fā)上億條微博,40個(gè)漢字就是280個(gè)字符,做增加一些輔助的鏈接,512個(gè)字節(jié),算這么一個(gè)塊的話,一億條微博就是50GB,一天增加50GB的數(shù)據(jù)量。除了每天發(fā)微博以外,大家關(guān)注關(guān)系在演化,一種增加了新用戶,這樣的增加根據(jù)新浪半年報(bào)來看,半年增加了八千萬用戶,反映到這個(gè)圖上每天增加40萬的結(jié)點(diǎn),關(guān)注關(guān)系一取消就不太好說了。
數(shù)據(jù)的多樣性,首先有微博,微博而且用自然語言來寫的,這里面還有各種各樣的表達(dá)方式,第二是profile,相對(duì)來說比較干凈一點(diǎn),你所在的學(xué)校,性別,出生日期這些東西,相對(duì)比較結(jié)構(gòu)化一點(diǎn),但是有很多自定義的tags,還有用戶關(guān)注關(guān)系,實(shí)際上表達(dá)為一個(gè)復(fù)雜的圖,非常典型的非結(jié)構(gòu)化的數(shù)據(jù),是我們傳統(tǒng)的數(shù)據(jù)庫處理起來比較困難的。另外還有一些是微博的轉(zhuǎn)發(fā)各評(píng)論關(guān)系,實(shí)際上微博的轉(zhuǎn)發(fā)和評(píng)論關(guān)系歸回到原來誰轉(zhuǎn)發(fā)誰的微博,造成人和微博,微博和微博,微博和評(píng)論之間都有很復(fù)雜的關(guān)系,都可以用圖來表示。確實(shí)也具有多種屬性的。
可以說社交網(wǎng)絡(luò)的數(shù)據(jù)是典型的大數(shù)據(jù),它和其他大數(shù)據(jù)有什么區(qū)別呢?我們在學(xué)校接觸政府部門,比如說電力部門,電力部門有很多智能電表,這些數(shù)據(jù)從創(chuàng)業(yè)公司來講,很難獲得的,剛才講到百度或者谷歌,他們植入了很多軟件以后,其實(shí)擁有你的很多信息,包括運(yùn)營商,但是這些信息我們其實(shí)也跟運(yùn)營商去討論過,能不能把你的信息逆命化以后我們拿出來分析,實(shí)際上都是非常隱私。第一,我們很難獲得,第二,獲得以后很難合法使用。但是微博不一樣,協(xié)議就是公開的,你寫這條東西的時(shí)候,你就知道其他人都可以看得到,這是你自愿公開你隱私的東西。我們覺得社交網(wǎng)絡(luò)的數(shù)據(jù),實(shí)際上是用戶自愿公開的隱私的數(shù)據(jù),這是我們創(chuàng)業(yè)者真實(shí)獲得的機(jī)會(huì),只要新浪保持開放的政策,我們希望他能夠做得更加開放。
我們到底期望從中間獲得什么?社交網(wǎng)絡(luò)形成的大數(shù)據(jù),從里面得到什么東西?第二是困難在哪兒?怎么解決它?社交化網(wǎng)絡(luò)分析有各種各樣的內(nèi)容,網(wǎng)絡(luò)的統(tǒng)計(jì)分析,一個(gè)很重要的叫冪律分布,所以是一個(gè)符合左邊這個(gè)圖,大部分人的粉絲數(shù)很說,極少數(shù)人擁有很高的粉絲。社區(qū)發(fā)現(xiàn),我們想知道微博這么大的圖里面,大家比較緊密的形成了哪些很小的社區(qū),這個(gè)是很有用的,舉個(gè)例子,我們要去營銷一個(gè)產(chǎn)品,剛才煜全講過,我朋友推薦一個(gè)東西,或者我關(guān)注的人推銷一個(gè)東西,比一個(gè)商業(yè)帳號(hào)推銷更有用誰有影響力,能影響哪些人?實(shí)際上經(jīng)過分析,這里面很重要的方法,我要能夠定位到很多社區(qū),找那個(gè)社區(qū)里面有影響力的人,這是很重要的方法。
結(jié)點(diǎn)標(biāo)記,很多沉默的大多數(shù),并沒有發(fā)很多微博,但是我知道你關(guān)注了很多人,有些人關(guān)注你,我們怎么能夠通過一些已知的人的特征把他相關(guān)屬性傳播給你,這樣精準(zhǔn)的定位,客戶有非常大的好處等等。更加深入一點(diǎn),我們基于微博內(nèi)容的分析,剛才講了很多,分析只在關(guān)系上完成,當(dāng)你考慮到微博內(nèi)容的時(shí)候,計(jì)算量變得非常龐大,清華做的微博關(guān)鍵詞,很多人都用過,實(shí)際上是最初步微博分析的基礎(chǔ),我們講過大數(shù)據(jù)有速度,實(shí)際上不斷變化和演化的,這個(gè)在目前的微博分析里面,是非常缺失的,主要原因是因?yàn)楝F(xiàn)有的計(jì)算機(jī)系統(tǒng)技術(shù),沒有辦法很好的支持動(dòng)態(tài)網(wǎng)絡(luò)信息的表達(dá)、存儲(chǔ)和使用,沒有跟新浪特別仔細(xì)談過,新浪自己也沒有這樣的數(shù)據(jù),我們剛才講過,我們整個(gè)人的關(guān)注關(guān)系可以表示了一個(gè)圖,這個(gè)圖經(jīng)??梢栽黾右粋€(gè)結(jié)點(diǎn),又要?jiǎng)h除一個(gè)邊,這個(gè)演化的過程非常重要。
我們舉一個(gè)例子,假如說一個(gè)人,我們看到他有很多朋友,在最近一段時(shí)間內(nèi)都從移動(dòng)的客戶轉(zhuǎn)成了聯(lián)通客戶,這個(gè)人很危險(xiǎn),這個(gè)人的朋友里面確實(shí)有一部分是移動(dòng)的用戶,一部分是聯(lián)通用戶,這個(gè)狀態(tài)保持了很久,同樣一個(gè)圖的現(xiàn)狀,對(duì)于這個(gè)用戶的行為可能非常不同的,我們叫做動(dòng)態(tài)網(wǎng)絡(luò)持續(xù)的數(shù)據(jù)是非常重要的,現(xiàn)在是非常缺失的。如果我們要做到對(duì)微博內(nèi)容的實(shí)時(shí)的分析和反饋,實(shí)際上有非常大的計(jì)算量。
舉一個(gè)例子,我們清華唐杰老師做的研究,右邊這個(gè)圖,我們?nèi)蓚€(gè)時(shí)刻網(wǎng)絡(luò)的切片,如果在前面一個(gè)時(shí)刻,B已經(jīng)關(guān)注A了,A也關(guān)注C了,這個(gè)時(shí)候在后面這個(gè)切片里面,這個(gè)B會(huì)關(guān)注C的概率,我們做分析可以得出來,如果我們看到前一個(gè)切片A關(guān)注C,后一個(gè)切片B關(guān)注C,這兩個(gè)概率有明顯的區(qū)別,B關(guān)注A以后的一段時(shí)間內(nèi),B就關(guān)注C,說明A對(duì)B有影響力的,我們?nèi)匀恍枰獎(jiǎng)討B(tài)信息的關(guān)注,這是對(duì)動(dòng)態(tài)網(wǎng)的處理有很大的挑戰(zhàn)。
后面這個(gè)例子是計(jì)算量的示例,betweennes Centrality,核心方法做這個(gè)圖上所有點(diǎn)之間的最短路徑,經(jīng)過多,所謂的betweennes Centrality就更高一點(diǎn)。如果對(duì)新浪微博幾億個(gè)結(jié)點(diǎn),需要多少條邊,計(jì)算量是非常大的,對(duì)我們這個(gè)軟件有非常多的挑戰(zhàn),我們說過傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)好分析,而非結(jié)構(gòu)化數(shù)據(jù)不好分析,其中很重要的原因因?yàn)閳D的數(shù)據(jù)所謂的局部性比較差,計(jì)算機(jī)里面的緩存都有內(nèi)存這樣的東西,因?yàn)樗涯阕畛S玫臄?shù)據(jù)放在cash里面,而跑到內(nèi)存里面去了,大概需要兩百個(gè)時(shí)鐘周期,根據(jù)不同的,這個(gè)速度可能慢十倍。如果說訪問了另外一臺(tái)機(jī)器的新聞,至少需要一千個(gè)以上的周期,所以這個(gè)是提高性能非常大的方法。
數(shù)據(jù)量很大,我們剛才講到新浪微博,肯定要用分布式系統(tǒng)做這個(gè)事情,內(nèi)存和IO的系統(tǒng)來做,可能會(huì)面臨很多的挑戰(zhàn),負(fù)載平衡,還有容錯(cuò),承載很多的時(shí)候錯(cuò)了怎么辦,社會(huì)網(wǎng)絡(luò)圖還有一個(gè)問題,它的結(jié)點(diǎn)非常的不平衡,也就是說,某些人具有非常多的粉絲,大多數(shù)人很少,很多粉絲的人面臨一個(gè)問題,不管放到哪個(gè)里面,都很難去計(jì)算。剛才說的增量的數(shù)據(jù)或者說持續(xù)的數(shù)據(jù)這樣的問題,我們傳統(tǒng)的一些方法,保留多寸快照,這個(gè)數(shù)據(jù)量太大了。還有就是log的方法,我有年初的切片記錄了從年初到現(xiàn)在所有的變化,你得播放多長時(shí)間獲得現(xiàn)在圖的狀態(tài)。基于這個(gè)內(nèi)容的分析,還有實(shí)時(shí)分析和反饋,也是計(jì)算量非常巨大的事情,特別是現(xiàn)有的,現(xiàn)在深入的處理技術(shù)基本上沒有用,一旦用到,它的計(jì)算量過于龐大。
今后這樣的趨勢是什么?實(shí)際上是目標(biāo),我們想知道什么,想從這些數(shù)據(jù)里面拿到什么,這個(gè)要由創(chuàng)業(yè)公司,由社會(huì)學(xué)研究者,由他們提這個(gè)問題,另一類是計(jì)算機(jī)科學(xué)家算法的研究者他們會(huì)根據(jù)這樣的目標(biāo)找到更加好的算法,剛才提的例子,如果我們能夠?qū)ι鐓^(qū)發(fā)展找到不是結(jié)點(diǎn)數(shù)乘以邊數(shù),可以大大提高性能。
第三個(gè)是系統(tǒng),有了目標(biāo)和算法以后仍然需要系統(tǒng)對(duì)它的支持,這種支持也是很困難的,我們現(xiàn)在不管是公司還是學(xué)術(shù)界,在這方面做很多努力。我本人做系統(tǒng)的,我把系統(tǒng)的方式描述一下。解決這個(gè)挑戰(zhàn)主要有三個(gè)方法來做,第一個(gè)是你怎么編程,編程的接口兩個(gè)好處,第一個(gè)讓程序員寫程序更快,運(yùn)行著的系統(tǒng)優(yōu)化這個(gè)程序更加容易,第二是這個(gè)數(shù)據(jù)的存儲(chǔ),存儲(chǔ)存得好,提高這個(gè)數(shù)據(jù)局部性提高性能。第三是性能緩存和通訊的優(yōu)化。第一個(gè)是谷歌,大家知道谷歌專門提出了BSP模型,P同步模型,做一段時(shí)間計(jì)算,再做一段時(shí)間的通信,再同步。但是這種同步的模型大家可以看這個(gè)圖,會(huì)被最慢的系統(tǒng)極大的脫慢性,其他幾個(gè)子任務(wù)早就完了,最慢的任務(wù)決定了整個(gè)任務(wù)的結(jié)果,所以它會(huì)有很大的問題,這是最慢的路徑。
實(shí)際上現(xiàn)在我們科學(xué)界提出了叫做異步并行算法,這個(gè)例子影響傳播,有它的路徑,不需要等到上面都傳完了以后傳到這邊來,異步的傳播有很好的結(jié)果,理論上比這個(gè)同步的方法算法快很多。
剛才講過這個(gè)圖有很多人和很多條邊,有很多的粉絲,像姚晨這樣的,他們很難處理,最近有一種方法提出來,怎么想辦法把這個(gè)界定區(qū)分開劃分成不同的子結(jié)點(diǎn),就是這種GRACE的方式,把次數(shù)降低,不是每次都通信,我們每個(gè)分區(qū)里面做通信,通信完了以后統(tǒng)一和外面進(jìn)行通信。這是一個(gè)結(jié)果,藍(lán)線是谷歌的先提出來的一種方式,這個(gè)Power Graphlab進(jìn)行冪律分析以后拆分可以得到很好的結(jié)果。這是我們做高性能計(jì)算的人更熟悉的方法,實(shí)際關(guān)系不多講了。
這個(gè)可能對(duì)大家有一點(diǎn)用,GraphChi,社會(huì)網(wǎng)絡(luò)的數(shù)據(jù)還是很大,但是也沒有那么大,剛才講到關(guān)系數(shù)據(jù),其實(shí)是幾百GB量級(jí)的數(shù)據(jù),對(duì)于這樣的數(shù)據(jù),如果自己只有一個(gè)筆記本,大概有個(gè)4G、8G的內(nèi)存,怎么想辦法在筆記本上做圖的分析,這個(gè)GraphChi的系統(tǒng),通過數(shù)據(jù)做成多個(gè)切片,分析某一個(gè)切片的時(shí)候,把那個(gè)切片的數(shù)據(jù)放到內(nèi)存里面來。還做了一個(gè)事情是排序,把這個(gè)數(shù)據(jù)按照一定方式排序以后,每次讀硬盤或者讀SSD的時(shí)候是順序讀的,順序讀大大減少了隨機(jī)讀的次數(shù),也可以很好的提高性能,大家有興趣可以自己看一下使用,也非常得好用。
對(duì)于時(shí)序數(shù)據(jù)的分析的存儲(chǔ),既比較省空間又能夠提高比較好的局部性,而且它的訪問效率還很高,你需要獲得某個(gè)時(shí)間切片的時(shí)候要很長時(shí)間,具體有很多技術(shù)內(nèi)容不講了。
實(shí)際上還有編程方面的關(guān)系時(shí)間關(guān)系不講了,這個(gè)問題還沒有完,我們做的是這個(gè)圖已經(jīng)不再時(shí)序的更新了,左邊輸入里沒有,我們就在這兒做一個(gè)存儲(chǔ),在這個(gè)存儲(chǔ)里面存很長時(shí)間的一段的圖,可以輸出任意時(shí)刻的流。
我總結(jié)一下,社會(huì)網(wǎng)絡(luò)分析我們認(rèn)為它是典型大數(shù)據(jù)分析的問題,需要處理數(shù)據(jù)的大容量,高速變化速度和數(shù)據(jù)的復(fù)雜,社會(huì)網(wǎng)絡(luò)分析主要的方法是圖的方法,就是圖的算法,局部性、大數(shù)據(jù)量和大計(jì)算量對(duì)這個(gè)系統(tǒng)提出很多的挑戰(zhàn),我們現(xiàn)在在通過國內(nèi)外的學(xué)者和公司通過編程抽象、數(shù)據(jù)存儲(chǔ)這幾個(gè)方面的挑戰(zhàn)來做。謝謝大家。