包括以下四個方面內容:
第一,大數據計算的背景和問題
第二,介紹Hadoop這個軟件是一個什么樣的東西
第三,我們在這方面做的一些工作
第四,實際應用案例
大數據計算我們把它理解成為一個什么事情呢?目前現在這個時代通信、網絡等等這些電子信息技術發展,使數據規模得到了極大的增加。剛才蔣先生也提到了2011年整個全球產生的數據量達到1.8ZT,這樣的數據量為傳統的處理數據的技術提出了挑戰。傳統的技術處理不了這樣規模大的數據量。所以現在提到了,企業里怎么樣才能把數據變成價值?以前我們都說叫業務為王,現在這個時代,我認為它已經轉換到了以數據為王的時代。
這兒有一個例子,如果我們要處理100TB的數據,如果用一臺機器處理的話,假設每秒鐘掃描50兆,需要35000分鐘,用1000臺機器干這個事可以縮到35分鐘,這說明這么大的數據只能用多機分布并行的方式處理才能夠把時間大大的縮短。在應用領域,比如說數據倉庫、日志分析、用戶行為分析、在線行為分析,這些都屬于大數據應用計算的應用領域。數據的一些具體問題這里有一些數字,去年Facebook已經有6億用戶,現在這個數字已經變成9億了,每個月這些人上傳照片10億,每天產生300TB的數據,所以什么樣的公司能承受這樣的數據量?它一定有自己的辦法。
國內淘寶大概有3.7億會員,商品是8.8億,每天交易近1000萬筆,每天會產生20TB數據。從總的全球數據增長趨勢看,我們現在2010年是1.8, 20年后會增大44倍。60%創造的數據會因為沒有辦法存儲而丟失,所以整個挑戰就是數據報帳對存儲效率都會提出一個挑戰。
第一個矛盾就是數據的增長太快了,但是想一想,我們如果想把這些東西存儲下來必須要有機器,必須要盤陣等等一系列的東西。等你發現數據中心擴容中心和數據增長的速度相比較而言不匹配的時候,就會產生一個很劇烈的矛盾。我們在和Facebook做一些合作的時候,09年的時候他們出現了這樣的問題,老的數據已經滿了,新的數據正在建還沒有建好,這樣的空檔期所有的數據都有可能被扔掉。大家知道互聯網企業對數據價值很重視,所以我們合作的時候發明了一項新技術,使得它在原有600臺機器的情況下平滑的遷移。
第二個是業務深度不斷加強。但是現在處理性能和處理技術跟不上。我希望從大數據里挖掘更有價值的東西但是沒有“金剛鉆”,所以歸結起來大家看到的矛盾就是這兩方面的矛盾。
解決這個問題的思路就是我先要能存下來這些數據,要盡量多的存更多的數據。第二個思路就是怎么能夠加快海量數據計算的速度和性能。舉一個例子Facebook的09年的例子,(PPT)紅框里是核心業務,最核心的是Hadoop,這是一個很大規模的集群,09年的時候大概是600到1000臺的規模,現在規模更大了。Hadoop就是把所有的數據全部存到這個集群里,這個集群不光是存儲,它是一臺一臺的機器,利用每臺機器硬盤存儲空間存儲數據。這些數據包括哪些?第一用戶的信息、前端服務器和用戶信息服務器和所有的日志就是用戶在上面點擊產生的數據都會放到Hadoop集群里。放到這里干什么用呢?就是要挖掘關聯關系,分析用戶行為。
比如說舉一個簡單的例子,我通過用戶日志的分析能夠判別你的偏好,你喜歡哪些方面的內容?或者說你本人是什么性別、年齡段,都可以通過這種方式分析。所以可想而知,這些數據對于像Facebook這樣的互聯網公司是多么的重要。這些數據除了直接可以在上面做分析以外,還可以給BI工具提供一個輸入。這是09年的架構。這個架構到現在為止應該有一些變化,但是Hadoop核心定位是沒有變的。包括國內一些大的很著名的互聯網公司都借鑒了這樣的架構。所以可想而知Hadoop在互聯網公司的作用是多么的重要。
下面講一下Hadoop的來源。Hadoop 是Doug做的這么一個軟件,02年他打算做一個網頁檢索軟件,沒有任何思路。03年Google發表了兩篇論文,他受到這兩篇論文的啟發,把這兩篇論文主要的思想借鑒過來,形成了現在的Hadoop的雛形。06年的時候他命名這套軟件是Hadoop,這套軟件最早開始的是06年開始的。08年的時候Hadoop軟件成為了Apache的基金項目,雅虎在后面支撐這個軟件的開發。Hadoop它有一些特點,是全部用JAVA來寫的,它可以跑在我們常見的商用的高故障率的服務器上甚至PC上。
雅虎內部人告訴我說說Hadoop是繼Linux以來最成功的開源軟件。Hadoop組成部分,包括克隆了Google的GISI系統,包括克隆了并行計算框架,上面有很多不同的組成部分。它上面有MapReduce它可以提供一個接口,DBA可以利用這個接口寫數據處理。此外還有多其他的組成部分,整個這樣一套東西叫Hadoop。目前現在看起來這些所有上的東西都一個一個逐漸的變成了一些Apache的頂級項目了,但是我們通常把這一套叫Hadoop。
Hadoop HDFS體系結構:
它是多集群處理,利用每個機器硬盤處理。它的數據分成塊,這些塊是有副本的,這些副本是存在不同的機器上的。為什么要這么做呢?就是因為硬件有可能出故障,如果硬件出故障以后存儲在機器上的這個塊不可用了,但是因為也副本,所以其他機器上可以把相應的塊拿出來用,所以整個系統可靠性非常高。
第二個就是處理流程。處理流程是兩個計算過程。第一個計算過程相當于分配任務,我可以把任務分幾百萬分,分到很多機器上去算,計算完了以后有一個歸約過程,把中間結果再歸約處理,最后得出結果。這種處理方向很適合做文本處理。再講一下我們做的實際工作:
我們做的工作是跟Facebook的合作,就是叫行列混合式數據存儲技術,英文是RCFile。大家知道關系數據是一張表,這個表怎么存到硬盤上?有很多種不同的格式,我們選取的格式希望有利于節省存儲空間。比他們先進的地方就在于,我們用的是行列混合式,既不是行式,也不是列式,是混合在一起。這樣比純粹行存儲節省20%的空間。比如他們原來600臺機器存不下了,用這個模式就存下了。比純粹列式要節省23%。
第二個技術是CCIndex技術,這個技術是希望在數據模型中間取一個折中,讓數據庫有查詢的能力。它最終的效果就是,我們比它最傳統的二級索引快10倍。
下面講一個實際應用:我們是和淘寶合作,這是淘寶的一個應用,叫數據魔方,它能夠把所有交易數據拿出來,去到敏感的,拿給第三方看,相當于是數據服務。這個界面是淘寶網女裝行業,一個月成交金額是35億6千萬人民幣,平均單價是179塊錢。我們做的工作是什么呢?我們做的工作主要是在硬件規模保持不變的前提下,把系統處理的數據時效范圍從7天擴大到3個月,數據量是幾個TB,這些數據中我們要實時的算出來,比如總金額、平均單價,平均件數等都要實時的算出來。對比之前的數據,大概處理數據規模增大了一個數量級,而延遲甚至比原來的小。
總結:大數據計算技術的發展趨勢就是三個字“大、快、準”,我們目前處在的階段是“快”階段,“準”這個事目前還沒有太好的技術能夠出現。
第二個就是數據計算模式是有變化的,以前是以計算為中心,以機器為中心,現在以數據為中心。在這樣的變化前提下,很多新的技術涌現出來,比如說Hadoop。出現了這些新的技術,新的市場也會出現。目前看起來一些大的軟件廠商,比如說Oracle,它直接在它的Big Data里內嵌了一個Hadoop做大數據處理。這些廠商也在關注Hadoop軟件。
第三,數據規模對傳統的關系型數據庫的技術提出了挑戰。關系型數據庫技術也在經歷一些變革。NoSQL技術是對關系數據庫的一個有利補充,這是實際需求導致的結果。實際需求就是量太大了,但是功能并不像SQL那么全,我只需要一個子集,這樣技術可以簡化,NoSQL技術比關系數據庫技術要簡單,但是它的價值取向是快,是可以擴展的,性能要好。