一、實(shí)時(shí)計(jì)算的概念
實(shí)時(shí)計(jì)算一般都是針對(duì)海量數(shù)據(jù)進(jìn)行的,一般要求為秒級(jí)。實(shí)時(shí)計(jì)算主要分為兩塊:數(shù)據(jù)的實(shí)時(shí)入庫(kù)、數(shù)據(jù)的實(shí)時(shí)計(jì)算。
主要應(yīng)用的場(chǎng)景:
1.數(shù)據(jù)源是實(shí)時(shí)的不間斷的,要求用戶(hù)的響應(yīng)時(shí)間也是實(shí)時(shí)的(比如對(duì)于大型網(wǎng)站的流式數(shù)據(jù):網(wǎng)站的訪(fǎng)問(wèn)PV/UV、用戶(hù)訪(fǎng)問(wèn)了什么內(nèi)容、搜索了什么內(nèi)容等,實(shí)時(shí)的數(shù)據(jù)計(jì)算和分析可以動(dòng)態(tài)實(shí)時(shí)地刷新用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù),展示網(wǎng)站實(shí)時(shí)流量的變化情況,分析每天各小時(shí)的流量和用戶(hù)分布情況)
2.數(shù)據(jù)量大且無(wú)法或沒(méi)必要預(yù)算,但要求對(duì)用戶(hù)的響應(yīng)時(shí)間是實(shí)時(shí)的。比如說(shuō):昨天來(lái)自每個(gè)省份不同性別的訪(fǎng)問(wèn)量分布,昨天來(lái)自每個(gè)省份不同性別不同年齡不同職業(yè)不同名族的訪(fǎng)問(wèn)量分布。
二、實(shí)時(shí)計(jì)算的相關(guān)技術(shù)
主要分為三個(gè)階段(大多是日志流):
數(shù)據(jù)的產(chǎn)生與收集階段、傳輸與分析處理階段、存儲(chǔ)對(duì)外提供服務(wù)階段
圖 1 實(shí)時(shí)計(jì)算的三個(gè)階段
下面具體針對(duì)上面三個(gè)階段詳細(xì)介紹下
1.數(shù)據(jù)實(shí)時(shí)采集:
需求:功能上保證可以完整的收集到所有日志數(shù)據(jù),為實(shí)時(shí)應(yīng)用提供實(shí)時(shí)數(shù)據(jù);響應(yīng)時(shí)間上要保證實(shí)時(shí)性、低延遲在1秒左右;配置簡(jiǎn)單,部署容易;系統(tǒng)穩(wěn)定可靠等。
目前的產(chǎn)品:Facebook的Scribe、LinkedIn的Kafka、Cloudera的Flume,淘寶開(kāi)源的TimeTunnel、Hadoop的Chukwa等,均可以滿(mǎn)足每秒數(shù)百M(fèi)B的日志數(shù)據(jù)采集和傳輸需求。他們都是開(kāi)源項(xiàng)目。
2.數(shù)據(jù)實(shí)時(shí)計(jì)算
在流數(shù)據(jù)不斷變化的運(yùn)動(dòng)過(guò)程中實(shí)時(shí)地進(jìn)行分析,捕捉到可能對(duì)用戶(hù)有用的信息,并把結(jié)果發(fā)送出去。
圖 2 實(shí)時(shí)計(jì)算數(shù)據(jù)流向
3.實(shí)時(shí)查詢(xún)服務(wù)
半內(nèi)存:使用Redis、Memcache、MongoDB、BerkeleyDB等內(nèi)存數(shù)據(jù)庫(kù)提供數(shù)據(jù)實(shí)時(shí)查詢(xún)服務(wù),由這些系統(tǒng)進(jìn)行持久化操作。
全磁盤(pán):使用HBase等以分布式文件系統(tǒng)(HDFS)為基礎(chǔ)的NoSQL數(shù)據(jù)庫(kù),對(duì)于key-value引擎,關(guān)鍵是設(shè)計(jì)好key的分布。
全內(nèi)存:直接提供數(shù)據(jù)讀取服務(wù),定期dump到磁盤(pán)或數(shù)據(jù)庫(kù)進(jìn)行持久化。
三、實(shí)時(shí)計(jì)算目前的主流產(chǎn)品
1.Yahoo的S4:S4是一個(gè)通用的、分布式的、可擴(kuò)展的、分區(qū)容錯(cuò)的、可插拔的流式系統(tǒng),Yahoo開(kāi)發(fā)S4系統(tǒng),主要是為了解決:搜索廣告的展現(xiàn)、處理用戶(hù)的點(diǎn)擊反饋。
2.Twitter的Storm:是一個(gè)分布式的、容錯(cuò)的實(shí)時(shí)計(jì)算系統(tǒng)。可用于處理消息和更新數(shù)據(jù)庫(kù)(流處理),在數(shù)據(jù)流上進(jìn)行持續(xù)查詢(xún),并以流的形式返回結(jié)果到客戶(hù)端(持續(xù)計(jì)算),并行化一個(gè)類(lèi)似實(shí)時(shí)查詢(xún)的熱點(diǎn)查詢(xún)(分布式的RPC)。
3.Facebook 的Puma:Facebook使用puma和HBase相結(jié)合來(lái)處理實(shí)時(shí)數(shù)據(jù),另外Facebook發(fā)表一篇利用HBase/Hadoop進(jìn)行實(shí)時(shí)數(shù)據(jù)處理的論文(ApacheHadoop Goes Realtime at Facebook),通過(guò)一些實(shí)時(shí)性改造,讓批處理計(jì)算平臺(tái)也具備實(shí)時(shí)計(jì)算的能力。
圖 3 實(shí)時(shí)計(jì)算主流產(chǎn)品
圖 4 S4和Storm的詳細(xì)對(duì)比
其他的產(chǎn)品:
早期的:IBM的Stream Base、 Borealis、Hstreaming、Esper
四、淘寶的實(shí)時(shí)計(jì)算、流式處理
1.銀河流數(shù)據(jù)處理平臺(tái):通用的流數(shù)據(jù)實(shí)時(shí)計(jì)算系統(tǒng),以實(shí)時(shí)數(shù)據(jù)產(chǎn)出的低延遲、高吞吐和復(fù)用性為初衷和目標(biāo),采用actor模型構(gòu)建分布式流數(shù)據(jù)計(jì)算框架(底層基于akka),功能易擴(kuò)展、部分容錯(cuò)、數(shù)據(jù)和狀態(tài)可監(jiān)控。銀河具有處理實(shí)時(shí)流數(shù)據(jù)(如TimeTunnel收集的實(shí)時(shí)數(shù)據(jù))和靜態(tài)數(shù)據(jù)(如本地文件、HDFS文件)的能力,能夠提供靈活的實(shí)時(shí)數(shù)據(jù)輸出,并提供自定義的數(shù)據(jù)輸出接口以便擴(kuò)展實(shí)時(shí)計(jì)算能力。銀河目前主要是為魔方提供實(shí)時(shí)的交易、瀏覽和搜索日志等數(shù)據(jù)的實(shí)時(shí)計(jì)算和分析。
2.基于Storm的流式處理,統(tǒng)計(jì)計(jì)算、持續(xù)計(jì)算、實(shí)時(shí)消息處理。
在淘寶,Storm被廣泛用來(lái)進(jìn)行實(shí)時(shí)日志處理,出現(xiàn)在實(shí)時(shí)統(tǒng)計(jì)、實(shí)時(shí)風(fēng)控、實(shí)時(shí)推薦等場(chǎng)景中。一般來(lái)說(shuō),我們從類(lèi)kafka的metaQ或者基于HBase的timetunnel中讀取實(shí)時(shí)日志消息,經(jīng)過(guò)一系列處理,最終將處理結(jié)果寫(xiě)入到一個(gè)分布式存儲(chǔ)中,提供給應(yīng)用程序訪(fǎng)問(wèn)。我們每天的實(shí)時(shí)消息量從幾百萬(wàn)到幾十億不等,數(shù)據(jù)總量達(dá)到TB級(jí)。對(duì)于我們來(lái)說(shuō),Storm往往會(huì)配合分布式存儲(chǔ)服務(wù)一起使用。在我們正在進(jìn)行的個(gè)性化搜索實(shí)時(shí)分析項(xiàng)目中,就使用了timetunnel +HBase + Storm + UPS的架構(gòu),每天處理幾十億的用戶(hù)日志信息,從用戶(hù)行為發(fā)生到完成分析延遲在秒級(jí)。
3.利用HBase實(shí)現(xiàn)的Online應(yīng)用
4.對(duì)于電子商務(wù)網(wǎng)站上的店鋪:
。1)實(shí)時(shí)展示一個(gè)店鋪的到訪(fǎng)顧客流水信息,包括訪(fǎng)問(wèn)時(shí)間、訪(fǎng)客姓名、訪(fǎng)客地理位置、訪(fǎng)客IP、訪(fǎng)客正在訪(fǎng)問(wèn)的頁(yè)面等信息;
(2)顯示某個(gè)到訪(fǎng)顧客的所有歷史來(lái)訪(fǎng)記錄,同時(shí)實(shí)時(shí)跟蹤顯示某個(gè)訪(fǎng)客在一個(gè)店鋪正在訪(fǎng)問(wèn)的頁(yè)面等信息;
。3)支持根據(jù)訪(fǎng)客地理位置、訪(fǎng)問(wèn)頁(yè)面、訪(fǎng)問(wèn)時(shí)間等多種維度下的實(shí)時(shí)查詢(xún)與分析。
圖 5 電子商務(wù)中的實(shí)時(shí)計(jì)算流數(shù)據(jù)分析
五、Storm詳細(xì)介紹
整個(gè)數(shù)據(jù)處理流程包括四部分:
第一部分是數(shù)據(jù)接入該部分從前端業(yè)務(wù)系統(tǒng)獲取數(shù)據(jù)。
第二部分是最重要的Storm 實(shí)時(shí)處理部分,數(shù)據(jù)從接入層接入,經(jīng)過(guò)實(shí)時(shí)處理后傳入數(shù)據(jù)落地層;
第三部分為數(shù)據(jù)落地層,該部分指定了數(shù)據(jù)的落地方式;
第四部分元數(shù)據(jù)管理器。
圖 6 Storm整體架構(gòu)
數(shù)據(jù)接入層
該部分有多種數(shù)據(jù)收集方式,包括使用消息隊(duì)列(MetaQ),直接通過(guò)網(wǎng)絡(luò)Socket傳輸數(shù)據(jù),前端業(yè)務(wù)系統(tǒng)專(zhuān)有數(shù)據(jù)采集API,對(duì)Log問(wèn)價(jià)定時(shí)監(jiān)控。(注:有時(shí)候我們的數(shù)據(jù)源是已經(jīng)保存下來(lái)的log文件,那Spout就必須監(jiān)控Log文件的變化,及時(shí)將變化部分的數(shù)據(jù)提取寫(xiě)入Storm中,這很難做到完全實(shí)時(shí)性。)
Storm實(shí)時(shí)處理層
圖 7 Storm和Hadoop的對(duì)比
Storm關(guān)注的是數(shù)據(jù)多次處理一次寫(xiě)入,而Hadoop關(guān)注的是數(shù)據(jù)一次寫(xiě)入,多次處理使用(查詢(xún))。Storm系統(tǒng)運(yùn)行起來(lái)后是持續(xù)不斷的,而Hadoop往往只是在業(yè)務(wù)需要時(shí)調(diào)用數(shù)據(jù)。兩者關(guān)注及應(yīng)用的方向不一樣。
1.Nimbus:負(fù)責(zé)資源分配和任務(wù)調(diào)度。
2.Supervisor:負(fù)責(zé)接受nimbus分配的任務(wù),啟動(dòng)和停止屬于自己管理的worker進(jìn)程。
3.Worker:運(yùn)行具體處理組件邏輯的進(jìn)程。
4.Task:worker中每一個(gè)spout/bolt的線(xiàn)程稱(chēng)為一個(gè)task. 在Storm0.8之后,task不再與物理線(xiàn)程對(duì)應(yīng),同一個(gè)spout/bolt的task可能會(huì)共享一個(gè)物理線(xiàn)程,該線(xiàn)程稱(chēng)為executor。
具體業(yè)務(wù)需求:條件過(guò)濾、中間值計(jì)算、求topN、推薦系統(tǒng)、分布式RPC、熱度統(tǒng)計(jì)
圖 8 Storm實(shí)時(shí)處理
數(shù)據(jù)落地層:
MetaQ
如圖架構(gòu)所示,Storm與MetaQ是有一條虛線(xiàn)相連的,部分?jǐn)?shù)據(jù)在經(jīng)過(guò)實(shí)時(shí)處理之后需要寫(xiě)入MetaQ之中,因?yàn)楹蠖藰I(yè)務(wù)系統(tǒng)需要從MetaQ中獲取數(shù)據(jù)。這嚴(yán)格來(lái)說(shuō)不算是數(shù)據(jù)落地,因?yàn)閿?shù)據(jù)沒(méi)有實(shí)實(shí)在在寫(xiě)入磁盤(pán)中持久化。
Mysql
數(shù)據(jù)量不是非常大的情況下可以使用Mysql作為數(shù)據(jù)落地的存儲(chǔ)對(duì)象。Mysql對(duì)數(shù)據(jù)后續(xù)處理也是比較方便的,且網(wǎng)絡(luò)上對(duì)Mysql的操作也是比較多的,在開(kāi)發(fā)上代價(jià)比較小,適合中小量數(shù)據(jù)存儲(chǔ)。
HDFS
HDFS及基于Hadoop的分布式文件系統(tǒng)。許多日志分析系統(tǒng)都是基于HDFS搭建出來(lái)的,所以開(kāi)發(fā)Storm與HDFS的數(shù)據(jù)落地接口將很有必要。例如將大批量數(shù)據(jù)實(shí)時(shí)處理之后存入Hive中,提供給后端業(yè)務(wù)系統(tǒng)進(jìn)行處理,例如日志分析,數(shù)據(jù)挖掘等等。
Lustre
Lustre作為數(shù)據(jù)落地的應(yīng)用場(chǎng)景是,數(shù)據(jù)量很大,且處理后目的是作為歸檔處理。這種情形,Lustre能夠?yàn)閿?shù)據(jù)提供一個(gè)比較大(相當(dāng)大)的數(shù)據(jù)目錄,用于數(shù)據(jù)歸檔保存。
元數(shù)據(jù)管理器
元數(shù)據(jù)管理器的設(shè)計(jì)目的是,整個(gè)系統(tǒng)需要一個(gè)統(tǒng)一協(xié)調(diào)的組件,指導(dǎo)前端業(yè)務(wù)系統(tǒng)的數(shù)據(jù)寫(xiě)入,通知實(shí)時(shí)處理部分?jǐn)?shù)據(jù)類(lèi)型及其他數(shù)據(jù)描述,及指導(dǎo)數(shù)據(jù)如何落地。元數(shù)據(jù)管理器貫通整個(gè)系統(tǒng),是比較重要的組成部分。元數(shù)據(jù)設(shè)計(jì)可以使用mysql存儲(chǔ)元數(shù)據(jù)信息,結(jié)合緩存機(jī)制開(kāi)源軟件設(shè)計(jì)而成。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:實(shí)時(shí)計(jì)算,流數(shù)據(jù)處理系統(tǒng)簡(jiǎn)析
本文網(wǎng)址:http://www.oesoe.com/html/support/11121815542.html