張焰等
【摘要】 隨著互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的發(fā)展,我們已經(jīng)迎來了數(shù)據(jù)大爆炸的時(shí)代,數(shù)據(jù)的快速增長帶來了數(shù)據(jù)存儲(chǔ)、處理、分析的巨大壓力,而大數(shù)據(jù)技術(shù)(Big data)的引入,不但滿足了系統(tǒng)功能和性能的要求,帶來良好的可擴(kuò)展性,降低了IT部署的成本,還拓展了數(shù)據(jù)智能分析的應(yīng)用領(lǐng)域。同時(shí),大數(shù)據(jù)分析與云計(jì)算的發(fā)展密切相關(guān),云計(jì)算是大數(shù)據(jù)處理的基礎(chǔ),而大數(shù)據(jù)技術(shù)是云計(jì)算的延伸,云計(jì)算的分布式存儲(chǔ)和計(jì)算架構(gòu)為大數(shù)據(jù)的快速處理和智能分析提供了一種合適的解決方案。本文將探討建立在云計(jì)算基礎(chǔ)上的大數(shù)據(jù)處理技術(shù),包括分布式計(jì)算框架、分布式文件系統(tǒng)、大數(shù)據(jù)管理技術(shù)、實(shí)時(shí)流數(shù)據(jù)處理、機(jī)器學(xué)習(xí)以及可視化技術(shù)等。
【關(guān)鍵詞】 云計(jì)算 大數(shù)據(jù) MapReduce Hadoop一、大數(shù)據(jù)
1.1什么是大數(shù)據(jù)
大數(shù)據(jù)概念可以從四個(gè)維度去解,即三個(gè)V和一個(gè)C。三個(gè)V分別指的是數(shù)據(jù)量大(Volume)、數(shù)據(jù)種類多(Variety)和數(shù)據(jù)增長速度快(Velocity),最后一個(gè)C指的是處理、升級(jí)或利用大數(shù)據(jù)的分析手段比處理結(jié)構(gòu)化數(shù)據(jù)要復(fù)雜的多(Complexity)。大數(shù)據(jù)分析常和云計(jì)算聯(lián)系到一起,因?yàn)閷?shí)時(shí)的大型數(shù)據(jù)集分析需要像Map-Reduce一樣的并行計(jì)算框架將復(fù)雜的計(jì)算任務(wù)分配到“云”中成百上千的節(jié)點(diǎn)。
1.2大數(shù)據(jù)與云計(jì)算
大數(shù)據(jù)本身就是一個(gè)問題集,云計(jì)算技術(shù)是目前解決大數(shù)據(jù)問題集最重要最有效的手段。云計(jì)算提供了基礎(chǔ)的架構(gòu)平臺(tái),大數(shù)據(jù)應(yīng)用在這個(gè)平臺(tái)上運(yùn)行。目前公認(rèn)為分析大數(shù)據(jù)集最有效手段的分布式處理技術(shù),也是云計(jì)算思想的一種具體體現(xiàn)。
云計(jì)算是分布式處理、并行處理和網(wǎng)格計(jì)算的發(fā)展,或者說是這些計(jì)算機(jī)科學(xué)概念的商業(yè)實(shí)現(xiàn)。云計(jì)算將網(wǎng)絡(luò)上分布的計(jì)算、存儲(chǔ)、服務(wù)構(gòu)件、網(wǎng)絡(luò)軟件等資源集中起來,基于資源虛擬化的方式,為用戶提供方便快捷的服務(wù), 實(shí)現(xiàn)了資源和計(jì)算的分布式共享和并行處理,能夠很好地應(yīng)對(duì)當(dāng)前互聯(lián)網(wǎng)數(shù)據(jù)量高速增長的勢(shì)頭。
1.3大數(shù)據(jù)與Hadoop
Hadoop是一個(gè)Apache的開源項(xiàng)目,主要面向存儲(chǔ)和處理成百上千TB直至PB級(jí)別的結(jié)構(gòu)化、半結(jié)構(gòu)化或非結(jié)構(gòu)化的大數(shù)據(jù)。Hadoop提供的Map-Reduce能將大數(shù)據(jù)問題分解成多個(gè)子問題,并將它們分配到成百上千個(gè)處理節(jié)點(diǎn)之上,再將結(jié)果匯集到一個(gè)小數(shù)據(jù)集當(dāng)中,從而更容易分析得出最后的結(jié)果。
Hadoop項(xiàng)目包括三部分,分別是Hadoop Distributed File System(HDFS)、Map Reduce編程模型,以及Hadoop Common。Hadoop具備低廉的硬件成本、開源的軟件體系、較強(qiáng)的靈活性、允許用戶自己修改代碼等特點(diǎn),同時(shí)能支持海量數(shù)據(jù)的存儲(chǔ)和計(jì)算任務(wù)。這些特點(diǎn)讓Hadoop被公認(rèn)為是新一代的大數(shù)據(jù)處理平臺(tái)。 Hadoop同樣具備出色的大數(shù)據(jù)集處理能力,在獲取、存儲(chǔ)、管理和分析數(shù)據(jù)方面遠(yuǎn)遠(yuǎn)超越傳統(tǒng)的數(shù)據(jù)庫軟件工具。Hadoop經(jīng)常在構(gòu)建大數(shù)據(jù)解決方案時(shí)被用作基礎(chǔ)構(gòu)架軟件。
二、大數(shù)據(jù)技術(shù)綜述
大數(shù)據(jù)處理不僅僅是Hadoop,許多特定的數(shù)據(jù)應(yīng)用場(chǎng)景是需要實(shí)時(shí)分析和互動(dòng)反饋的,這時(shí)候就需要利用包括內(nèi)存檢索、流處理和實(shí)時(shí)計(jì)算等其他技術(shù)。而云計(jì)算的分布式存儲(chǔ)和計(jì)算架構(gòu)開啟了大數(shù)據(jù)技術(shù)研究的大門,打造健全的大數(shù)據(jù)生態(tài)環(huán)境,所有這些技術(shù)結(jié)合在一起,才是一個(gè)完整的大數(shù)據(jù)處理系統(tǒng)。
2.1分布式計(jì)算框架
MapReduce是Google開發(fā)的一種簡化的分布式編程模型和高效的任務(wù)調(diào)度模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算,使云計(jì)算環(huán)境下的編程變得十分簡單。
MapReduce將數(shù)據(jù)處理任務(wù)抽象為一系列的Map(映射)和Reduce(化簡)操作對(duì)。Map主要完成數(shù)據(jù)的分解操作,Reduce主要完成數(shù)據(jù)的聚集操作.輸入輸出數(shù)據(jù)均以〈key,value〉格式存儲(chǔ).用戶在使用該編程模型時(shí),只需按照自己熟悉的語言實(shí)現(xiàn)Map函數(shù)和Reduce函數(shù)即可,MapReduce算法框架會(huì)自動(dòng)對(duì)任務(wù)進(jìn)行劃分以做到并行執(zhí)行。
Pregel是Google 提出的迭代處理計(jì)算框架,它具有高效、可擴(kuò)展和容錯(cuò)的特性,并隱藏了分布式相關(guān)的細(xì)節(jié),展現(xiàn)給人們的僅僅是一個(gè)表現(xiàn)力很強(qiáng)、很容易編程的大型圖算法處理的計(jì)算框架。Pregel的主要應(yīng)用場(chǎng)景是大型的圖計(jì)算,例如交通線路、疾病爆發(fā)路徑、WEB 搜索等相關(guān)領(lǐng)域。
2.2分布式文件系統(tǒng)
為保證高可用、高可靠和經(jīng)濟(jì)性,基于云計(jì)算的大數(shù)據(jù)處理系統(tǒng)采用分布式存儲(chǔ)的方式來保存數(shù)據(jù),用冗余存儲(chǔ)的方式保證數(shù)據(jù)的可靠性。目前廣泛使用的分布式文件系統(tǒng)是Google的GFS和Hadoop團(tuán)隊(duì)開發(fā)的GFS的開源實(shí)現(xiàn)HDFS。
GFS即Google文件系統(tǒng),是一個(gè)可擴(kuò)展的分布式文件系統(tǒng),用于大型的、分布式的、對(duì)大量數(shù)據(jù)進(jìn)行訪問的應(yīng)用。GFS的設(shè)計(jì)思想不同于傳統(tǒng)的文件系統(tǒng),是針對(duì)大規(guī)模數(shù)據(jù)處理和Google應(yīng)用特性而設(shè)計(jì)的,運(yùn)行成本低廉,并提供容錯(cuò)功能。
HDFS即Hadoop分布式文件系統(tǒng),受到GFS很大啟發(fā),具有高容錯(cuò)性,并且可以被部署在低價(jià)的硬件設(shè)備之上。HDFS很適合那些有大數(shù)據(jù)集的應(yīng)用,并且提供了數(shù)據(jù)讀寫的高吞吐率。HDFS是一個(gè)master/slave的結(jié)構(gòu),在master上只運(yùn)行一個(gè)Namenode,而在每一個(gè)slave上運(yùn)行一個(gè)Datanode。HDFS支持傳統(tǒng)的層次文件組織結(jié)構(gòu),對(duì)文件系統(tǒng)的操作(如建立、刪除文件和文件夾)都是通過Namenode來控制,Datanode用來存放數(shù)據(jù)塊。
2.3大數(shù)據(jù)管理技術(shù)
互聯(lián)網(wǎng)數(shù)據(jù)已超出關(guān)系型數(shù)據(jù)庫的管理范疇,電子郵件、超文本、博客、標(biāo)簽(Tag)以及圖片、音視頻等各種非結(jié)構(gòu)化數(shù)據(jù)逐漸成為大數(shù)據(jù)的重要組成部分,而面向結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的關(guān)系型數(shù)據(jù)庫已經(jīng)不能滿足數(shù)據(jù)快速訪問、大規(guī)模數(shù)據(jù)分析的需求,隨之而來,一系列新型的大數(shù)據(jù)管理技術(shù)和工具應(yīng)運(yùn)而生。
2.3.1 非關(guān)系型數(shù)據(jù)庫
NoSQL,也有人理解為Not Only SQL,它是一類非關(guān)系型數(shù)據(jù)庫的統(tǒng)稱。其特點(diǎn)是:沒有固定的數(shù)據(jù)表模式、可以分布式和水平擴(kuò)展。NoSQL并不是單純的反對(duì)關(guān)系型數(shù)據(jù)庫,而是針對(duì)其缺點(diǎn)的一種補(bǔ)充和擴(kuò)展。典型的NoSQL數(shù)據(jù)存儲(chǔ)模型有文檔存儲(chǔ)、鍵-值存儲(chǔ)、圖存儲(chǔ)、對(duì)象數(shù)據(jù)、列存儲(chǔ)等。而比較流行的,不得不提到Google的Bigtable,它把所有數(shù)據(jù)都作為對(duì)象來處理,形成一個(gè)巨大的表格,用來分布存儲(chǔ)大規(guī)模結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)量可達(dá)PB級(jí)。而HBase是Hadoop團(tuán)隊(duì)基于Bigtable的開源實(shí)現(xiàn),使用HDFS作為其文件存儲(chǔ)系統(tǒng)。同時(shí),Cassandra(K/V型數(shù)據(jù)庫)、MongoDB(文檔數(shù)據(jù)庫)和Redis等一系列優(yōu)秀的非關(guān)系型數(shù)據(jù)庫產(chǎn)品如雨后春筍般問世。
2.3.2 數(shù)據(jù)查詢工具
Hive是Facebook提出的基于Hadoop的大型數(shù)據(jù)倉庫,其目標(biāo)是簡化Hadoop上的數(shù)據(jù)聚集、即席查詢及大數(shù)據(jù)集的分析等操作,以減輕程序員的負(fù)擔(dān).它借鑒關(guān)系數(shù)據(jù)庫的模式管理、SQL接口等技術(shù),把結(jié)構(gòu)化的數(shù)據(jù)文件映射為數(shù)據(jù)庫表,提供類似于SQL的描述性語言HiveQL供程序員使用,可自動(dòng)將HiveQL語句解析成一優(yōu)化的MapReduce任務(wù)執(zhí)行序列.此外,它也支持用戶自定義的MapReduce函數(shù)。
PigLatin是Yahoo!提出的類似于Hive的大數(shù)據(jù)集分析平臺(tái).兩者的區(qū)別主要在于語言接口.Hive提供了類似SQL的接口,PigLatin提供的是一種基于操作符的數(shù)據(jù)流式的接口.可以說Pig利用操作符來對(duì)Hadoop進(jìn)行封裝,Hive利用SQL進(jìn)行封裝。
Google Dremel是個(gè)可擴(kuò)展的、交互式的即時(shí)查詢系統(tǒng),用于完成大規(guī)模查詢結(jié)構(gòu)化數(shù)據(jù)集(如日志和事件文件)。它支持類SQL語法,區(qū)別在于它只能查詢,不支持修改或者創(chuàng)建功能,也沒有表索引。數(shù)據(jù)被列式存儲(chǔ),這樣有助于提升查詢的速度。Google將Dremel作為MapReduce的一種補(bǔ)充,被用于分析MapReduce的結(jié)果或者是作為大規(guī)模計(jì)算的測(cè)試。
2.4實(shí)時(shí)流處理技術(shù)
伴隨著互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展的步調(diào),以及業(yè)務(wù)流程的復(fù)雜化,企業(yè)的注意力越來越集中在“數(shù)據(jù)流”而非“數(shù)據(jù)集”上面,他們需要的是能夠處理隨時(shí)發(fā)生的數(shù)據(jù)流的架構(gòu),現(xiàn)有的分布式計(jì)算架構(gòu)并不適合數(shù)據(jù)流處理。流計(jì)算強(qiáng)調(diào)的是數(shù)據(jù)流的形式和實(shí)時(shí)性。MapReduce系統(tǒng)主要解決的是對(duì)靜態(tài)數(shù)據(jù)的批量處理,當(dāng)MapReduce任務(wù)啟動(dòng)時(shí),一般數(shù)據(jù)已經(jīng)到位了(比如保存到了分布式文件系統(tǒng)上),而流式計(jì)算系統(tǒng)在啟動(dòng)時(shí),一般數(shù)據(jù)并沒有完全到位,而是經(jīng)由外部數(shù)據(jù)源源不斷地流入,重視的是對(duì)數(shù)據(jù)處理的低延遲,希望進(jìn)入的數(shù)據(jù)越快處理越好。數(shù)據(jù)越快被處理,結(jié)果就越有價(jià)值,這也是實(shí)時(shí)處理的價(jià)值所在。
流計(jì)算的數(shù)據(jù)本身就是數(shù)據(jù)流,不需要數(shù)據(jù)準(zhǔn)備的時(shí)間,有數(shù)據(jù)流入就開始計(jì)算,解決了數(shù)據(jù)準(zhǔn)備和延遲的兩個(gè)問題。現(xiàn)有的解決方案中,Twitter的Storm和雅虎的S4框架更適合數(shù)據(jù)流計(jì)算的場(chǎng)景。Storm是開源的分布式實(shí)時(shí)計(jì)算系統(tǒng),可以可靠的處理流式數(shù)據(jù)并進(jìn)行實(shí)時(shí)計(jì)算,單機(jī)性能可達(dá)到百萬記錄每秒,開發(fā)語言為Clojure和Java,并具備容錯(cuò)特性。S4是面向流式數(shù)據(jù)和實(shí)時(shí)處理的,所以針對(duì)實(shí)時(shí)性較高的業(yè)務(wù),可以很好地對(duì)數(shù)據(jù)做出高效的分析處理,而且系統(tǒng)一旦上線,很少需要人工干預(yù),源源不斷的數(shù)據(jù)流會(huì)被自動(dòng)路由并分析。對(duì)于海量數(shù)據(jù),它和MapReduce都可以應(yīng)對(duì),但它能比后者更快地處理數(shù)據(jù)。
三、思考與展望
以云計(jì)算為基礎(chǔ)的信息存儲(chǔ)、分享和挖掘手段為知識(shí)生產(chǎn)提供了工具,通過對(duì)大數(shù)據(jù)分析、預(yù)測(cè)會(huì)使得決策更為精準(zhǔn),這對(duì)媒體融合具有重要意義。
新聞媒體的數(shù)據(jù)庫中擁有海量信息存儲(chǔ),這些多媒體數(shù)據(jù)包括文字,圖片,視頻和音頻等多種格式,符合大數(shù)據(jù)處理的基本特征,利用大數(shù)據(jù)技術(shù)對(duì)這些資源進(jìn)行存儲(chǔ),計(jì)算和分析,了解用戶行為,挖掘數(shù)據(jù)本質(zhì)和關(guān)聯(lián),為領(lǐng)導(dǎo)提供決策支持,為終端用戶提供更好的服務(wù)和新聞定制,增強(qiáng)新聞信息產(chǎn)品的質(zhì)量和影響力。
如今,在開源社區(qū),圍繞Google MapReduce框架,已經(jīng)成長出了一批優(yōu)秀的開源項(xiàng)目。這些項(xiàng)目在技術(shù)和實(shí)現(xiàn)上相互支持和依托,逐漸形成了一個(gè)特有的“大數(shù)據(jù)”生態(tài)系統(tǒng)。系統(tǒng)為我們實(shí)現(xiàn)優(yōu)質(zhì)廉價(jià)的大數(shù)據(jù)分析和管理提供了堅(jiān)實(shí)的技術(shù)基礎(chǔ)。
新聞媒體可以順應(yīng)大數(shù)據(jù)的技術(shù)趨勢(shì),加強(qiáng)技術(shù)調(diào)研,早日選型,搭建大數(shù)據(jù)處理平臺(tái),利用云計(jì)算項(xiàng)目資源,將海量數(shù)據(jù)統(tǒng)籌管理,通過分析和挖掘,實(shí)現(xiàn)新聞產(chǎn)品的創(chuàng)新和跨越式發(fā)展,以現(xiàn)代化的傳播手段向世界展示中國。