日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 互聯(lián)網(wǎng) > 談?wù)劮植际接嬎愕乃阕訉?

談?wù)劮植际接嬎愕乃阕訉?/h1>
來源:程序員人生   發(fā)布時間:2014-10-04 08:00:01 閱讀次數(shù):3704次

本文是我對分布式計算的算子這層的一些認(rèn)識和想法。因為最近自己的開發(fā)任務(wù)也是這方面相關(guān)的,公司內(nèi)部有自研的類流式計算框架需要做一層算子層。我主要分析的是流式系統(tǒng)上實現(xiàn)算子這一點(diǎn)入手,對比現(xiàn)有計算框架和業(yè)界正在開展的項目,分析分析這件事的表面和背后深層的含義,以及可想象空間


趨勢

Yahoo! 的Pig on Storm項目,讓Pig-latin能夠執(zhí)行在Storm這種流式引擎上,最終使得Pig-latin能夠混用于流式計算和批量計算場景下。應(yīng)該說,無論是Spark,Summingbird,還是Pig,都在嘗試做同一件事情:借助自己的DSL或原語在流式和批量兩套引擎上表達(dá)(近)實時和離線數(shù)據(jù)處理能力


Spark本身依賴RDD,實現(xiàn)了Spark Streaming這種小批流計算,其DStream就是RDD,所以在Spark上寫批量作業(yè)和流式作業(yè)API自然是統(tǒng)一的。


Summingbird在API層面統(tǒng)一了Storm上和Hadoop上的作業(yè),對于Hadoop上任務(wù)的編寫借助的是Cascading,屬性上看更多的是一種適配的角色,雖然Summingbird也稱為Lambda Architecture的一種解決方案。


總結(jié):表面上看,DSL需要支持不同的計算引擎,以達(dá)到算子層面的混用,這是趨勢。那么實現(xiàn)上的難度在哪呢?


挑戰(zhàn)

在流式系統(tǒng)上實現(xiàn)pig-latin這種本身就誕生于批量計算場景里的DSL,對某些關(guān)系型操作會有語義層面的不清晰性,具體可以看Pig on Storm初步討論。對于filter,foreach,union,甚至稍微復(fù)雜點(diǎn)的需要借助state的distinct,limit,在批量和流式場景下都是沒有歧義的,實現(xiàn)起來不會有太大的區(qū)別或難度。但是像兩流做sql語義里的join,或者多流做pig語義里的group,cross的時候,流式上的實現(xiàn)就不一致了,而且這個原語的定義也不同了


在流式系統(tǒng)上實現(xiàn)DSL或者一套FlumeJava,關(guān)鍵在能把UDAF給實現(xiàn)了。而要實現(xiàn)UDAF,就涉及到了跨批的事情。這件事情本質(zhì)上需要引擎的支持,比如Trident有SpoutCoordinator作流控,還具備一定的事務(wù)性,那么在你要做跨批之間的UDAF的時候呢,可以借助Trident的State,也就是輔助存儲,調(diào)用persistAggregate這樣的操作來完成。如果引擎不支持的話,比如原生Storm的接口,就沒辦法做流式DSL。


那么像Spark那樣又不同,因為Spark本身不是流式系統(tǒng),他的Spark Streaming上可以實現(xiàn)DSL,甚至可以和Spark SQL結(jié)合起來跑Streaming形式的SQL,原因是Spark是批量計算框架,所以他可以做類流式DSL。


總結(jié):實現(xiàn)上看,流式系統(tǒng)上實現(xiàn)DSL難點(diǎn)在UDAF,本質(zhì)上是跨批計算。那么流式上的跨批可以抽象為一種怎樣的模式呢?


增量計算

增量計算,理論上可以包含批量計算,流式計算,也包括了迭代計算。怎么理解呢。增量計算可以表達(dá)為 newValue = function ( currentValue, oldValue ),而newValue被保存為oldValue與之后新來的currentValue繼續(xù)產(chǎn)生關(guān)系,而這個不斷傳承下去的oldValue就是增量計算結(jié)果。

增量計算和前面提到的流式系統(tǒng)上實現(xiàn)算子有什么關(guān)系?這個增量的模型就是跨批計算的一種形式。function可以理解為一個算子,currentValue可以理解為本批計算結(jié)果,oldValue可以理解為UDAF的計算結(jié)果。

這個模型只有流式系統(tǒng)能實現(xiàn)嗎?不是的,批量計算框架也可以做,大不了newValue每次都落盤嘛。如果Hadoop MR來做這件事情,其實是把每一次MR的數(shù)據(jù)當(dāng)作一批,跨批的結(jié)果是額外保存的。如果RDD來做這件事情,那就不同了,上述這種模型很適合RDD來做,因為迭代計算可以看成是增量計算的一種,而RDD很擅長構(gòu)建DAG來完成迭代計算,只是每次計算出來的都是immutable的新RDD。

流式系統(tǒng)怎么實現(xiàn)這種增量計算模型呢?這就是我們組之前老大和同事智慧的結(jié)晶了,具體不方便說。其實實現(xiàn)它不是難點(diǎn),難點(diǎn)是計算框架內(nèi)需要對oldValue進(jìn)行容錯。RDD不用擔(dān)心容錯,因為有l(wèi)ineage來記錄,大不了可以重算,而且是可以并行的。Storm和Trident也不用擔(dān)心容錯,因為他把fail邏輯都交給用戶了!而我們組目前的增量計算引擎完成了這件事情,并且一直在checkpoint的優(yōu)化上做著努力。

總結(jié):計算模型上,在流式系統(tǒng)上實現(xiàn)增量計算引擎,是實現(xiàn)豐富算子層,做流式SQL的一個必要條件。流式上實現(xiàn)的增量計算模型,有什么本質(zhì)缺陷嗎?

深入RDD

之前在杭州Spark meetup,分享Spark SQL的時候,我提到過Spark RDD最重要的兩層意義:原語的豐富和數(shù)據(jù)表示能力前者使得Spark編程很easy,后者使得計算結(jié)果做到了reuse,適應(yīng)了MR模型、迭代計算模型、BSP模型。基于這兩點(diǎn),Spark Core上可以輕松衍生出SQL產(chǎn)品、機(jī)器學(xué)習(xí)產(chǎn)品、圖計算產(chǎn)品、流計算產(chǎn)品。

反觀流式系統(tǒng),比如Storm,原語要簡單豐富易用不是難事,問題是你數(shù)據(jù)能reuse嗎?!reuse有什么優(yōu)點(diǎn)?拿RDD來說,節(jié)省內(nèi)存空間以及并發(fā)的計算能力。RDD在設(shè)計之初就是immutable的,而且在計算內(nèi)部消化掉了MapReduce,而暴露出豐富的Transformation和Action。在論文中,RDD與DSM(Distributed Shared Memory)也進(jìn)行了多維度的對比。應(yīng)該說,Matei在設(shè)計RDD之前的參與Hadoop MapReduce源碼的開發(fā)經(jīng)驗,加上當(dāng)時其他系統(tǒng)內(nèi)DSM的差異設(shè)計,以及Google FlumeJava,微軟DryadLINQ在API層面的理念,最終揉合成了RDD這套東西。現(xiàn)在只有Spark現(xiàn)在實現(xiàn)了它。

最近我在增量計算引擎上實現(xiàn)的算子層,也是參考了FlumeJava,Trident,RDD設(shè)計出來的,還在測試中。就像我開頭說的,Pig on Storm這件事情,換引擎是表面。背后意義是算子層面的混用,最終的想象空間是一層統(tǒng)一的DAG,上面承接Pig、Hive、SQL等DSL,下面對接不同的計算系統(tǒng)。實現(xiàn)起來是不困難的,困難點(diǎn)可能不是技術(shù)問題。


總結(jié):RDD兩個致命優(yōu)點(diǎn),easy to use和數(shù)據(jù)的reuse,是其他系統(tǒng)難達(dá)到的,特別是第二點(diǎn),也是RDD的精髓所在。


對比Storm

marz做了Storm,ElephentDB之后,按照他的理解在how to beat CAP里提出了一種解決方案。在他提出的lambda achitecture里,Storm的定位在流式處理,而做類似ad-hoc的service layer是HBase。如果換做是我們目前的增量計算框架的愿景的話,我認(rèn)為,流式和ad-hoc這層有望被增量計算引擎統(tǒng)一。為什么?


Query = Function(All Data)


Data靜,Query動,是ad-hoc計算;Data動,Query靜,是流式計算;Data動,Query動,是持續(xù)計算。Storm處于第二者,增量計算框架可以做到第三者。Storm的拓?fù)涮峤皇莻€嚴(yán)重問題,等Nimbus拉起bolt和spout的時候,黃花菜都涼了。它的確適合流式計算,為什么呢,因為流式的本質(zhì)就是消息。Storm抽象的那層拓?fù)洌琤olt之間的消息通道,ack機(jī)制都很不錯,這層抽象滿足了流式計算,但是work這層以及調(diào)度這層遠(yuǎn)遠(yuǎn)不滿足Query不斷變化而仍需要流式計算的場景。我們現(xiàn)在做的框架將來會滿足這件事情,從此統(tǒng)一了流式、批量、迭代,超越現(xiàn)在的流式計算,不僅僅是StreamSQL,Stream上的DSL都是可以通過算子層來實現(xiàn)的。


總結(jié):Data動,Query動的場景如何統(tǒng)一解決?增量計算想象空間巨大,算子層重要性突顯。


全文完 :)

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日本三级视频在线播放 | 欧美 日本 国产 | 日韩精品一区二区三区在线 | 国产美女一区二区 | 久久国产精品久久 | 欧美特级一级片 | 欧美色图片一区二区 | 日本中文字幕在线观看 | 男女激情视频 | 亚洲欧美在线一区 | 久久九九99 | 婷婷激情综合 | 亚洲视频区 | 色婷婷一区二区三区四区成人网 | 久久久久亚洲一区二区三区 | 成人国产精品视频 | 精品成人一区 | 国产精品二区在线 | 免费观看国产黄色 | 久久精品午夜 | 国产不卡视频一区二区三区 | 亚洲欧美视频一区 | 精品九九 | 亚洲综合激情网 | 亚洲精品99 | 最新av网站在线观看 | 日本一区二区三区视频在线观看 | 在线综合国产 | 91在线tv | 成人免费高清 | 91电影在线观看 | 国产激情第一页 | 亚洲精品久久久久久久久久久久久 | 欧美在线a | 国产日韩在线视频 | 自拍偷拍第一页 | 免费人成在线观看网站 | 免费一级片 | 久久亚洲一区二区 | 国产视频在线一区二区 | 免费的av |