第四次讀書(shū)報(bào)告詳解_第1頁(yè)
第四次讀書(shū)報(bào)告詳解_第2頁(yè)
第四次讀書(shū)報(bào)告詳解_第3頁(yè)
第四次讀書(shū)報(bào)告詳解_第4頁(yè)
第四次讀書(shū)報(bào)告詳解_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、碩士研究生讀書(shū)報(bào)告題目Spark 中離散流的研究作者姓名 作者學(xué)號(hào)指導(dǎo)教師貝毅君學(xué)科專業(yè)大數(shù)據(jù)1502所在學(xué)院軟件學(xué)院提交日期二O六年三月The Research On Discrete Flow In SparkA Dissertation Submitted toZhejiang Universityin partial fulfillment of the requirements forthe degree ofMaster of EngineeringMajor Subject: Software EngineeringAdvisor: Bei YijunByZhejiang Uni

2、versity , P.R. China2016摘要本文從三個(gè)角度來(lái)進(jìn)行描述, 首先是簡(jiǎn)單介紹 Spark 的情況,初步了解 Spark 的發(fā)展歷史、 實(shí)現(xiàn) Spark 的語(yǔ)言以及為什么用 Spark 來(lái)進(jìn)行大數(shù)據(jù)的處理, 而不 是使用Hadoop來(lái)處理。接著是對(duì)Spark的優(yōu)缺點(diǎn)進(jìn)行描述,通過(guò)與Scala、Hadoop等語(yǔ)言進(jìn)行比較, 發(fā)現(xiàn)Spark在迭代處理計(jì)算方面比 Hadoop快100倍以上,同時(shí)它還提供了比 Hadoop更加豐富的API接口,這些都是它的優(yōu)勢(shì)。但是它也有劣勢(shì),那就是不 支持復(fù)雜的SQL統(tǒng)計(jì)、內(nèi)存消耗過(guò)大以及穩(wěn)定性方面還有不足之處。最后介紹了 Spark 中的離散流這種

3、 新式流數(shù)據(jù)處理模型,從它如何克服兩方面挑 戰(zhàn)、它的計(jì)算模型以及時(shí)序方面的考慮情況這三個(gè)方面來(lái)進(jìn)行詳細(xì)介紹, 通過(guò)這三點(diǎn)來(lái)讓讀 者深入了解離散流模型。關(guān)鍵詞: Spark 、迭代處理、離散流AbstractThe article describe Spark from three aspects. First of all is simple introduction to Spark, it makes readers understand the development history of Spark and the language which realizes the Spark a

4、nd the reason for processing big data by Spark, instead of using Hadoop to process.Then the advantages and disadvantages of the Spark is described. Compared with Scala, Hadoop and other languages, we find that the spark in the iterative processing calculation is 100 times faster than Hadoop. At the

5、same time, it also provides more abundant API interface than the Hadoop. These are the advantages of it. But it also has disadvantages, it does not support complex SQL statistics and memory consumption of it is very high and stability of it is still inadequate.At last, the paper introduces the discr

6、ete flow in the Spark which is the new data stream processing model, from how it overcomes two challenges and its calculation model and the time sequence of it to introduce the discrete flow in detail. This will enable readers to be impressed by the discrete flow model.Keywords: Spark, Iterative pro

7、cessing, discrete flow1 Spark 介紹Spark 是 UC Berkeley AMP lab 所開(kāi)源的類(lèi) Hadoop Map Reduce勺通用并行 框架,因此Spark擁有Hadoop Map Reduce所具有的優(yōu)點(diǎn),但是與 Map Reduce不 同的是Job中間輸出的結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫(xiě) HDFS所以 Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的 MapReduc啲算法。Spark是一種與Hadoop相似的開(kāi)源集群計(jì)算環(huán)境,但是兩者之間還存在著 一些不同之處,它使得 Spark 在某些負(fù)載方面表現(xiàn)得更優(yōu)秀,其中, Spark 采用

8、 了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,還能優(yōu)化迭代工作負(fù)載。Spark是在Scala語(yǔ)言中實(shí)現(xiàn)的,它將Scala用作其應(yīng)用程序框架。與Hadoop 不同, Spark 與 Scala 能夠緊密集成,其中的 Scala 可以向操作本地集合對(duì)象一 樣輕松地操作分布式數(shù)據(jù)集。盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè), 但是實(shí)際上它是對(duì) Hadoop的補(bǔ)充,可以在Hadoop文件系統(tǒng)中并行運(yùn)行。它是通過(guò)名為 Mesos的第 三方集群框架支持的此行為。Spark是由加州大學(xué)伯克利分校 AMP實(shí)驗(yàn)室開(kāi)發(fā)的, 可用來(lái)構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。Spark 提供了具有有用差異

9、的一個(gè)集群計(jì)算框架。首先, Spark 是為集群計(jì) 算中的特定類(lèi)型的工作負(fù)載而設(shè)計(jì)的,即那些在并行操作之間重用工作數(shù)據(jù)集 (比如機(jī)器學(xué)習(xí)算法)的工作負(fù)載。為了優(yōu)化這些類(lèi)型的工作負(fù)載, Spark 引進(jìn) 了內(nèi)存集群計(jì)算的概念, 可在內(nèi)存集群計(jì)算中將數(shù)據(jù)集緩存在內(nèi)存中, 以縮短訪 問(wèn)延遲。Spark還引進(jìn)了名為彈性分布式數(shù)據(jù)集 (RDD的抽象。RDD是分布在一組節(jié) 點(diǎn)中的只讀對(duì)象集合。 這些集合是彈性的, 如果數(shù)據(jù)集一部分丟失, 則可以對(duì)它 們進(jìn)行重建。重建部分?jǐn)?shù)據(jù)集的過(guò)程依賴于容錯(cuò)機(jī)制,該機(jī)制可以維護(hù)“血統(tǒng)” (即允許基于數(shù)據(jù)衍生過(guò)程重建部分?jǐn)?shù)據(jù)集的信息) 。2 Spark 的優(yōu)缺點(diǎn)2.1 Sp

10、ark 優(yōu)點(diǎn)Spark 在機(jī)器學(xué)習(xí)方面有著無(wú)與倫比的優(yōu)勢(shì), 特別適合需要多次迭代計(jì)算的 算法。同時(shí) Spark 還擁有非常出色的容錯(cuò)和調(diào)度機(jī)制,能確保系統(tǒng)穩(wěn)定運(yùn)行, Spark 目前的發(fā)展理念是通過(guò)一個(gè)計(jì)算框架集合 SQL、Machine Learning 、Graph Computing、 Streaming Computing 等多種功能于一個(gè)項(xiàng)目中,具有非常好的易 用性。Spark的主要優(yōu)勢(shì)在于速度,在迭代處理計(jì)算方面比Hadoop快100倍以上; Spark另外一個(gè)無(wú)可替代的優(yōu)勢(shì)是 Spark采用了一個(gè)統(tǒng)一的技術(shù)堆棧解決了云計(jì) 算大數(shù)據(jù)的所有核心問(wèn)題, 這也奠定了 Spark 在云計(jì)算

11、大數(shù)據(jù)領(lǐng)域的無(wú)可匹敵的 地位1 。Spark 系統(tǒng)是一種可擴(kuò)展的數(shù)據(jù)分析平臺(tái),它整合了內(nèi)存計(jì)算的基本功能, 因此相對(duì)于Hadoop系統(tǒng)的集群存儲(chǔ)方法,它在性能方面更具優(yōu)勢(shì)。Spark系統(tǒng)采用一種基于 Java 虛擬機(jī)的新型語(yǔ)言 Scala 來(lái)開(kāi)發(fā)和實(shí)現(xiàn),通過(guò)利用該語(yǔ) 言的高性能處理數(shù)據(jù)的能力,為數(shù)據(jù)處理提供了高可靠和高性能的環(huán)境。Spark系統(tǒng)提供了比Hadoop系統(tǒng)更豐富和便捷的API接口設(shè)計(jì),這樣非常 利于程序員進(jìn)行相應(yīng)的算法實(shí)現(xiàn)。 通常,同樣的算法在 Spark 系統(tǒng)中實(shí)現(xiàn)的代碼 長(zhǎng)度只有Hadoop系統(tǒng)的十分之一或者百分之一,由于程序開(kāi)發(fā)人員的開(kāi)發(fā)時(shí)間 大致與開(kāi)發(fā)代碼行數(shù)成正比,所以開(kāi)

12、發(fā)效率也得到了 10倍或者 100倍的提升。 Spark系統(tǒng)也提供了一個(gè)數(shù)據(jù)倉(cāng)庫(kù)的實(shí)現(xiàn), 也即是Shark系統(tǒng),該系統(tǒng)類(lèi)似“SQL on Spark”,它不僅可以兼容Hive系統(tǒng),并且性能最高可以達(dá)到 Hive的100倍。2.2 Spark 缺點(diǎn)Spark 雖然有很多優(yōu)點(diǎn),但是也有一些缺點(diǎn),下面就來(lái)了解下 Spark 存在的 缺陷。一、JVM的內(nèi)存overhead太大,1G的數(shù)據(jù)通常需要消耗5G的內(nèi)存,這大大 的增加了計(jì)算的內(nèi)存消耗;二、不同的Spark app之間缺乏有效的共享內(nèi)存機(jī)制; 三、穩(wěn)定性方面,由于代碼質(zhì)量問(wèn)題, Spark 長(zhǎng)時(shí)間運(yùn)行會(huì)經(jīng)常出錯(cuò),在架構(gòu)方 面,由于大量數(shù)據(jù)被緩存在

13、RAh中,Java回收垃圾緩慢的情況嚴(yán)重,導(dǎo)致Spark 性能不穩(wěn)定,在復(fù)雜場(chǎng)景中SQL的性能甚至不如現(xiàn)有的Map/Reduce四、不能 處理大數(shù)據(jù), 單獨(dú)機(jī)器處理數(shù)據(jù)過(guò)大, 或者由于數(shù)據(jù)出現(xiàn)問(wèn)題導(dǎo)致中間結(jié)果超過(guò) RAM勺大小時(shí),常常出現(xiàn)RAM間不足或無(wú)法得出結(jié)果。然而,Map/Reduce運(yùn)算 框架可以處理大數(shù)據(jù),在這方面, Spark不如Map/Reduce運(yùn)算框架有效;五、 不能支持復(fù)雜的SQL統(tǒng)計(jì),目前Spark支持的SQL語(yǔ)法完整程度還不能應(yīng)用在復(fù) 雜數(shù)據(jù)分析中,在可管理性方面,Spark-YARN的結(jié)合不完善,這就為使用過(guò)程 中埋下隱憂,容易出現(xiàn)各種難題。3 Spark 中的離散流

14、3.1 離散流介紹大規(guī)模流處理的動(dòng)機(jī)很簡(jiǎn)單:大部分“大數(shù)據(jù)”都是實(shí)時(shí)獲取的,并且到達(dá) 之時(shí)最有價(jià)值。 例如:社交網(wǎng)絡(luò)想要檢測(cè)出近幾分鐘內(nèi)的熱點(diǎn)話題, 搜索網(wǎng)站想 要對(duì)哪些用戶會(huì)訪問(wèn)新網(wǎng)頁(yè)進(jìn)行建模, 又或者是服務(wù)運(yùn)營(yíng)商對(duì)程序日志進(jìn)行秒級(jí) 監(jiān)控以是現(xiàn)實(shí)是鼓掌偵測(cè)。 要實(shí)現(xiàn)這些應(yīng)用, 就需要能擴(kuò)展到大型集群的流處理 模型。設(shè)計(jì)這樣的規(guī)模不容易, 因?yàn)閼?yīng)用(比如實(shí)時(shí)日志處理或機(jī)器學(xué)習(xí)) 所需的 規(guī)模可達(dá)數(shù)百個(gè)節(jié)點(diǎn)。 在這種規(guī)模下, 系統(tǒng)故障和慢節(jié)點(diǎn)問(wèn)題會(huì)變得很?chē)?yán)重, 并 且流式應(yīng)用尤其需要快速恢復(fù) 2。事實(shí)上,相比在批處理類(lèi)應(yīng)用中,快速恢復(fù)在 流應(yīng)用中更顯重要: 在批處理下, 用30秒鐘從系統(tǒng)故障或慢

15、節(jié)點(diǎn)里恢復(fù)或許可以 接受,而在流處理中,這 30秒便可錯(cuò)過(guò)一個(gè)重要的決策。而現(xiàn)有的流系統(tǒng)對(duì)系統(tǒng)故障或慢任務(wù)的應(yīng)對(duì)能力有限。 大多數(shù)分布式流式系 統(tǒng),包括Storm、TimeStream、Map Reduce On li ne和流式數(shù)據(jù)庫(kù)6,7,8,都是 基于連續(xù)操作模型。 在這種模型中,長(zhǎng)期運(yùn)行的帶有狀態(tài)的操作會(huì)接收每條記錄, 更新內(nèi)部狀態(tài), 并且發(fā)送新的紀(jì)錄。 這樣的模型設(shè)計(jì)很自然, 但也讓它難以應(yīng)對(duì) 系統(tǒng)故障和慢任務(wù)問(wèn)題。而離散流(D-Streams)的新式流數(shù)據(jù)處理模型就可以克服上述問(wèn)題。與管理長(zhǎng)時(shí)間存在的操作不同,D-Streams結(jié)構(gòu)將各運(yùn)算流化成為一系列短時(shí)間間隔 的無(wú)狀態(tài)、確定性

16、的批計(jì)算。例如:我們可以將每秒鐘(或每100毫秒)所接受的數(shù)據(jù)按照較短的時(shí)間間隔來(lái)分段,然后對(duì)每一段數(shù)據(jù)進(jìn)行MapReduc操作來(lái)實(shí)現(xiàn)計(jì)數(shù)。同樣的,可將各間隔求出的新的計(jì)數(shù)加到舊的結(jié)果上而實(shí)現(xiàn)滾動(dòng)計(jì)數(shù)。 通過(guò)將計(jì)算按這樣的方式來(lái)構(gòu)造。D-Streams可以確保:一、對(duì)于給定輸入數(shù)據(jù), 每個(gè)時(shí)間間隔內(nèi)的狀態(tài)完全確定, 而不需要同步協(xié)議;二、當(dāng)前狀態(tài)和舊數(shù)據(jù)的 依賴關(guān)系細(xì)粒度可見(jiàn)。這樣的設(shè)計(jì)能提供如批處理系統(tǒng)那樣的強(qiáng)大的恢復(fù)機(jī)制, 勝于復(fù)制和上行流備份方案。實(shí)現(xiàn)D-Strea m模型存在兩方面的挑戰(zhàn)。首先是要降低延時(shí)(間隔粒度)。傳 統(tǒng)批處理,如Hadoop在這方面有缺陷,因?yàn)樗鼈內(nèi)蝿?wù)間使用復(fù)制、

17、磁盤(pán)儲(chǔ)存方 式保存狀態(tài)。而Spark可以通過(guò)RD數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中保存數(shù)據(jù),并且使用操作 的lineage進(jìn)行恢復(fù),從而避免了復(fù)制。通過(guò)RDD可以做到低于秒級(jí)的端對(duì)端延 遲。第二個(gè)挑戰(zhàn)是從故障和慢任務(wù)中快速恢復(fù)。這里可以通過(guò)D-Streams的確定 性提供一種新的恢復(fù)機(jī)制,這種機(jī)制在以往的流系統(tǒng)中均未使用過(guò)。一個(gè)丟失節(jié)點(diǎn)狀態(tài)的并行恢復(fù),當(dāng)某個(gè)節(jié)點(diǎn)失效時(shí),集群中的各個(gè)節(jié)點(diǎn)都分擔(dān)并計(jì)算出丟失節(jié)點(diǎn)RD的一部分,從而使得恢復(fù)速度遠(yuǎn)快于上行流備份,且無(wú)復(fù)制開(kāi)銷(xiāo)。由于 需要復(fù)雜的狀態(tài)同步協(xié)議,即使是簡(jiǎn)單的復(fù)制操作(例如:Flux),在連續(xù)處 理系統(tǒng)中并行恢復(fù)也難以實(shí)現(xiàn),但這對(duì)完全確定性的 D-Stream

18、模型卻變得簡(jiǎn)單。 與上面的類(lèi)似,D-Stream可通過(guò)推測(cè)性執(zhí)行何來(lái)從慢任務(wù)中恢復(fù),而之前的系統(tǒng) 均不處理該類(lèi)任務(wù)。SparK Streaminglive input data streamdivicle datastream intobatchesI1batchesI1of inpul11data asRDDsSparkScheduler batches of results| 悄 Emory 仙 gnagerstreEonyexpiresDS1feam uta sec reaing rtiorkSi using imsdgenerals RDD transfor- nutionsM1Spa

19、rt batch jobs to execute RDD transformations圖1 Spark流系統(tǒng)的高級(jí)概述3.2離散流的計(jì)算模型流計(jì)算可以看成是在一小段時(shí)間周期上進(jìn)行的一系列確定性的批處理計(jì)算。對(duì)于每個(gè)時(shí)間周期收到的數(shù)據(jù),通過(guò)集群可靠地存儲(chǔ)成一個(gè)輸入數(shù)據(jù)集。一旦時(shí) 間周期完成時(shí),該數(shù)據(jù)集便通過(guò)確定的并行操作來(lái)處理,例如通過(guò) map reduce 和groupby等操作來(lái)產(chǎn)生新的數(shù)據(jù)集,該數(shù)據(jù)集可以表示程序輸出或中間狀態(tài)。對(duì)于前面的情況,結(jié)果可以以分布式的方式推送到一個(gè)外部系統(tǒng)。中間狀態(tài)可以通過(guò)彈性分布式數(shù)據(jù)集(RDDs)的高效抽象的存儲(chǔ)方式保存,這樣可以避免為了恢 復(fù)使用line

20、age而產(chǎn)生冗余。該狀態(tài)數(shù)據(jù)集可以隨同下一批輸入數(shù)據(jù)一起處理, 以產(chǎn)生一個(gè)新的數(shù)據(jù)集來(lái)更新中間狀態(tài)。intervalP1)interval1.2)mapreduceD-Stream是一系列具有不可變性的分區(qū)數(shù)據(jù)集(RDDs),可以通過(guò)確定的轉(zhuǎn)換對(duì)它們進(jìn)行操作。這些轉(zhuǎn)換生成新的D-Streams,并且可以通過(guò)RDDs的形式創(chuàng)建中間狀態(tài)。訪問(wèn)頁(yè)次人數(shù)計(jì)數(shù)D streamD streamDStrram圖2 在view count 程序中 RDD的 lineage簡(jiǎn)單的代碼程序如下:pageViews = readstream (” http:/ ” 1s”)ones = pageViews.map(

21、eve nt = (eve nt.url,1)counts = on es.r unnin gReduce(a,b) = a + b)這段代碼創(chuàng)建了一個(gè)名叫 pageViews的D-Stream,通過(guò)從HTTP讀取事件流 將他們用 1 秒的時(shí)間周期來(lái)分組頁(yè)面訪問(wèn)。 然后將這個(gè)事件流通過(guò)建立 (URL, 1) 這樣的鍵值的變化對(duì)來(lái)形成新的 D-Stream , 再通過(guò)一個(gè)狀態(tài)相關(guān)的 runningReduce轉(zhuǎn)換來(lái)對(duì)他們進(jìn)行計(jì)數(shù)操作。 傳入map和runningReduce的參數(shù) 是 Scala 的函數(shù)文本。為了執(zhí)行這個(gè)程序, Spark Streaming 接收數(shù)據(jù)流,然后將其劃分成秒級(jí)的 批

22、處理任務(wù),并將其存儲(chǔ)在 Spark的RDDS內(nèi)存中。同時(shí),他也會(huì)調(diào)用 RDD勺轉(zhuǎn) 換操作如同map和reduce來(lái)對(duì)RDD進(jìn)行處理。為了執(zhí)行這些轉(zhuǎn)換,首先 Spark 會(huì)啟動(dòng)map任務(wù)來(lái)對(duì)這些事件進(jìn)行處理,同時(shí)生成(url , 1)這樣的計(jì)數(shù)對(duì)。然 后,會(huì)對(duì)map的結(jié)果和之前reduce得到的結(jié)果啟動(dòng)reduce任務(wù),最后將結(jié)果存 儲(chǔ)在RDD里。這些任務(wù)會(huì)產(chǎn)生一個(gè)更新計(jì)數(shù)的新RDD程序中的每個(gè)D-Stream因此變成了一系列的 RDD。最后,為了錯(cuò)誤恢復(fù)和慢任務(wù),D-Streams和RDD要跟蹤他們的lineage,即 用于生成他們的確定性的操作圖。在每一個(gè)分布的數(shù)據(jù)集中,Spark會(huì)在分區(qū)的

23、層面跟蹤這些信息。 如果一個(gè)節(jié)點(diǎn)任務(wù)失敗, 通過(guò)重新運(yùn)行從集群中可靠存儲(chǔ)的 輸入數(shù)據(jù)構(gòu)建的任務(wù)來(lái)重新計(jì)算相應(yīng)的RD分區(qū)。這個(gè)系統(tǒng)還周期性的檢查 RDD的狀態(tài)(例如通過(guò)異步的方式對(duì)每十個(gè) RD進(jìn)行復(fù)制)以避免過(guò)度重算。但是不 需要對(duì)所有數(shù)據(jù)都進(jìn)行那樣的操作, 因?yàn)榛謴?fù)總是很快的: 丟失的分區(qū)可以在不 同的節(jié)點(diǎn)上并行計(jì)算。 類(lèi)似的, 當(dāng)一個(gè)節(jié)點(diǎn)運(yùn)行緩慢時(shí), 因?yàn)榭倳?huì)產(chǎn)生同樣的結(jié) 果,可以在其它節(jié)點(diǎn)上對(duì)任務(wù)的副本進(jìn)行推測(cè)執(zhí)行 11 。在D-Streams中并行恢復(fù)比在上行流備份具有更高的可用性,即使每個(gè)節(jié)點(diǎn) 上執(zhí)行了多個(gè)操作。D-Strea m從操作分區(qū)和時(shí)間兩個(gè)方面展現(xiàn)了并行化:1、如同每個(gè)節(jié)點(diǎn)執(zhí)

24、行多個(gè)任務(wù)的批處理系統(tǒng),每個(gè)節(jié)點(diǎn)在每個(gè)轉(zhuǎn)換操作的時(shí)間片會(huì)產(chǎn)生多個(gè)RD分區(qū)(例如100核的集群產(chǎn)生1000個(gè)RD分區(qū))。 當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),可以在其它節(jié)點(diǎn)以并行方式重新計(jì)算其分區(qū)。2、lineage 圖通??梢允箶?shù)據(jù)從不同的時(shí)間片并行地進(jìn)行重建。 如果一 個(gè)節(jié)點(diǎn)出錯(cuò),可能丟失一些時(shí)間片的 ma的輸出,不同時(shí)間片的ma任務(wù) 可以并行的重新執(zhí)行。假設(shè)需要執(zhí)行一系列的操作,這在一個(gè)連續(xù)處理 的系統(tǒng)中是無(wú)法實(shí)現(xiàn)那樣的功能的。依賴這些特性,當(dāng)每30秒建立一次檢查點(diǎn)時(shí),D-Streams僅用1-2秒就可以在 數(shù)百個(gè)核上并行恢復(fù)。3.3 離散流時(shí)序方面考慮D-Streams將每個(gè)記錄按其到達(dá)系統(tǒng)的時(shí)間存入輸入

25、數(shù)據(jù)集。這樣做可以確 保系統(tǒng)總是可以及時(shí)開(kāi)始一個(gè)新的批次, 尤其是在那些記錄從相同的地方里產(chǎn)生 的應(yīng)用中,例如:同一數(shù)據(jù)中心得服務(wù)產(chǎn)生的數(shù)據(jù)。這樣分割處理的方式,在語(yǔ) 義上不會(huì)產(chǎn)生錯(cuò)誤。 而其他應(yīng)用中, 開(kāi)發(fā)者可能希望基于事件發(fā)生的外部時(shí)間戳 將記錄分組, 例如:基于用戶點(diǎn)擊某一個(gè)鏈接的時(shí)間。 這樣一來(lái)記錄的到達(dá)可能 是無(wú)序的。D-Streams提供了兩種方法來(lái)處理這種情況:1、系統(tǒng)可以在開(kāi)始每個(gè)批次之前等待一個(gè)有限的“,空閑時(shí)間”。2、用戶程序可以在應(yīng)用級(jí)別上對(duì)晚到的記錄進(jìn)行糾正。例如:假設(shè)一個(gè)應(yīng)用想要在t時(shí)刻與t+1時(shí)刻間對(duì)某廣告的點(diǎn)擊數(shù)進(jìn)行統(tǒng)計(jì)。一旦 t+1 時(shí)刻過(guò)去,應(yīng)用就可以使用以一

26、秒為周期的 D-Streams,對(duì)t時(shí)刻與t+1 時(shí)刻間接收的點(diǎn)擊數(shù)進(jìn)行統(tǒng)計(jì)。然后,在后面的時(shí)間周期里系統(tǒng)可以進(jìn) 一步收集t與t+1時(shí)刻間的其他帶有外部時(shí)間戳的事件并計(jì)算更新統(tǒng)計(jì)結(jié) 果。例如:它可能將基于從t到t+5時(shí)間段內(nèi)收到的記錄,在t+5時(shí)刻產(chǎn)生 一個(gè)關(guān)于 t,t+1) 時(shí)間區(qū)間的新的計(jì)數(shù)。 這種計(jì)算可以應(yīng)用一種高效的增 量reduce操作,即在t+1時(shí)刻的老計(jì)數(shù)基礎(chǔ)上加上對(duì)之后新紀(jì)錄的計(jì)數(shù), 以避免重復(fù)計(jì)算。此方法類(lèi)似與順序無(wú)關(guān)處理 12 。這些時(shí)序性的考慮是流式處理系統(tǒng)所必須面對(duì)的, 因?yàn)槿魏蜗到y(tǒng)都會(huì)有外部 延時(shí)。數(shù)據(jù)庫(kù)領(lǐng)域?qū)Υ艘呀?jīng)進(jìn)行了詳細(xì)的研究。 一般來(lái)說(shuō), 這些技術(shù)都可以通過(guò)

27、D-Streams來(lái)實(shí)現(xiàn),即將計(jì)算“離散化”至叨、批次數(shù)據(jù)的計(jì)算(相同批次的處理 邏輯相同)。參考文獻(xiàn)1 邢立國(guó),呂瓊帥基于Spark的社交網(wǎng)絡(luò)特性分析M.平頂山學(xué)院學(xué)報(bào),2014,29(5)2 Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified data process ingon large clusters. In oSdl, 2004.3 Apache Storm. http:/storm-4 Zhengping Qian, Yong He, Chunzhi Su. Timestream: Reliable stream computati

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論