查 禮 程學旗
(中國科學院計算技術(shù)研究所網(wǎng)絡(luò)數(shù)據(jù)科學與工程重點實驗室 北京 100190)
天璣大數(shù)據(jù)引擎及其應(yīng)用
查 禮 程學旗
(中國科學院計算技術(shù)研究所網(wǎng)絡(luò)數(shù)據(jù)科學與工程重點實驗室 北京 100190)
大數(shù)據(jù)計算面對的是傳統(tǒng) IT 技術(shù)無法處理的數(shù)據(jù)量超大規(guī)模、服務(wù)請求高吞吐量和數(shù)據(jù)類型異質(zhì)多樣的挑戰(zhàn)。得益于國內(nèi)外各大互聯(lián)網(wǎng)公司的實際應(yīng)用和開源代碼貢獻,Apache Hadoop 軟件已成為 PB 量級大數(shù)據(jù)處理的成熟技術(shù)和事實標準,并且圍繞不同類型大數(shù)據(jù)處理需求的軟件生態(tài)環(huán)境已經(jīng)建立起來。文章介紹了大數(shù)據(jù)計算系統(tǒng)中存儲、索引和壓縮解壓縮的硬件加速三項研究工作,即 RCFile、CCIndex 和 SwiftFS,有效解決了大數(shù)據(jù)計算系統(tǒng)的存儲空間問題和查詢性能等問題。這些研究成果已形成關(guān)鍵技術(shù)并集成在天璣大數(shù)據(jù)引擎軟件棧中,直接支持了淘寶和騰訊公司的多個生產(chǎn)性應(yīng)用。
大數(shù)據(jù)引擎;數(shù)據(jù)存儲;行列混合;聚簇索引
近年來,越來越多的國內(nèi)外互聯(lián)網(wǎng)公司和傳統(tǒng)企業(yè)都已意識到數(shù)據(jù)資產(chǎn)規(guī)?;瘞淼臐撛趦r值。這些呈爆炸性增長的數(shù)據(jù)資產(chǎn)的類型以非結(jié)構(gòu)化和半結(jié)構(gòu)化為主,如何低成本且高效率地存儲和處理 PB1至 EB2量級的數(shù)據(jù)成為業(yè)界面臨的極大挑戰(zhàn)。谷歌(Google)公司陸續(xù)提出了 MapReduce[1]編程框架,GFS3Google File System,谷歌公司為了存儲海量搜索數(shù)據(jù)而設(shè)計的專用文件系統(tǒng)文件系統(tǒng)[2]以及BigTable[3]存儲系統(tǒng),從而成為大數(shù)據(jù)處理技術(shù)的開拓者和領(lǐng)導者。而源于這三項技術(shù)的 Apache Hadoop[4]等開源項目則成為大數(shù)據(jù)處理技術(shù)的事實標準,迅速推廣應(yīng)用于國內(nèi)外各大互聯(lián)網(wǎng)企業(yè),成為 PB 量級大數(shù)據(jù)處理的成熟技術(shù)和系統(tǒng)。天璣大數(shù)據(jù)引擎是構(gòu)建在 Hadoop 之上的面向大數(shù)據(jù)計算(Big Data Computing)的工具集,其中包含了很多天璣團隊既有的研究成果。這些研究成果已在互聯(lián)網(wǎng)公司實際生產(chǎn)系統(tǒng)上經(jīng)受住考驗,如 RCFile 已應(yīng)用到 Facebook(臉書)公司、CCIndex 已應(yīng)用于淘寶網(wǎng)的“數(shù)據(jù)魔方”、ICTBase 已應(yīng)用到騰訊“廣點通”等。這些關(guān)鍵技術(shù)構(gòu)成了天璣大數(shù)據(jù)引擎的核心競爭力,軟件的生態(tài)環(huán)境也借由開源社區(qū)得到良性發(fā)展。
什么是大數(shù)據(jù)?麥肯錫公司的報告《大數(shù)據(jù):創(chuàng)新、競爭和生產(chǎn)力的下一個前沿領(lǐng)域》中給出的大數(shù)據(jù)定義是:大數(shù)據(jù)指的是規(guī)模超過現(xiàn)有數(shù)據(jù)庫工具獲取、存儲、管理和分析能力的數(shù)據(jù)集,并強調(diào)并不是超過某個特定數(shù)量級的數(shù)據(jù)集才是大數(shù)據(jù)。國際數(shù)據(jù)公司(IDC)用四個維度的特征來定義大數(shù)據(jù),即數(shù)據(jù)集的規(guī)模(Volume)、數(shù)據(jù)流動的速度(Velocity)、數(shù)據(jù)類型的多少(Variety)和數(shù)據(jù)價值的大小(Value)。亞馬遜的大數(shù)據(jù)科學家 John Rauser 的定義比較直接:“超過單臺計算機處理能力的數(shù)據(jù)量則為大數(shù)據(jù)”。最后我們來看看維基百科上的大數(shù)據(jù)定義:大數(shù)據(jù)指的是數(shù)據(jù)規(guī)模龐大和復雜到難以通過現(xiàn)有的數(shù)據(jù)庫管理工具或者傳統(tǒng)的數(shù)據(jù)處理應(yīng)用程序進行處理的數(shù)據(jù)集合。
上述大數(shù)據(jù)的概念中無一例外地都突出了“大”字。從表面上看,數(shù)據(jù)規(guī)模的增長的確為處理數(shù)據(jù)帶來了很大的問題。具體來說,在同樣時間內(nèi)獲取與以前相同價值的數(shù)據(jù)變得不可為了。換言之,本質(zhì)問題是數(shù)據(jù)的價值密度變低了,數(shù)據(jù)交換速率變慢了,所以催生了很多新型數(shù)據(jù)處理技術(shù)和工具,如 Google 的谷歌文件系統(tǒng)(GFS)和 MapReduce、Apache Hadoop 生態(tài)系統(tǒng)、美國伯克利大學 AMPLab 的 Spark 等。同時出現(xiàn)了對時間敏感程度不同的計算模式,如批式計算模式、交互式計算模式、流計算模式和實時計算模式等。計算模式的差異決定了獲取價值的技術(shù)不同,其選用取決于上層業(yè)務(wù)需求。實際上,所謂大數(shù)據(jù)問題的本質(zhì)應(yīng)是數(shù)據(jù)的資產(chǎn)化和服務(wù)化,而挖掘數(shù)據(jù)的內(nèi)在價值是研究大數(shù)據(jù)的最終目標。如何解決數(shù)據(jù)資產(chǎn)化和價值挖掘問題,以及如何保證需求挑戰(zhàn)和技術(shù)選型之間的平衡已經(jīng)成為業(yè)界關(guān)注的焦點。
2.1 谷 歌
谷歌在搜索引擎上所獲得的巨大成功,很大程度上是由于采用了先進的大數(shù)據(jù)管理和處理技術(shù)。這些技術(shù)是針對搜索引擎所面臨的日益膨脹的海量數(shù)據(jù)存儲問題以及在此之上的海量數(shù)據(jù)處理問題而設(shè)計的。
針對內(nèi)部網(wǎng)絡(luò)數(shù)據(jù)規(guī)模超大的特點,谷歌提出了一整套基于分布式并行集群方式的基礎(chǔ)架構(gòu)技術(shù),利用軟件處理集群中經(jīng)常發(fā)生的節(jié)點失效問題。谷歌使用的大數(shù)據(jù)平臺包括四個相互獨立又緊密結(jié)合在一起的系統(tǒng):GFS、針對谷歌應(yīng)用程序的特點提出的 MapReduce 編程模式、分布式的鎖機制 Chubby 以及大規(guī)模分布式數(shù)據(jù)庫BigTable。
GFS 是一個大型的分布式文件系統(tǒng),它為谷歌云計算提供海量存儲,并且與 Chubby、MapReduce 和 BigTable 等技術(shù)結(jié)合得十分緊密,處于系統(tǒng)的底層。它與傳統(tǒng)的分布式文件系統(tǒng)有許多相同的目標,例如性能、可伸縮性、可靠性以及可用性。除此之外,它的設(shè)計還受到谷歌應(yīng)用負載和技術(shù)環(huán)境的影響。相對于傳統(tǒng)的分布式文件系統(tǒng),為了達到成本、可靠性和性能的最佳平衡,GFS 從多個方面進行了簡化:(1)采用集中式元數(shù)據(jù)管理;(2)不緩存數(shù)據(jù);(3)在用戶態(tài)下實現(xiàn);(4)只提供專用接口。另外,GFS 還將節(jié)點失效視為系統(tǒng)的常態(tài),提供了極強的系統(tǒng)容錯功能;設(shè)置三個數(shù)據(jù)塊副本,以增強數(shù)據(jù)可靠性;使用了鏈式寫和版本控制的雙重保證,以確保數(shù)據(jù)一致性,即數(shù)據(jù)塊的所有在線副本組成一條寫更新鏈,用戶進行寫操作時,數(shù)據(jù)鏈式寫入所有副本,當鏈上的所有副本都完成更新后,寫操作才會成功,并更新對應(yīng)數(shù)據(jù)塊的版本號。
MapReduce 是處理海量數(shù)據(jù)的并行編程模式,用于大規(guī)模數(shù)據(jù)集的并行運算。MapReduce通過“Map(映射)”和“Reduce(化簡)”這兩個簡單的概念來參加運算。用戶只需要提供自己的Map 函數(shù)以及 Reduce 函數(shù)就可以在集群上進行大規(guī)模的分布式數(shù)據(jù)處理。這一編程環(huán)境能夠使程序設(shè)計人員在編寫大規(guī)模的并行應(yīng)用程序時不用考慮集群的可靠性和可擴展性等問題。應(yīng)用程序編寫人員只需要將精力放在應(yīng)用程序本身,關(guān)于集群的處理問題則交由平臺來完成。與傳統(tǒng)的分布式程序設(shè)計相比,MapReduce 封裝了并行處理、容錯處理、本地化計算和負載均衡等細節(jié),具有簡單而強大的接口。正是由于 MapReduce 具有函數(shù)式編程語言和矢量編程語言的共性,使得這種編程模式特別適合于非結(jié)構(gòu)化和結(jié)構(gòu)化的海量數(shù)據(jù)的搜索、挖掘和分析等應(yīng)用。
Chubby 是提供粗粒度鎖服務(wù)的一個文件系統(tǒng),它基于松耦合分布式文件系統(tǒng)設(shè)計可靠的存儲,解決了分布的一致性問題。這種鎖只是一個建議性的鎖而不是強制性的鎖。通過使用Chubby 的鎖服務(wù),用戶可以確保數(shù)據(jù)操作過程中的一致性。GFS 使用 Chubby 來選取一個 GFS主服務(wù)器,BigTable 使用 Chubby 指定一個主服務(wù)器并發(fā)現(xiàn)和控制與其相關(guān)的子表服務(wù)器。
大規(guī)模分布式數(shù)據(jù)庫 BigTable 是基于 GFS和 Chubby 開發(fā)的分布式存儲系統(tǒng)。很多應(yīng)用程序?qū)τ跀?shù)據(jù)的組織是非常有規(guī)則的。一般來說,數(shù)據(jù)庫對于處理格式化的數(shù)據(jù)是非常方便的,但是由于關(guān)系數(shù)據(jù)庫要求很強的一致性,很難將其擴展到很大的規(guī)模。為了處理谷歌內(nèi)部大量的格式化以及半格式化數(shù)據(jù),谷歌構(gòu)建了弱一致性要求的大規(guī)模數(shù)據(jù)庫系統(tǒng) BigTable。BigTable 在很多方面和數(shù)據(jù)庫類似,但它并不是真正意義上的數(shù)據(jù)庫。而谷歌包括 Web 索引和衛(wèi)星圖像數(shù)據(jù)等在內(nèi)的很多海量結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)都是存儲在 BigTable 中的。BigTable 的內(nèi)容按照行來劃分,將多個行組成一個小表(Tablet),保存到某一個服務(wù)器節(jié)點中。
2.2 Hadoop
Apache Nutch 是 Hadoop 的源頭。該項目始于 2002 年,是 Apache Lucene 的子項目之一。當時的系統(tǒng)架構(gòu)尚無法擴展到存儲并處理擁有數(shù)十億網(wǎng)頁的網(wǎng)絡(luò)化數(shù)據(jù)。谷歌于 2003 年在SOSP4Symposium on Operating Systems Principles,操作系統(tǒng)原理會議上公開了描述其分布式文件系統(tǒng)的論文The Google File System(《谷歌文件系統(tǒng)》),為Nutch 提供了及時的幫助。2004 年,Nutch 的分布式文件系統(tǒng)(NDFS5Nutch Distributed File System)開始研發(fā)。同年,谷歌在OSDI6Operating Systems Design and Implementation,操作系統(tǒng)設(shè)計與實現(xiàn)國際會議上發(fā)表了題為 MapReduce: Simpli fi ed Data Processing onLarge Clusters(《MapReduce—簡化的大規(guī)模集群數(shù)據(jù)處理》)的論文,受到啟發(fā)的道●卡廷(Doug Cutting)等人開始實現(xiàn) MapReduce計算框架,并與 NDFS(Nutch Distributed File System)結(jié)合起來,共同支持 Nutch 的主要算法。至 2006 年,這個框架逐漸成為一套完整而獨立的軟件,命名為 Hadoop。2008 年初,Hadoop 成為 Apache 的頂級項目,不僅用于雅虎(Yahoo! ),還在眾多互聯(lián)網(wǎng)企業(yè)得以應(yīng)用。
Hadoop 的核心由兩部分組成:HDFS 和MapReduce,其中 HDFS 是 Google GFS 的開源版本,是一個高可靠的分布式文件系統(tǒng)。它能夠提供高吞吐率的數(shù)據(jù)訪問能力,適合存儲海量(PB 級)數(shù)據(jù),其實現(xiàn)原理如圖 1 所示。
HDFS 全部在用戶態(tài)使用 Java 語言編寫。目錄節(jié)點(NameNode,也是主節(jié)點)在系統(tǒng)中只有一個實例,采用鍵值(Key-Value)全內(nèi)存式管理模式,用于管理文件系統(tǒng)的元數(shù)據(jù)。元數(shù)據(jù)包括名字空間、副本數(shù)量及位置與文件到塊的映射關(guān)系。數(shù)據(jù)節(jié)點(DataNode)負責固定大小數(shù)據(jù)塊的存儲(通常為64 MB)。一個文件(home/foo/data)由存儲在多個數(shù)據(jù)節(jié)點上的數(shù)據(jù)塊構(gòu)成,客戶端訪問數(shù)據(jù)時經(jīng)由目錄節(jié)點獲得數(shù)據(jù)塊的存儲位置,再與數(shù)據(jù)塊所在的數(shù)據(jù)節(jié)點交互,寫入或讀出數(shù)據(jù)。
MapReduce 計算框架實現(xiàn)了由谷歌工程師提出的 MapReduce 編程模型,其原理如圖 2 所示。
圖 1 HDFS 組成及實現(xiàn)原理Fig. 1. Implementation principle and components of HDFS
圖 2 MapReduce 編程模型示意圖Fig. 2. Programming model of MapReduce
當一個 MapReduce 作業(yè)提交給 Hadoop 集群時,相關(guān)的輸入數(shù)據(jù)將首先被劃分為多個片斷,然后由作業(yè)跟蹤程序(Job Tracker)挑選空閑的任務(wù)跟蹤器(Task Tracker)對數(shù)據(jù)片斷并行地執(zhí)行 Map 任務(wù)。接著這些由 Map 任務(wù)產(chǎn)生的中間記錄會被再次劃分并由作業(yè)跟蹤程序挑選空閑的任務(wù)跟蹤器對它們并行地執(zhí)行 Reduce 任務(wù),從而獲得和每個鍵值相對應(yīng)的數(shù)據(jù)集合作為運算結(jié)果。這樣的過程將被反復執(zhí)行,直到 MapReduce作業(yè)中所有的 Map 任務(wù)和 Reduce 任務(wù)執(zhí)行完畢。
雖然在 Hadoop 中有名的是 MapReduce 及其分布式文件系統(tǒng) HDFS,但還有其他關(guān)聯(lián)項目支持開發(fā)的工具提供配套和補充性服務(wù)。這些關(guān)聯(lián)項目之間的關(guān)系如圖 3 所示。各關(guān)聯(lián)項目的特征如下:
(1)HDFS:以塊數(shù)據(jù)為單位存儲并具有副本機制的分布式文件系統(tǒng);
(2)MapReduce:分布式數(shù)據(jù)處理模式和執(zhí)行環(huán)境;
(3)Hive:分布式數(shù)據(jù)倉庫,用于管理 HDFS中存儲的數(shù)據(jù),并提供基于 SQL 的查詢語言(由運行時解釋引擎轉(zhuǎn)換為 MapReduce 作業(yè))用以查詢數(shù)據(jù);
(4)Mahout:其主要目標是構(gòu)建可擴展的機器學習算法庫,目前主要支持三種類型用例,推薦、聚類和分類;
(5)Pig:一種運行在 MapReduce 和 HDFS 的集群上的高層(High Level)數(shù)據(jù)流語言和運行環(huán)境,用以檢索海量數(shù)據(jù)集;
(6)Oozie:一個對 Hadoop 上運行作業(yè)進行管理的工作流調(diào)度器系統(tǒng)。Oozie 工作流是放置在 DAG(有向無環(huán)圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop 的 Map/Reduce 作業(yè)、Pig 作業(yè)等),其中指定了動作執(zhí)行的順序。使用hPDL(一種 XML 流程定義語言)來描述 DAG;
圖 3 Apache Hadoop 生態(tài)系統(tǒng)構(gòu)成示意圖Fig. 3. Apache Hadoop ecosystem
(7)HBase:一個分布式列存儲數(shù)據(jù)庫,使用HDFS 作為底層存儲,同時支持 MapReduce 的批式計算和點查詢(隨機讀取);
(8)ZooKeeper:一個分布式高可用的協(xié)同服務(wù),提供分布式鎖相關(guān)的基本服務(wù),用于支持分布式應(yīng)用的構(gòu)建;
(9)Flume:一個高性能的日志收集系統(tǒng),具有分布式、高可靠、高可用等特點,支持對海量日志采集、聚合和傳輸。Flume 支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送端,同時,F(xiàn)lume 提供對數(shù)據(jù)的簡單處理,并具有分發(fā)到各數(shù)據(jù)接收端的能力;
(10)Sqoop:一個可將 Hadoop 和關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)相互遷移的工具??蓪㈥P(guān)系數(shù)據(jù)庫(例如 MySQL、Oracle、Postgres 等)中的數(shù)據(jù)導入到 Hadoop 的 HDFS 中,也可以將 HDFS 的數(shù)據(jù)導入到指定的關(guān)系數(shù)據(jù)庫中;
(11)Ambari:一個基于 Web 的 Hadoop 機群管理和監(jiān)控工具。Ambari 目前已支持大多數(shù)Hadoop 組件,包括 HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop 和 Hcatalog 等。
2.3 Spark
Apache Spark 是由加州大學伯克利分校 AMP實驗室(Algorithms, Machines and People Lab)于2011 年啟動研發(fā)的分布式大數(shù)據(jù)計算軟件棧。如圖 4 所示,Spark 與 Hadoop 具有很多相似和相融之處,比如兩者均可定位為面向大數(shù)據(jù)的分布式計算系統(tǒng),Spark 目前還依賴 Hadoop 中的 HDFS 作為數(shù)據(jù)存儲等。Spark 比 Hadoop 優(yōu)越的地方在于可以支持多種類型負載。換句話說,Spark 可以同時支持批式、流式、迭代和實時這四種大數(shù)據(jù)計算模式。Spark 的核心技術(shù)和創(chuàng)新在于引入名為彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset,RDD)的系統(tǒng)抽象。RDD 是分布在一組節(jié)點中的只讀對象集合。Spark 對 RDD 的操作有兩種類型,即轉(zhuǎn)換操作(Transformations)和行動操作(Actions)。不像Hadoop 只提供了 Map 和 Reduce 兩種計算方式,轉(zhuǎn)換操作包括 map、filter、flatMap、sample、groupByKey、reduceByKey、union、join、cogroup、mapValues、sort 和 partionBy 等;行動操作包括 count、collect、reduce、lookup 和 save等。因為 RDD 為只讀,所以轉(zhuǎn)換操作會生成一個新的 RDD,但并不是立即執(zhí)行這個計算,只有遇到行動操作的時候才會真正進行計算。這種設(shè)計使得 Spark 可以更加高效地運行。
圖 4 Spark 與 Hadoop 生態(tài)系統(tǒng)間的關(guān)聯(lián)關(guān)系Fig. 4. Apache Stack and Hadoop software stack comparison
為了充分利用機群的聚合 I/O 能力,需要對 RDD 進行分區(qū),以便數(shù)據(jù)分散存儲到機群的各個服務(wù)器上,這時會根據(jù)記錄的主鍵進行分區(qū)(如 Hash 分區(qū))。RDD 根據(jù) useDisk、useMemory、deserialized 和 replication 四個參數(shù)的組合可以提供 11 種存儲級別。RDD 可以全部裝載到內(nèi)存中,每次 RDD 的轉(zhuǎn)換操作結(jié)果都可以存放到內(nèi)存中,而下一個轉(zhuǎn)換操作可以直接從內(nèi)存中輸入,省去了 MapReduce 大量的磁盤 I/O操作。這對于迭代運算比較常見的機器學習和數(shù)據(jù)挖掘算法來說,系統(tǒng)性能提升很大。RDD 都是可序列化的,當前 RDD 默認存儲于內(nèi)存,但當內(nèi)存不足時,RDD 會自動溢出到磁盤,這一過程對編程人員以及最終用戶來說是透明的。為了保證 RDD 中數(shù)據(jù)的可靠性,RDD 數(shù)據(jù)集通過所謂的血統(tǒng)關(guān)系(Lineage)記住了它是如何從其他 RDD 中演變過來的。相比其他系統(tǒng)的細顆粒度內(nèi)存數(shù)據(jù)更新級別的備份或者 LOG 機制,RDD 的 Lineage 記錄的是粗顆粒度的特定數(shù)據(jù)轉(zhuǎn)換操作。當這個 RDD 的部分分區(qū)數(shù)據(jù)丟失時,它可以通過 Lineage 獲取足夠的信息來重新運算和恢復丟失的數(shù)據(jù)分區(qū)。這種粗顆粒的數(shù)據(jù)模型,會限制 Spark 的適用場景,但同時相比細顆粒度的數(shù)據(jù)模型,也帶來了性能的提升。
Spark 使用 Scala 開發(fā),默認使用 Scala 作為編程語言。編寫 Spark 程序比編寫 Hadoop MapReduce 程序要簡單得多,寫 Spark 程序的一般步驟就是創(chuàng)建或使用(SparkContext)實例,使用 SparkContext 創(chuàng)建 RDD,然后就是對 RDD 進行轉(zhuǎn)換操作或行動操作。Spark 中的應(yīng)用程序稱為驅(qū)動程序,可以在單節(jié)點上或機群上執(zhí)行。對于機群執(zhí)行,Spark 依賴于 Mesos 資源管理器。Mesos 為上層應(yīng)用提供了必要的分布式資源管理與調(diào)度功能。
2.4 發(fā)展趨勢
從當今 IT 技術(shù)的發(fā)展角度看,提出系統(tǒng)結(jié)構(gòu)上的解決方案是“應(yīng)用驅(qū)動的大數(shù)據(jù)架構(gòu)與技術(shù)”。也就是說根據(jù)具體類型應(yīng)用的需求,在系統(tǒng)架構(gòu)和關(guān)鍵技術(shù)上進行創(chuàng)新。為了降低成本并獲得更好的能效,大數(shù)據(jù)應(yīng)用系統(tǒng)越來越趨向扁平化和專用化的系統(tǒng)架構(gòu)和數(shù)據(jù)處理技術(shù),逐漸擺脫了傳統(tǒng)的通用技術(shù)體系。這讓傳統(tǒng)的應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器和存儲服務(wù)器這樣的典型三層架構(gòu)受到極大的沖擊。應(yīng)用開發(fā)人員更深入地理解計算機系統(tǒng)結(jié)構(gòu),“程序”=“算法”+“數(shù)據(jù)結(jié)構(gòu)”將逐漸演變成“程序”=“算法”+“數(shù)據(jù)結(jié)構(gòu)”+“系統(tǒng)結(jié)構(gòu)”。
2.4.1 大數(shù)據(jù)技術(shù)生態(tài)環(huán)境范圍擴大
克隆了 Google 的 GFS 和 MapReduce 的Apache Hadoop 自 2008 年以來逐漸被互聯(lián)網(wǎng)企業(yè)接納,并成為大數(shù)據(jù)處理領(lǐng)域的事實標準。但2013 年出現(xiàn)的 Spark 作為一匹黑馬可以說終結(jié)了這一神話,大數(shù)據(jù)技術(shù)不再一家獨大。由于應(yīng)用不同導致 Hadoop 一套軟件系統(tǒng)不可能滿足所有需求,在全面兼容 Hadoop 的基礎(chǔ)上,Spark 通過更多的利用內(nèi)存處理大幅提高系統(tǒng)性能。此外,Scribe、Flume、Kafka、Storm、Drill、Impala、TEZ/Stinger、Presto 和 Spark/Shark 等的出現(xiàn)并不是取代 Hadoop,而是擴大了大數(shù)據(jù)技術(shù)生態(tài)環(huán)境,促使生態(tài)環(huán)境向良性和完整發(fā)展。今后在非易失存儲層次、網(wǎng)絡(luò)通信層次、易失存儲層次和計算框架層次還會出現(xiàn)更多、更好和更專用化的軟件系統(tǒng)[11]。
隨著“數(shù)據(jù)意識”逐漸增強,尤其是傳統(tǒng)企業(yè)將采納 Hadoop 這樣的技術(shù),將企業(yè)生產(chǎn)運營相關(guān)的數(shù)據(jù)資產(chǎn)保存起來。這一進步將擴大Hadoop 技術(shù)的應(yīng)用場景,產(chǎn)生相當規(guī)模的企業(yè)大數(shù)據(jù)計算市場。企業(yè)大數(shù)據(jù)計算市場將基于開源大數(shù)據(jù)技術(shù)生態(tài)環(huán)境,由商業(yè)化 IT 技術(shù)公司主導,讓開源大數(shù)據(jù)技術(shù)進入企業(yè)計算市場,將企業(yè)計算的特征融入進來,形成有依賴又相對獨立發(fā)展的商業(yè)大數(shù)據(jù)技術(shù)生態(tài)環(huán)境。數(shù)據(jù)成為資產(chǎn)以后,還將產(chǎn)生數(shù)據(jù)交易市場。盡管數(shù)據(jù)交易的形式和內(nèi)容還需要探討,但可以預(yù)見將產(chǎn)生以數(shù)據(jù)共享與交易為中心的大數(shù)據(jù)生態(tài)環(huán)境,將產(chǎn)生在政策法規(guī)允許范圍內(nèi)出現(xiàn)明碼實價的數(shù)據(jù)交易。
2.4.2 實時和精準要素更為應(yīng)用重視
在全球互聯(lián)網(wǎng)企業(yè)的努力下,Hadoop 已經(jīng)可以處理百 PB 級的數(shù)據(jù),在不考慮時間維度的前提下,可以處理價值密度低的數(shù)據(jù)了。在解決了傳統(tǒng)關(guān)系型數(shù)據(jù)庫技術(shù)無法處理如此量級的數(shù)據(jù)之后,業(yè)界正在向速度和準確度兩個方向要價值。換句話說,如何從大數(shù)據(jù)中獲取更大回報成為業(yè)界新的挑戰(zhàn)?;ヂ?lián)網(wǎng)服務(wù)強調(diào)用戶體驗,原本做不到實時的應(yīng)用在向?qū)崟r化靠攏,比如前端系統(tǒng)及業(yè)務(wù)日志從產(chǎn)生到收集入庫的延遲從 1 到 2天時間進化到 10 秒以內(nèi)。傳統(tǒng)企業(yè)無法忍受關(guān)系數(shù)據(jù)庫動輒幾十分鐘的查詢分析性能,紛紛求助于性價比更好的技術(shù)和產(chǎn)品。這些需求使大數(shù)據(jù)交互式查詢分析、流式計算和內(nèi)存計算成為業(yè)界研發(fā)和應(yīng)用的新方向。
作為批式計算的補充,交互式分析計算的目標是將 PB 級數(shù)據(jù)的處理時間縮短到秒級。Apache Drill 是開源的 Dremel 實現(xiàn),雖已有應(yīng)用但尚不成熟。由 Cloudera 公司主導的Impala 也是參照 Dremel 實現(xiàn),同時也參考了MPP(Massively Parallel Processing)的設(shè)計思想,目前已經(jīng)接近實用階段。Hortonworks 公司主導的 TEZ/Stinger。TEZ 是運行在 YARN(Hadoop 2.0 的資源管理框架)上的 DAG 計算框架,而 Stinger 是下一代的 Hive(SQL on Hadoop 的事實標準),不同的是 Hive 將 SQL 解析為MapReduce 命令執(zhí)行,而 Stinger 將 SQL 解析為能夠在 TEZ 上執(zhí)行的 DAG,從而解決計算實時性問題。2013 年底,由 Facebook 開源的 Presto分布式 SQL 查詢引擎可對 250 PB 以上的數(shù)據(jù)進行交互式分析,比 Hive 的性能高出 10 倍。類似的 Shark 是 Spark 上的 SQL 執(zhí)行引擎,得益于 Shark 的列存儲和 Spark 的內(nèi)存處理等特性,Shark 號稱可以比 Hive 的性能提高 100 倍。
在實時計算、機器學習和深度學習等技術(shù)的支撐下,個性化推薦已經(jīng)開始從簡單的商品推薦走向復雜的內(nèi)容推薦。根據(jù)用戶的特性與偏好,推薦內(nèi)容的特征以及當時的上下文數(shù)據(jù)(客戶端設(shè)備類型、用戶所處時空數(shù)據(jù)等),向特定用戶提供個性化的內(nèi)容推薦服務(wù),內(nèi)容包括商品(包括電商和零售)、廣告、新聞和資訊等。在移動設(shè)備和移動互聯(lián)網(wǎng)飛速發(fā)展的時代,個性化推薦將成為用戶獲取信息最直接的渠道之一。
2.4.3 面向系統(tǒng)能效潛力挖掘的差異化技術(shù)發(fā)展成為重點
2014 年的大數(shù)據(jù)技術(shù)走向?qū)⑹歉咝У南到y(tǒng)和更差異化的技術(shù)。系統(tǒng)能效將會是業(yè)界關(guān)注的重點。比如百度云存儲萬臺定制 ARM 服務(wù)器就是典型案例,節(jié)電約 25%,存儲密度提升 70%,每瓦特計算能力提升 34 倍(用 GPU 取代 CPU 計算),近 10 個月以來每 GB 存儲成本降低 50%。差異化的技術(shù)指的是更加專用的技術(shù),一個系統(tǒng)可能只針對問題的某一個方面,一個問題的解決可能會依賴若干個系統(tǒng)和軟件。比如 Hadoop 將逐漸成為取代磁帶庫的成熟技術(shù),而直接對接應(yīng)用的可能會是并行數(shù)據(jù)庫和內(nèi)存數(shù)據(jù)庫。又如并行數(shù)據(jù)庫更鮮明的分化為面向事務(wù)處理的Transaction 類數(shù)據(jù)庫和面向分析的 Analysis 類數(shù)據(jù)庫等。
Hadoop 作為 Google 系統(tǒng)的開源實現(xiàn)已經(jīng)在互聯(lián)網(wǎng)領(lǐng)域得以廣泛的應(yīng)用。國外企業(yè),如雅虎、Facebook、亞馬遜(Amazon)和 IBM等和國內(nèi)企業(yè),如百度、中國移動、阿里巴巴、騰訊、網(wǎng)易和人人網(wǎng)等都在使用 Hadoop 軟件。Hadoop核心以及外圍工具和服務(wù)為快速構(gòu)建互聯(lián)網(wǎng)量級的數(shù)據(jù)處理提供了可直接使用的工具集。開源軟件的眾包特點和草根特性在 Hadoop 軟件上得以充分體現(xiàn)。開源軟件應(yīng)用最廣泛的是互聯(lián)網(wǎng)公司,尤其是那些開始創(chuàng)業(yè)的小企業(yè)(start-ups),在技術(shù)選型方面 LAMP7指一組通常一起使用來運行動態(tài)網(wǎng)站或者服務(wù)器的自由軟件:Linux操作系統(tǒng)Apache(阿帕奇)網(wǎng)頁服務(wù)器、MySQL數(shù)據(jù)管理系統(tǒng)、PHP腳本語言、memcache8一個高性能的分布式的內(nèi)存對象緩存系統(tǒng)和 Hadoop是他們的軟件構(gòu)件首選。這里,成本是一方面的原因,另一方面,選用開源軟件可以很容易地根據(jù)自身業(yè)務(wù)特點進行定制開發(fā),形成企業(yè)的核心競爭力。
互聯(lián)網(wǎng)企業(yè)在使用 Hadoop 的同時也根據(jù)自身業(yè)務(wù)需求,開發(fā)出相關(guān)的軟件和工具,不斷增強 Hadoop 軟件功能和壯大 Hadoop 的開發(fā)隊伍。比如 Facebook 公司因為其數(shù)據(jù)分析工程師只熟悉 SQL 語言而不熟悉 MapReduce 編程框架,由此催生 Hive 這樣的項目。其初衷就是實現(xiàn) SQL到 MapReduce 的解釋執(zhí)行。Hive 現(xiàn)在已經(jīng)演化為數(shù)據(jù)倉庫的實用解決方案。這從一個側(cè)面反映了軟件開放源代碼對信息技術(shù)的巨大推動作用。國內(nèi)的大數(shù)據(jù)計算技術(shù)和產(chǎn)業(yè)發(fā)展應(yīng)該從開源文化中汲取經(jīng)驗,重視開源軟件,以開源軟件為基礎(chǔ)形成核心競爭力。天璣大數(shù)據(jù)引擎的研發(fā)就是遵循了這一原則,發(fā)揮中國科學院計算技術(shù)研究所科研能力強的優(yōu)勢,面向大數(shù)據(jù)計算的技術(shù)需求,解決關(guān)鍵問題,形成關(guān)鍵技術(shù)。利用開源Hadoop 作為平臺,集成整合并回饋開源社區(qū),從而達到天璣大數(shù)據(jù)引擎軟件生態(tài)環(huán)境的良性循環(huán)和良性發(fā)展。
如圖 5 所示,天璣大數(shù)據(jù)引擎的特點是:針對企業(yè)計算領(lǐng)域的大數(shù)據(jù)生產(chǎn)需求,兼容傳統(tǒng)關(guān)系數(shù)據(jù)庫操作接口,支持流式計算、圖計算等模式。支持 EB 級數(shù)據(jù)分布式存儲及離線式非線性處理能力,PB 級數(shù)據(jù)在線式處理能力,達到每秒千萬記錄級流式處理能力。達到這樣的目標需要攻克統(tǒng)一存儲、查詢引擎、隔離機制、自動化運維和軟硬件一體等技術(shù)難點和難題,最終逐步建立起包含模型、算法、接口和開發(fā)庫等在內(nèi)的天璣大數(shù)據(jù)引擎軟件棧和生態(tài)環(huán)境。
圖 5 天璣大數(shù)據(jù)引擎軟件棧構(gòu)成Fig. 5. Golaxy big data engine software stack
國內(nèi)的高校和科研院所基于 Hadoop 在數(shù)據(jù)存儲、資源管理、作業(yè)調(diào)度、性能分析優(yōu)化、系統(tǒng)高可用性和安全性等方面開展了研究工作,相關(guān)研究成果多以開源形式貢獻給 Hadoop 社區(qū)。近兩年,我們主要在數(shù)據(jù)的存儲和索引等技術(shù)上開展研究工作,形成了天璣大數(shù)據(jù)引擎的核心競爭力。
4.1 行列混合式數(shù)據(jù)存儲技術(shù)
Apache Hive 是基于 Hadoop 的一個數(shù)據(jù)倉庫工具,可將 SQL 語句轉(zhuǎn)換成 MapReduce命令執(zhí)行。在 Hive 中,二進制關(guān)系數(shù)據(jù)采用SequenceFile文件格式按行序存儲,即只能按照行存和行取的方式來訪問數(shù)據(jù)。當要讀取某一列時需要先取出所有數(shù)據(jù),然后再從中提取出該列的數(shù)據(jù),效率很低。
我們觀察到行存儲技術(shù)的優(yōu)勢在于寫入性能高,數(shù)據(jù)一致性好;列存儲技術(shù)的優(yōu)勢在于壓縮率高,數(shù)據(jù)加載性能好。RCFile 的研究動機在于,將行存儲和列存儲的優(yōu)點集于一身,保持高壓縮率和加載性能,同時提高數(shù)據(jù)寫入性能和一致性,后者恰好是列存儲的短板。RCFile 結(jié)構(gòu)的設(shè)計原則是“宏觀行存儲結(jié)構(gòu),微觀列存儲結(jié)構(gòu)”,即先對關(guān)系表水平劃分為“行組”,“行組”間遵循行序存儲;然后在“行組”內(nèi)采用列序存儲方式。這樣一來,結(jié)合 HDFS 文件系統(tǒng)的塊式存儲機制,可以保證同一行的數(shù)據(jù)存儲在同一個節(jié)點,繼承了行存儲的優(yōu)勢;同時“行組”內(nèi)采用了逐列壓縮技術(shù),可實現(xiàn)列維度的高壓縮比,節(jié)省存儲空間,并可實現(xiàn)只對查詢所需要的列進行解壓處理。
RCFile 的實現(xiàn)代碼現(xiàn)已貢獻給 Hive 開源項目,并已經(jīng)應(yīng)用于 Facebook 公司的 Hadoop 生產(chǎn)系統(tǒng)。經(jīng) Facebook 公司實測可節(jié)約 25% 存儲空間 。與 Apache Hive 數(shù)據(jù)倉庫系統(tǒng)之前缺省使用的行存儲技術(shù)(SequenceFile)相比,RCFile 在不影響查詢性能的前提下節(jié)省高達 20% 的磁盤空間;與雅虎公司開發(fā)的數(shù)據(jù)分析系統(tǒng)(Apache Pig)中的列組存儲技術(shù)相比,RCFile 在磁盤利用率相當?shù)那闆r下可以將數(shù)據(jù)加載性能提高23% 左右。自 0.4.0 版開始,RCFile 已經(jīng)集成到Apache Hive,用以替換 SequenceFile 成為缺省的二進制數(shù)據(jù)存儲結(jié)構(gòu)。據(jù)了解,從 2009 年起,國際和國內(nèi)使用 Apache Hive 的很多互聯(lián)網(wǎng)公司逐步轉(zhuǎn)向使用 RCFile 存儲數(shù)據(jù)。RCFile 已經(jīng)成為諸如 Apache Hive 的分布式離線數(shù)據(jù)分析系統(tǒng)中數(shù)據(jù)存儲結(jié)構(gòu)的事實標準。在 RCFile 的基礎(chǔ)上,俄亥俄州立大學的張曉東教授的研究團隊提出了 ORCFile,通過優(yōu)化行分組的大小并加入索引功能等,進一步提高了系統(tǒng)性能。
4.2 列存儲數(shù)據(jù)庫索引技術(shù)
Apache HBase 是 Hadoop 中 BigTable 的一個開源實現(xiàn),是一種適用于海量數(shù)據(jù)(TB 到 PB 級)下單個維度(僅限主鍵)區(qū)間查詢的數(shù)據(jù)庫系統(tǒng)。其特點是邏輯上數(shù)據(jù)按主鍵順序排列,而物理上數(shù)據(jù)按主鍵分片存儲到多個數(shù)據(jù)節(jié)點。HBase 可以按主鍵迅速定位數(shù)據(jù),同時還支持主鍵上高吞吐量的范圍查詢。但是在實際應(yīng)用中往往要將數(shù)據(jù)按多個不同的屬性進行排序以支持多個維度的區(qū)間查詢。目前 HBase 中還沒能提供一種查詢速度快、存儲開銷低的索引方法來實現(xiàn)以上功能。
為了滿足海量數(shù)據(jù)上的多維區(qū)間查詢需求,我們基于 HBase 實現(xiàn)了互補聚簇索引方法(CCIndex)和片內(nèi)索引方法(IRIndex)查詢系統(tǒng)。這兩種索引機制適合的應(yīng)用場景完全不同。其中,CCIndex 是全局索引,適合數(shù)據(jù)讀寫分離模式的在線多維區(qū)間查詢,查詢延遲小,但數(shù)據(jù)一致性維護代價和索引膨脹率高;IRIndex 則是局部索引,是一種通用型多維區(qū)間查詢索引機制,能夠保證索引和數(shù)據(jù)原表的一致性,索引膨脹率非常低,理論上只到 9%。CCIndex 為每個索引列構(gòu)建獨立的全局索引表,并在索引表中存儲直接數(shù)據(jù)而非偏移數(shù)據(jù)。這樣在進行多維區(qū)間查詢時,就可以直接從對應(yīng)的索引表中取得完整記錄,實現(xiàn)了一級索引,利用索引表上高效的連續(xù)掃描代替原表上的隨機讀取,從而大幅提高多維區(qū)間查詢性能。
IRIndex 將索引構(gòu)建在 Region 內(nèi)部,通過與原表 HFile 文件分離的獨立 IndexFile 文件實現(xiàn),數(shù)據(jù)寫入和更新時先寫入 IndexFile 再寫入HFile,保證了索引和原表數(shù)據(jù)的強一致性,實測寫入和更新吞吐率均高于 CCIndex 和其他全局或局部索引實現(xiàn)技術(shù)。
結(jié)合淘寶公司“數(shù)據(jù)魔方”實時數(shù)據(jù)分析系統(tǒng)的實際需求,作為其全屬性實時計算系統(tǒng)的核心,CCIndex 技術(shù)經(jīng)適配和優(yōu)化后,已集成到生產(chǎn)系統(tǒng)中投入實際運行。CCIndex 增強了全屬性實時計算系統(tǒng)的擴展性和性能。目前,系統(tǒng)處理的數(shù)據(jù)條目超過 100 億。采用 CCIndex 技術(shù)后,在硬件規(guī)模保持不變的前提下,系統(tǒng)處理的數(shù)據(jù)時效范圍從原來的 7 天增大到 3 個月,處理容量增大了一個數(shù)量級,系統(tǒng)吞吐率增大了 7 倍,對原來延遲大于 1 s 的查詢請求響應(yīng)時間平均降低了 57.4%。IRIndex 技術(shù)也在積極與工業(yè)界合作,以期在大規(guī)模數(shù)據(jù)分析領(lǐng)域獲得第一手實際應(yīng)用的驗證數(shù)據(jù)。
4.3 基于硬件加速的流式透明壓縮技術(shù)
通過對分布式文件系統(tǒng)之上應(yīng)用的類型進行分析可以知道,這些應(yīng)用使用或產(chǎn)生的大部分數(shù)據(jù)是文本信息,特別是離線或在線分析系統(tǒng)中的數(shù)據(jù)基本都是文本。而文本本身是一種高度可壓縮的數(shù)據(jù),因此通過引入一種快速的數(shù)據(jù)壓縮方法,可以有效降低數(shù)據(jù)的存儲開銷,提高磁盤和網(wǎng)絡(luò)讀寫的有效帶寬,從而提高應(yīng)用的吞吐量[9]。
傳統(tǒng)的壓縮方法,如 GZip,在壓縮或解壓縮過程中會占用大量的 CPU 資源,使系統(tǒng)的處理能力受到較大的影響。雖然壓縮能使系統(tǒng)的存儲開銷減小,但也有可能會使系統(tǒng)的處理能力下降。隨著硬件技術(shù)的發(fā)展,可以使用硬件設(shè)備來壓縮數(shù)據(jù),達到分流 CPU 負載和提高壓縮處理效率的目的。我們的解決方法提供一種分布式文件系統(tǒng)上的基于硬件加速卡的流式透明壓縮技術(shù),在占用少量系統(tǒng)資源的情況下,完成對用戶透明的壓縮和解壓縮過程,能夠有效降低系統(tǒng)的存儲開銷和提高系統(tǒng)的處理能力。
首先,我們采用硬件加速卡來對內(nèi)存緩沖區(qū)進行壓縮或解壓縮。其次,數(shù)據(jù)的壓縮或解壓縮對于用戶是完全透明的,無論是寫入或讀取數(shù)據(jù),都可以提高磁盤和網(wǎng)絡(luò)讀寫的有效帶寬。此外,采用分片式壓縮格式,將文件分成大小為 64~128 KB 的分片(chunk)。每一個分片,在實際的壓縮數(shù)據(jù)前部是該分片的頭部信息,包括:原始數(shù)據(jù)大小和壓縮數(shù)據(jù)大小。最后,對上層系統(tǒng)提供一個基于硬件加速卡的流式壓縮器,用以封裝原有的輸入流或輸出流,創(chuàng)建壓縮或解壓后的輸入流或輸出流。如果硬件加速卡出現(xiàn)故障,采用軟件壓縮/解壓縮,形成良好的容錯機制。
我們的原型采用了基于 Apache HDFS 實現(xiàn)基于硬件加速卡的流式透明壓縮。基于硬件加速卡的流式透明壓縮原型代碼基礎(chǔ)采用了hadoop-0.20.2,用 Java 語言實現(xiàn)。基于硬件加速卡的流式透明壓縮器位于客戶端和數(shù)據(jù)節(jié)點之間??蛻魧懭霐?shù)據(jù)時,數(shù)據(jù)先經(jīng)過壓縮再發(fā)送到數(shù)據(jù)節(jié)點;客戶讀取數(shù)據(jù)時,先將從數(shù)據(jù)節(jié)點讀取的數(shù)據(jù)進行解壓縮后再返回給客戶端。
借助硬件加速卡,壓縮過程只占用少量 CPU資源,能夠卸載高達 20%~30% 的 CPU 負載,壓縮處理吞吐率高于磁盤讀寫帶寬。從目前測試效果看來,數(shù)據(jù)壓縮比大約為 25%,有效降低了存儲開銷,同時將磁盤的有效帶寬提高了 4~5倍。壓縮過程對上層應(yīng)用透明,因此基于 HDFS的在線或離線數(shù)據(jù)分析系統(tǒng)(HBase 和 Hive 等)都可以方便地使用。該項技術(shù)已經(jīng)隨天璣大數(shù)據(jù)一體機廣泛應(yīng)用到政府、國防、安全和公安等部門,大大提高了海量數(shù)據(jù)處理的計算效率,同時節(jié)省了存儲空間。
5.1 讀寫分離統(tǒng)計分析型應(yīng)用
結(jié)合淘寶的數(shù)據(jù)魔方在線系統(tǒng)的實際需求,作為數(shù)據(jù)魔方全屬性實時計算系統(tǒng)的核心,天璣大數(shù)據(jù)引擎的重要組件—ICTBase 已上線投入實際運行,使淘寶網(wǎng)原有的業(yè)務(wù)邏輯能夠直接遷移到經(jīng)改進的 HBase 上,同時增強了全屬性實時計算系統(tǒng)的擴展性和性能。目前,該實時計算系統(tǒng)處理的數(shù)據(jù)記錄超過 108 億。ICTBase 的索引及分布式查詢技術(shù)解決了諸如 HBase 等當前主流的列簇式 NoSQL 數(shù)據(jù)庫系統(tǒng)在多列查詢上的功能缺失和性能低下的問題,通過融合各種索引技術(shù)及聯(lián)合優(yōu)化,可以對 NoSQL 中數(shù)據(jù)非主鍵列進行定位和查詢,從而彌補了 NoSQL 與傳統(tǒng)關(guān)系數(shù)據(jù)庫相比查詢功能及能力的欠缺。同時利用服務(wù)端計算技術(shù),可以對海量數(shù)據(jù)進行本地化聚合計算而無需進行大量數(shù)據(jù)拷貝傳輸。如此經(jīng)過強化的查詢統(tǒng)計能力配合 NoSQL 的高擴展性及大吞吐量的數(shù)據(jù)處理能力,使眾多關(guān)系型數(shù)據(jù)庫面對的數(shù)據(jù)處理瓶頸得以克服。
5.2 低延遲流式處理型應(yīng)用
一直以來,對于用戶流量來源以及用戶點擊行為的分析都是淘寶的“量子統(tǒng)計”提供的服務(wù)中最為重要的組成部分。以往采用傳統(tǒng)技術(shù)只能為用戶提供按小時統(tǒng)計的分析數(shù)據(jù),即用戶可查詢店鋪內(nèi)某一天 24 小時分時段的數(shù)據(jù)報表。其內(nèi)容包括各時段用戶瀏覽量、訪客數(shù)及來源和店內(nèi)瀏覽路徑。而采用 ICTBase 進行數(shù)據(jù)流式存儲和統(tǒng)計之后,店主可以實時地看到當前正在瀏覽客戶的實時點擊行為。新系統(tǒng)實時地收集分析了淘寶全網(wǎng)用戶點擊日志,統(tǒng)計內(nèi)容包括淘寶 300萬店鋪的實時 UV 和 PV 值,并能繪制出淘寶網(wǎng)日均 1.2 億用戶的實時點擊行為圖示,最后將這些信息分類推送給相關(guān)店主。整個系統(tǒng)的數(shù)據(jù)處理延時僅為 2 至 3 秒。實際日志處理量為 3 萬至5 萬記錄每秒,每天 20 億記錄,數(shù)據(jù)寫入操作為15 至 25 萬次每秒,單日原始數(shù)據(jù)量為 600 GB,存儲一周用戶數(shù)據(jù)則原始數(shù)據(jù)量為 4 TB 左右。
5.3 高并發(fā)訪問型應(yīng)用
騰訊網(wǎng)是目前中國最大的互聯(lián)網(wǎng)綜合服務(wù)提供商,也是中國服務(wù)用戶最多的互聯(lián)網(wǎng)企業(yè)之一。截至 2013 年 8 月 14 日,QQ 即時通信的活躍帳戶數(shù)達到 8.185 億,最高同時在線帳戶數(shù)達到 1.732 億。其數(shù)據(jù)平臺一直致力于發(fā)掘用戶數(shù)據(jù)的價值,為用戶提供更為精準的個性化服務(wù)。廣點通即數(shù)據(jù)平臺核心產(chǎn)品之一,旨在根據(jù)用戶訪問數(shù)據(jù)提高平臺廣告推送效率。
面向海量用戶訪問數(shù)據(jù)的實時存儲查詢系統(tǒng)是廣點通智能推薦系統(tǒng)的基礎(chǔ)。全內(nèi)存分布式的ICTBase 優(yōu)化了線上系統(tǒng)查詢性能,提高了存儲層數(shù)據(jù)訪問效率,大幅減輕集群內(nèi)部網(wǎng)絡(luò)壓力,提高了廣點通整體性能,并成功支持了對存儲性能要求更高的復雜用戶推薦算法。新系統(tǒng)經(jīng)過相應(yīng)優(yōu)化之后,實測單機查詢性能提升 20 倍,占用服務(wù)器數(shù)量縮減為原系統(tǒng)的 1/5,日均處理日志數(shù)量 30 億記錄,處理用戶請求數(shù)量達25 億次。
Hadoop 是大數(shù)據(jù)計算領(lǐng)域的一項具體技術(shù),一套軟件系統(tǒng)和工具。因其開源而對推動大數(shù)據(jù)計算技術(shù)發(fā)展起到了重要作用。面向不同的應(yīng)用需求,基于 Hadoop 的數(shù)據(jù)處理工具也應(yīng)運而生。天璣大數(shù)據(jù)引擎集成了 Hadoop 生態(tài)環(huán)境中成熟且社區(qū)活躍的組件,如 Hive 和 HBase等,并整合了天璣團隊的眾多研究成果,如RCFile、CCIndex/IRIndex、SwiftFS 等,可以滿足輿情分析、社會計算、商業(yè)智能和數(shù)據(jù)挖掘等大數(shù)據(jù)處理的實際需求??梢灶A(yù)見,大數(shù)據(jù)計算的出現(xiàn)將催生更多、更好、更面向大眾的新應(yīng)用,同時更能夠加快大數(shù)據(jù)計算技術(shù)發(fā)展的步伐。
[1] Dean J, Ghemawat S. MapReduce: simpli fi ed data processing on large clusters [J]. Communications of the ACM, 2008, 51(1): 107-113.
[2] Ghemawat S, Gobioff H, Leung ST. The Google file system [C] // Proceedings of the 19th ACM Symposium on Operating Systems Principles, ACM, 2003: 29-43.
[3] Chang F, Dean J, Ghemawat S, et al. Bigtable: a distributed storage system for structured data [C] // Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation, 2006, 7: 205-218.
[4] The Apache Software Foundation. Apache Hadoop [EB/OL]. http://hadoop.apache.org/.
[5] The Apache Software Foundation. Apache Hive [EB/OL]. http://hive.apache.org/.
[6] The Apache Software Foundation. Apache HBase. [EB/OL] http://hbase.apache.org/.
[7] He YQ, Lee RB, Huai Y, et al. RCFile: a fast and space-efficient data placement structure in MapReduce based warehouse systems [C] // Proceedings of International Conference on Data Engineering, 2011: 1199-1208.
[8] Zou YQ, Liu J, Wang SC, et al. CCIndex a complemental clustering index on distributed ordered tables for multi-dimensional range queries [C] // Proceedings of the 2010 IFIP International Conference on Network and Parallel Computing, 2010: 247-261.
[9] Nicolae B, Moise D, Antoniu G, et al. BlobSeer: bringing high throughput under heavy concurrency to Hadoop Map-Reduce applications [C] // 2010 IEEE International Symposium on Parallel and Distributed Processing, 2010: 1-11.
[10] Huai Y, Ma SY, Lee RB, et al. Understanding insights into the basic structure and essential issues of table placement methods in clusters [C] // Proceedings of 39th International Conference on Very Large Data Bases, 2013.
[11] 程學旗. 關(guān)于中國大數(shù)據(jù)生態(tài)系統(tǒng)的基礎(chǔ)問題思考 [EB/OL]. http://www.china-cloud.com/yunjishu/ shujuzhongxin/20140213_23094.html.
Golaxy Big Data Engine and Its Applications
ZHA Li CHENG Xueqi
( Key Laboratory of Network Data Science and Technology, Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China )
Volume, variety and velocity are the three challenges that the big data computing must be faced with, which cannot be dealt with by traditional IT technologies. Bene fi ting from numerous domestic and overseas Internet companies’practical applications and continuous code contributions, the Apache Hadoop has become a mature software stack and the de facto standard of the PetaByte scale data processing. Furthermore, around different types of data processing requirements, different software ecosystems have been established. In the big data system fi eld, three research works of data placement, index construction and compression and decompression hardware acceleration, i.e. RCFile, CCIndex and SwiftFS respectively, effectively solving the storage space and query performance issues, were introduced in this paper. The above research achievements have been already integrated into the Golaxy big data engine software stack in the form of key technologies, and directly supported multiple practical applications of Taobao Inc. and Tencent Inc.
big data engine; data storage; row columnar; clustered index
TP 316.4 TP 319
A
2014-4-18
國家高技術(shù)研究發(fā)展計劃(863 計劃)(2013AA01A213)。
查禮(通訊作者),副研究員,博士,研究方向為分布式計算系統(tǒng),E-mail:char@ict.ac.cn;程學旗,副總工程師、研究員,博士生導師,研究方向為網(wǎng)絡(luò)科學與社會計算、互聯(lián)網(wǎng)搜索與挖掘、網(wǎng)絡(luò)信息安全、分布式系統(tǒng)與大型仿真平臺等。