什麼是大數據隨談

什麼是比高達他?

比高達他?呵呵,其實我想輸入“什麼是大數據”,一不小心大數據敲成了英文Big Data,就成了上面的“什麼是比高達他?”,你大概猜到了我用的是什麼中文輸入法,呵呵,兄弟姐妹大叔大嬸們,我們有很多共同點啊。

今天突然想起來前段時間一個在深圳工作的美國朋友問我,什麼是大數據,多大才算大以至於我們公司才需要大數據技術?我當時給了他一些參考,他還不是很明確。

很有意思的問題,現在我想起這個,直覺告訴我,他們公司還沒有到需要大數據技術的階段吧。

所以就想了想這個什麼是大數據的話題,只是隨便談談,給個精確定義這種事情還是留給搞科研的計算機科學家吧。

從宏觀角度來說,由於各種各樣數據源的增長,譬如包括各種移動設備(智能手機,平板電腦),感應器,監測攝像機,智能電網,社會媒體,在線交易等,我們要存儲和處理的數據量急劇膨脹。據IDC統計,2011年共產生了大約1.8trillion GB數據(1 trillion = 1 million million)!這大約包括500 quadrillion個文件(1 quadrillion=1000 million million)。而且數據量仍以每兩年翻番的速度在增長!除了數據量之大,另一個
現象是數據類型的多樣化,歸納起來有三種,傳統的結構化數據(譬如交易數據,包括購買者姓名,產品名稱,價格,日期等),非結構化數據(譬如一篇博客文章裏的文本)和半結構化數據(譬如XML,email)。隨之而來的一個鮮明特點是非結構化數據佔據了整體數據量的90%以上!

什麼是大數據隨談



面對這樣多樣化大規模的數據,任何一個企業都面臨提升數據處理速度的挑戰!這個包括兩方面,首先,數據產生如此之快(想想Facebook一秒鐘內產生20萬了類似點擊“Like button”這樣事件),你的企業有足夠大的存儲空間來存儲這樣的流數據嘛?其次,響應速度。傳統的數據庫技術處理幾個TB也許沒有問題能很快響應,可是在面臨上百TB就面臨瓶頸了,更不要說如何快速處理大規模文本這樣的非結構化數據了。

所以,下面這3個V的組合就給出了一個很好的大數據定義方式,或者說是大數據給我們帶來的3大挑戰!
  • Volume
  • Velocity
  • Variety
可是,對一個具體的企業來講,多大的數據算大呢?

不好說,你不能給個具體數字,說,瞧,達到這個數量級了纔算。我對我的朋友說,4TB算不算大?大嘛?也許大也許不大。要看你的需求,怎麼處理這些數據。我舉了個很有名的例子。紐約時報曾經需要將4TB的掃描TIFF圖片(幾百萬個圖片)拼成新聞文章並轉換爲PDF文件。他們的技術團隊想到了Amazon AWS。通過使用Amazon EC2 搭建運行一個有100個節點的Hadoop集羣,他們只花了不到1天的時間便完成了該項任務。想想用其他技術,這個要花多長時間呢?

所以,我對他說,你這個數據量大還是不大,取決於你的應用是什麼,你的應用的SLA(Service Level Agreement)或者說你的上司給你完成任務的時間,以及你企業現有系統的存儲和計算能力。

O'Reilly Radar Team的Edd Dumbill這樣定義“大數據”:大數據指的是你的數據超過了傳統數據庫系統處理能力;你的數據太大,產生太快,不能放在你現有的數據管理系統中;爲了從這些數據中提取(商業)價值,你必須選擇不同於傳統數據庫技術的方法來處理他們。

也許我們可以打個有意思的比方,說如果你已經足夠有錢,克隆了一個Facebook那樣的技術團隊,從一開始就構建了他們那樣的體系結構,你又克隆了他們的Business Model, 你有大數據問題嗎?多半你沒有。因爲你沒有他們現有的用戶羣,Google+不是還在拚了老命和Facebook在爭奪用戶嘛,技術和產品可以克隆,但我們的上帝--用戶不一定買你的賬,沒有用戶就沒有數據,就沒有大數據問題。可是Facebook雖然有龐大的一流大數據系統,他們還是會不斷面臨大數據挑戰,因爲他們有大量的用戶和不斷產生的新數據。想一想,每個新老用戶的數據都不能丟棄,是不是這樣?假如我是Facebook註冊的第九個用戶(不要問我前8個是誰),我放了一張照片在上面,然後我就去火星轉了一圈,現在回來了,我希望我再登陸Facebook,我仍然能馬上看到我多年前的照片,如果3秒以內看不到,我頭上就會冒火星,就這麼簡單。

所以下次我可以這麼打個不禮貌的比方跟我的朋友說,如果你只有1萬個註冊用戶,目前只用到一個MySQL服務器,只有1TB硬盤,你只有一臺Web Server,你沒有負載平衡,你的開發小組Release新版本的時候,就是簡單的重啓你的數據庫和你的Web Server,你的客服卻從來沒有接到過用戶抱怨類似爲什麼他們剛剛寫的文章不見了的投訴電話,你沒有大數據問題,但是請不要告訴別人這些;因爲很多的人在絞盡腦汁給MySQL做Sharding和配置主從Cluster,運行多臺Web Server,爲其配置支持Session管理,並在前面加上負載平衡,配以CDN,配以MemCached或者其它in-memory cache,不會同時重啓所有服務器以保證availability,減少用戶操作/數據丟失,另外他們現在又加入了一種叫做Hadoop的利器及基於Hadoop的各種analytics工具和系統做離線處理以進行數據分析,數據挖掘和機器學習以建立模型;他們還擁有另一種利器叫做“NoSQL”,來獲得實時響應的性能;他們可能還擁有第三種利器,叫做什麼,我也不知道,他們還在祕密研發中,我們拭目以待......
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章