1. 程式人生 > >大資料架構及行業大資料應用

大資料架構及行業大資料應用

 今天要和大家分享一 些南大通用CTO武新所總結的底層資料處理技術的發展趨勢和正在經歷的巨大變革。 這個領域過去5年發展很快、熱度很高,目前還在起步階段。
1.資料價值的發現與使用
先不說什麼是大資料,這個爭議很多,我也說不清楚。不過我個人認為在大資料的4個V中,最顯著的特徵應該是Value(價值),其他幾個V都很模糊。也就是說,不管資料多大,是什麼結構,來源如何,能給使用者帶來價值的資料是最重要的資料。
我們都知道對資料價值的挖掘一直是使用者在做的事情,這個在IT出現之前古人已經在實踐了,而且有不少成功案例。“眼觀六路,耳聽八方”可能是最形象的資料採集方法。我跟資料打了20多年的交道,從來沒感覺到搞資料的地位有今天這麼高。 那麼到底什麼變了,讓我們這麼熱衷“大資料”?我感覺是整個社會對資料的認知變了,開玩笑說大資料是什麼很難說清楚,但它目前最大的貢獻至少是讓社會各個層面開始認識到資料的重要性,包括最高領導和底層的老百姓。奧巴馬搞了個“Big DataInitiative”,有點類似布什當年的“InformationHighway”(這個推動了網際網路的發展),讓世界發現美國人在動真格了。 目前大家基本達成共識:資料象石油、煤一樣是寶貴的資產,其內在的價值非常巨大。另外一個顯著的貢獻無疑是網際網路企業對於資料的巧妙使用和價值體現,這裡面的案例就很多了。 2. 資料處理技術的回顧

網際網路的資料“大”是不爭的事實,現在分析一下資料處理技術面臨的挑戰。目前除了網際網路企業外,資料處理領域還是傳統關係型資料庫(RDBMS)的天下。傳統RDBMS的核心設計思想基本上是30年前形成的。過去30年脫穎而出的無疑是Oracle公司。全世界資料庫市場基本上被Oracle,IBM/DB2,Microsoft/SQL Server 壟斷,其他幾家市場份額都比較小。SAP去年收購了Sybase,也想成為資料庫廠商。有份量的獨立資料庫廠商現在就剩下Oracle和Teradata。開源資料庫主要是MySQL,PostgreSQL,除了網際網路領域外,其他行業用的很少。
這些資料庫當年主要是面向OLTP交易型需求設計、開發的,是用來開發人機會話應用為主的。這些傳統資料庫底層的物理儲存格式都是行儲存,比較適合資料頻繁的增刪改操作,但對於統計分析類的查詢,行儲存其實效率很低。在這些成熟的資料庫產品中,有2個典型特例:一個是Teradata,一個是Sybase IQ(盧總是專家)。

Teradata一開始就使用MPP(MassiveParallel Processing)架構,以軟硬一體機的產品方式提供給客戶,其定位是高階客戶的資料倉庫和決策分析系統,Teradata在全世界的客戶只有幾千個。 在這個資料分析高階市場上,Teradata一直是老大,在資料分析技術上Oracle和IBM打不過Teradata。Sybase IQ是一款最早基於列儲存的關係型資料庫產品,其定位跟Teradata類似,不過是以軟體方式銷售的。Teradata和Sybase IQ在資料分析應用上的效能其實都比Oracle,DB2等要普遍好。
圖1 資料庫發展歷史
3.資料增長加速,資料多樣化,大資料時代來臨
現在看看為什麼資料的量突然在快速增長。如果說現在是大資料時代了,其實是資料來源發生了質的變化。在網際網路出現之前,資料主要是人機會話方式產生的,以結構化資料為主。所以大家都需要傳統的RDBMS來管理這些資料和應用系統。那時候的資料增長緩慢、系統都比較孤立,用傳統資料庫基本可以滿足各類應用開發。


網際網路的出現和快速發展,尤其是移動網際網路的發展,加上數碼裝置的大規模使用(CCD,CMOS技術的大規模產業化),今天資料的主要來源已經不是人機會話了,而是通過裝置、伺服器、應用自動產生的。傳統行業的資料同時也多起來了,這些資料以非結構、半結構化為主,而真正的交易資料量並不大,增長並不快。機器產生的資料正在幾何級增長,比如基因資料、各種使用者行為資料、定位資料、圖片、視訊、氣象、地震、醫療等等。


另外,我們每個人也在不知不覺中不斷產生著大量的資料(比如這個論壇,除了我正在寫的內容,後臺可以產生10倍以上的資料和衍生的資訊:誰在關注、在哪裡、關注的這些人有哪些共性、用的是什麼終端。系統甚至可以實時分析出大家對我講的內容情緒是什麼,可以預測最終給打多少分等。如果我有這類實時的系統反饋,那麼可以實時調整要講的內容,等等,想象空間可以很大)。


所謂的“大資料應用”主要是對各類資料進行整理、交叉分析、比對,對資料進行深度挖掘,對使用者提供自助的即席、迭代分析能力。還有一類就是對非結構化資料的特徵提取(指紋、影象、語音自動識別、基因資料比對等),以及半結構化資料的內容檢索(搜尋)、理解(語義分析)等。


傳統資料庫對這類需求和應用無論在技術上還是功能上都幾乎束手無策。這樣其實就給類似Hadoop的技術和平臺提供了很好的發展機會和空間。網際網路公司自然就選擇能支撐自己業務的開源技術了,反過來又推動了開源技術的快速發展。
4.新的資料處理技術、產品和創新

為了應對資料處理的壓力,過去十年間在資料處理技術領域有了很多的創新和發展。除了面向高併發、短事務的OLTP記憶體資料庫外(Altibase,Timesten),其他的技術創新和產品都是面向資料分析的,而且是大規模資料分析的,也可以說是大資料分析的。

在這些面向資料分析的創新和產品中,除了基於Hadoop環境下的各種NoSQL外,還有一類是基於Shared Nothing架構的面向結構化資料分析的新型資料庫產品(可以叫做NewSQL),如:Greenplum(EMC收購),Vertica(HP 收購),Asterdata(TD 收購),以及我們在國內開發的GBase 8a MPP Cluster等。目前可以看到的類似開源和商用產品達到幾十個,而且還有新的產品不斷湧出。一個有趣的現象是這些新的資料庫廠商多數都還沒有10年曆史,而且發展好的基本都被收購了。收購這些新型資料庫廠商的公司,比如EMC、HP,都希望通過收購新技術和產品進入大資料處理市場,是新的玩家。SAP除了收購Sybase外,自己開發了一款叫HANA的新產品,這是一款基於記憶體、面向資料分析的記憶體資料庫產品。

這類新的分析型資料庫產品的共性主要是:
* 架構基於大規模分散式計算(MPP)
* 硬體基於X86 PC 伺服器
* 儲存基於伺服器自帶的本地硬碟
* 作業系統主要是Linux
* 擁有極高的橫向擴充套件能力(scale out)和內在的故障容錯能力和資料高可用保障機制
* 能大大降低每TB資料的處理成本,為“大資料”處理提供技術和價效比支撐。 總的來看,資料處理技術進入了一個新的創新和發展高潮,機會很多。這裡的主要原因是一直沿用了30年的傳統資料庫技術遇到了技術瓶頸,而市場和使用者的需求在推動著技術的創新,併為此創造了很多機會。在大資料面前,越來越多的使用者願意嘗試新技術和新產品,不那麼保守了,因為大家開始清晰地看到傳統技術的瓶頸,選擇新的技術才有可能解決他們面臨的新問題。

現在的總體趨勢是在資料量快速增長、多類資料分析並存的需求壓力下,資料處理技術朝著細分方向發展,過去30年一種平臺滿足所有應用需求的時代已經過去。我們必須開始根據應用需求和資料量選擇最適合的產品和技術來支撐應用。世界資料處理市場格局正在發生革命性的變化,傳統資料庫(OldSQL)一統天下變成了OldSQL+NewSQL+NoSQL+其他新技術(流、實時、記憶體等)共同支撐多類應用的局面。在大資料時代,需要的是“八仙過海”,是資料驅動最優平臺和產品的選擇。

圖2  資料處理的市場格局變化
5. MPP關係型資料庫(New SQL)與Hadoop的非關係型資料庫(NoSQL)
新的技術主要是MPP架構的新型資料庫和Hadoop生態環境,我對MPP比較熟悉,Hadoop略知一點,主要談談MPP的優勢。

大資料儲存技術路線最典型的共有三種:

第一種是採用MPP架構的新型資料庫叢集,重點面向行業大資料,採用Share Nothing架構,通過列儲存、粗粒度索引等多項大資料處理技術,再結合MPP架構高效的分散式計算模式,完成對分析類應用的支撐,執行環境多為低成本PCServer,具有高效能和高擴充套件性的特點,在企業分析類應用領域獲得極其廣泛的應用。

這類MPP產品可以有效支撐PB級別的結構化資料分析,這是傳統資料庫技術無法勝任的。對於企業新一代的資料倉庫和結構化資料分析,目前最佳選擇是MPP資料庫。
圖3  MPP架構圖 第二種是基於Hadoop的技術擴充套件和封裝,圍繞Hadoop衍生出相關的大資料技術,應對傳統關係型資料庫較難處理的資料和場景,例如針對非結構化資料的儲存和計算等,充分利用Hadoop開源的優勢,伴隨相關技術的不斷進步,其應用場景也將逐步擴大,目前最為典型的應用場景就是通過擴充套件和封裝Hadoop來實現對網際網路大資料儲存、分析的支撐。 這裡面有幾十種NoSQL技術,也在進一步的細分。對於非結構、半結構化資料處理、複雜的ETL流程、複雜的資料探勘和計算模型,Hadoop平臺更擅長。

第三種是大資料一體機,這是一種專為大資料的分析處理而設計的軟、硬體結合的產品,由一組整合的伺服器、儲存裝置、作業系統、資料庫管理系統以及為資料查詢、處理、分析用途而特別預先安裝及優化的軟體組成,高效能大資料一體機具有良好的穩定性和縱向擴充套件性。
6.資料倉庫的案例
個人對資料倉庫比較熟悉,所以可講講。我們拿大家熟悉的資料倉庫(Data Warehouse=DW)來看看資料分析的價值。

在網際網路高速發展之前,無論是電信運營商,還是大銀行,保險公司等都花費了鉅額資金建立了自己的企業級資料倉庫。這些倉庫主要是為企業決策者生成企業的一些關鍵指標(KPI),有的企業有幾千張、甚至上萬張KPI報表,有日表,周表,月表等等。這些系統有幾個主要特徵:

技術架構主要基於傳統RDBMS + 小型機 + 高階陣列 (就是大家說的IOE),當然資料庫有部分DB2,Teradata等。
報表基本都是固定的靜態報表,產生的方式是T+1 (無法即時產生)。
資料量增長相對緩慢,DW的環境變化很少。
終端使用者只能看彙總的報表,很少能夠基於彙總資料做動態drilldown (鑽取)。
多數領導基本上認為花了很多錢,但看不出是否值得做,有雞肋的感覺。最後大家對大量的報表都視而不見了。
這類系統屬於“高富帥”,是有錢的企業給領導用的。

目前多數企業和部門根本就沒有資料倉庫。其實大家對傳統資料的分析還沒做得太好、還沒有普及,現在又遇上了大資料。 用3個案例,講講資料分析能力和分析結果的巧妙使用比資料大更重要。
第一個案例:
在90年代後期,法國電信決定建立自己的核心資料倉庫(專案的名字很有詩意,叫“Symphony”),把當時法國使用者全部的話單資料(固網電話,那時還沒有現在的移動手機)彙集到一個數據庫中,用話單資料跟使用者的其他屬性做交叉統計,看看有什麼消費行為和規律。專案需求是負責Marketing的部門提出的,技術部門負責實施。

這個專案當時在世界上是最大的民用資料庫,30TB資料規模,光磁碟陣列就佔了很大的一個機房。經過大量的投資和艱苦的建設(第一期使用的是Oracle 7, 剛開始有分割槽功能),第一批統計資料終於跑出來了。我記得最清楚的一個是通話時長的分佈。 大家驚奇的發現有很大一部分通話不超過1分鐘(大概是30%以上,不記得準確的數字了),而且跟使用者其他特徵關聯不大。

隨後,為了推動消費,Marketing部門想出了一招,很快法國電信推出廣告,大致是“為了給大家提供更好的社交便利,我們決定從xx日起降低電話通訊費用30%,大家可以多打電話,可多跟家人、朋友聊天了……”。

從廣告發布的第二個月開始,統計顯示大家打電話的次數增加了,這給法電帶來了更多的收入。這裡面的貓膩是第一分鐘的話費沒有降,是從第二分鐘開始降低30%,而大家覺得打電話便宜了,自然打的次數就多了。
第二個案例是個相反的案例:
說明技術平臺對需求的滿足有時很難。這個案例不是自己經歷過的,是聽比較靠譜的朋友講的。
大家每年過春節都發很多簡訊。運營商因此掙很多錢。中國早就是世界上簡訊第一大國。據說有一年的春節期間,某電信運營商的老大突然問IT部門老大要每個小時一共發了多少簡訊的實時統計資料。IT老大找底下的運營部門要,居然沒有人能把這個簡單的資料按時統計出來。大家可想像那個電信運營商老大是什麼反應:投資了上百億的系統,竟然連個這麼簡單的問題都回答不了。

我分析當時的原因可能有2個:一是運營商是按省份建立資料倉庫的,而全國的資料需要彙總所有省份的統計,很難;二是在每個省的資料倉庫裡統計這個資料沒有可用的報表,臨時用SQL統計可能要跑很長時間(雖然是個簡單的select count(*),但要全表掃描肯定不會快的)。這是個典型的技術拖了需求後腿的案例。
第三個案例
這是法國一家著名超市集團在90年代就通過A/B試驗和資料分析總結出的一個商品在超市最佳擺放位置的案例。這個案例肯定沒有比大家都知道的“尿布與啤酒”那麼經典,但實用性很強,今天仍然在使用,大家不信下次可以去超市買東西時驗證下。

問題的起源是“針對同一型別中不同品牌、不同價格、不同利潤的商品,擺在貨架的什麼位置最容易銷售出去?”。為了科學的回答這個問題,這家超市組織了真實試驗以獲得真實資料。試驗很簡單,比如把1個商品先擺在貨架高處,然後擺在中間、最後擺在底下的位置,每次擺放的時間一樣長。試驗期間不斷收集不同商場的銷售資料,最後的統計結果發現當把商品擺放在跟多數人視野水平高度接近的位置時,商品賣的最好。據說後來還諮詢了心裡學專家解釋這個現象,原因好像大家無意中關注的重點就是視野的水平方向。

大家可以試驗下,今天多數超市都把最貴或者利潤最高的商品放在跟多數人視野水平高度接近的位置,而最便宜的同類商品放在最底層,其他的放在最高層。當然,這個規律可以進一步細化,比如給小孩的糖果都擺的比較低、在結帳臺附近等等。知道了這個規律,大家可以省些錢的,哈哈!

從這3個案例可以看出,在沒有“大資料”概念之前,大家已經在用不同手段從資料中獲得有價值的資訊並推動了企業的業務發展。今天的“大資料”可能是把資料探勘方法、用資料思維的方式更廣泛的使用而已。7.資料處理技術的核心問題到底是什麼?
其實我們一直面臨著資料處理中最核心、最大的問題,那就是效能問題。效能不好的技術和產品是沒有生命力的。資料處理效能問題不是因為大資料才出現,也不會有了大資料技術而消失。這是個“道高一尺,魔高一丈”的問題:處理效能的提升將促進對資料價值的挖掘和使用,而資料價值挖掘的越多、越深入,對處理技術要求就越高。

上面的案例其實已經說明了因為效能問題,目前的資料倉庫只能滿足一些靜態統計需求,而且是T+1模式;也是因為效能問題,運營商無法有效構造超過PB級別的大資料倉庫,無法提供即席查詢、自助分析、複雜模型迭代分析的能力,更無法讓大量一線人員使用資料分析手段。

今天如果做“大資料”資料倉庫,運營商面臨的挑戰比上個10年要大的多。目前沒有單一技術和平臺能夠滿足類似運營商的資料分析需求。可選的方案只能是混搭架構,用不同的分散式技術來支撐一個超越PB級的資料倉庫系統。這個混搭架構主要的核心是新一代的MPP並行資料庫叢集+ Hadoop叢集,再加上一些記憶體計算、甚至流計算技術等。

為什麼今天的挑戰更大,主要是下面幾個原因:
第一個原因是資料量已經是上一代的一個數量級了,1個省份級運營商1年就可超越1PB結構化資料,其中尤其是資料業務產生的日誌資料在智慧終端普及下爆炸式增長,而這些資料其實跟網際網路企業採集到的移動資料完全一樣,運營商可以獲得甚至比網際網路企業更多的資料。這些資料還屬於正常業務產生的資料。如果把交換機、基站等產生的資料(部分非結構化)加進來(關注網路服務質量),把內容資料也加進來(關注使用者訪問的內容),最終的資料量可能還要上一個數量級。明天何鴻陵會詳細介紹運營商面臨的資料和技術挑戰,我也是班門弄斧了。

第二個原因是“大資料”關注的更多是使用者行為、群體趨勢、事件之間的相關性等,而不僅僅是過去的KPI,說穿了就是開始關注終端使用者的行為,為精細化營銷、優化企業流程、降低運營成本等做支撐。這就對資料分析平臺對資料的分析能力和效能提出了新的要求和挑戰。這些要求跟上一代資料倉庫相比不僅僅是量的改變,而是質的改變。比如對大表之間的關聯、複雜的OLAP函式、複雜的資料探勘函式等。

所以我想講的是我們需要多元化的技術來支撐大資料了。 圖4  未來大資料處理的核心技術
這個圖可能就是未來幾年大資料處理的核心技術所在。當然網際網路公司另論了。

下面是招標書中對業務需求的描述: “模型必須包含使用者軌跡模型和使用者交往圈模型。使用者軌跡模型是指記錄使用者在通訊網路中的xxx等資訊,分析使用者的移動路徑,瞭解使用者的生活軌跡,以更好地為精確營銷類應用提升資料支撐,同時為網路可管理的科學選址奠定位置基礎。使用者交往圈分析是指對CDR清單資料中蘊含的使用者之間的社會關係進行分析挖掘,得出基於使用者通話行為的社交網路交往圈,同時結合使用者位置軌跡資訊,發掘交往圈中經常處於同一位置範圍內的使用者,並對交往圈中的使用者進行分群,從而以交往圈的角度,深入瞭解客戶,提升客戶價值,為使用者維繫挽留,離網預警,精確營銷提供支撐”
而招標書中對資料探勘的需求更是關係型資料很難解決的: “大資料平臺具備非結構化資料處理能力(文字分詞),支援多維社交網路分析、路徑分析等大資料深度分析功能,支援經典資料探勘演算法,包括:邏輯迴歸、聚類、決策樹。”
從上面標書內容可以看出,無論是對資料處理平臺的技術,還是業務需求都跟上一代資料分析平臺有了巨大的差別。比如需要MPP與Hadoop Map Reduce的融合,需要分析使用者的交往圈、移動路徑等等。這些網際網路企業在做的大資料分析,傳統企業也開始做了。
8. 總結 - 新型MPP資料庫的價值
技術:基於列儲存+MPP架構的新型資料庫在核心技術上跟傳統資料庫有巨大差別,是為面向結構化資料分析設計開發的,能夠有效處理PB級別的資料量。在技術上為很多行業使用者解決了資料處理效能問題。

使用者價值:新型資料庫是執行在x-86PC伺服器之上的,可以大大降低資料處理的成本(1個數量級)。

未來趨勢:新型資料庫將逐步與Hadoop生態系統結合混搭使用,用MPP處理PB級別的、高質量的結構化資料,同時為應用提供豐富的SQL和事務支援能力;用Hadoop實現半結構化、非結構化資料處理。這樣可同時滿足結構化、半結構化和非結構化資料的處理需求。

下面這個圖是我們正在做的產品架構圖,將逐步把MPP與Hadoop技術融合在一起,為使用者提供透明的資料管理平臺。
圖5  MPP與Hadoop技術融合的產品架構圖