国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

分布式流式計(jì)算平臺(tái)——S4

發(fā)布時(shí)間:2011-3-19 16:48    發(fā)布者:1770309616
S4是Yahoo!在2010年10月開(kāi)源的一套通用、分布式、可擴(kuò)展、部分容錯(cuò)、具備可插拔功能的平臺(tái)。這套平臺(tái)主要是為了方便開(kāi)發(fā)者開(kāi)發(fā)處理流式數(shù)據(jù)(continuous unbounded streams of data)的應(yīng)用。項(xiàng)目官方網(wǎng)站為:http://s4.io/。同時(shí),S4的開(kāi)發(fā)者也發(fā)表了一篇技術(shù)論文《S4istributed Stream Computing Platform》來(lái)介紹S4的設(shè)計(jì)。下面我們就來(lái)學(xué)習(xí)這篇論文。
開(kāi)發(fā)動(dòng)機(jī)
“We designed this engine to solve real-world problems in the context of search applications that use data mining and machine learning algorithms.” … “To process user feedback, we developed S4, a low latency, scalable stream processing engine.”
Yahoo!之所以開(kāi)發(fā)S4系統(tǒng),主要是為了解決它現(xiàn)實(shí)的問(wèn)題:搜索廣告的展現(xiàn)。搜索廣告是當(dāng)前各大搜索引擎的主要收入來(lái)源,用戶發(fā)出查詢請(qǐng)求,搜索引擎在返回正常結(jié)果的同時(shí)也會(huì)返回相關(guān)廣告,而廣告是按照點(diǎn)擊付費(fèi)。為了在最好的位置,放置最相關(guān)(也就是用戶最有可能點(diǎn)擊)的廣告,各大搜索引擎使用了大量的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)算法來(lái)進(jìn)行相關(guān)性計(jì)算,以便提高收入,滿足用戶需求。其中很重要的一點(diǎn)就是要不斷分析用戶的點(diǎn)擊反饋,以便捕獲用戶的行為。S4最初主要還只是用來(lái)處理用戶的點(diǎn)擊反饋。

“The streaming paradigm dictates a very different architecture than the one used in batch processing. Attempting to build a general- purpose platform for both batch and stream computing would result in a highly complex system that may end up not being optimal for either task.”
那么Yahoo!為什么沒(méi)有選擇Hadoop來(lái)處理呢? MapReduce系統(tǒng)主要解決的是對(duì)靜態(tài)數(shù)據(jù)的批量處理,即當(dāng)前的MapReduce系統(tǒng)實(shí)現(xiàn)啟動(dòng)計(jì)算時(shí),一般數(shù)據(jù)已經(jīng)到位了(比如保存到了分布式文件系統(tǒng)上)。
而流式計(jì)算系統(tǒng)在啟動(dòng)時(shí),一般數(shù)據(jù)并沒(méi)有完全到位,而是源源不斷地流入,并且不像批處理系統(tǒng)重視的是總數(shù)據(jù)處理的吞吐,而是對(duì)數(shù)據(jù)處理的latency,即希望進(jìn)入的數(shù)據(jù)越快處理越好。
當(dāng)然,現(xiàn)在也有很多基于Hadoop系統(tǒng)來(lái)處理流式數(shù)據(jù)。一般有以下幾種方式。
  • Micro-batchinMapReduce:就是把流式的數(shù)據(jù)按照時(shí)間或者大小形成小的靜態(tài)數(shù)據(jù),然后定期啟動(dòng)MapReduce來(lái)計(jì)算。
  • Continuous MapReduce:Hadoop Online(http://www.eecs.berkeley.edu/Pub ... /EECS-2009-136.html)通過(guò)實(shí)現(xiàn)作業(yè)內(nèi)的數(shù)據(jù)傳輸Pipeline和作業(yè)間的數(shù)據(jù)傳輸Pipeline,可以實(shí)現(xiàn)online aggregation和continuous queries。當(dāng)前MapReduce模型中,只有Map中間結(jié)果完全產(chǎn)生后,Reduce才會(huì)過(guò)來(lái)拖數(shù)據(jù),等所有Map數(shù)據(jù)都拖成功后,才能計(jì)算。Hadoop Online實(shí)現(xiàn)了Map到Reduce間的數(shù)據(jù)Pipeline,使得可以在Map產(chǎn)生部分?jǐn)?shù)據(jù)后,就可以送到Reduce端,以便Reduce可以提前或者定期計(jì)算。
  • Dynamic add input:百度的一種實(shí)現(xiàn),用來(lái)解決計(jì)算時(shí)數(shù)據(jù)還沒(méi)有到位的問(wèn)題。作業(yè)可以在數(shù)據(jù)還沒(méi)有完全到位的情況下啟動(dòng),當(dāng)新數(shù)據(jù)累積到一定量時(shí),通過(guò)一個(gè)命令行接口,向運(yùn)行中的作業(yè)動(dòng)態(tài)增加新的輸入。通過(guò)這種方式,大大減少了處理大數(shù)據(jù)作業(yè)時(shí)等待數(shù)據(jù)到位的時(shí)間,在依次執(zhí)行多個(gè)作業(yè)時(shí),也會(huì)有時(shí)間收益。
在論文中,對(duì)類似于第一種的方式,分析了它的缺點(diǎn)。如果將數(shù)據(jù)流切成較小的data segment,就會(huì)增加啟動(dòng)作業(yè)的overhead,同時(shí)使得維護(hù)segment之間的依賴關(guān)系變得更加復(fù)雜;但如果切得較大,那么處理的latency就會(huì)比較長(zhǎng)。
隨著大量實(shí)時(shí)應(yīng)用的發(fā)展,比如實(shí)時(shí)搜索、實(shí)時(shí)交易系統(tǒng)、實(shí)時(shí)欺騙分析、實(shí)時(shí)監(jiān)控、社交網(wǎng)絡(luò)等,都需要一個(gè)高度可擴(kuò)展的流式計(jì)算解決方案。不同于原來(lái)的流式計(jì)算系統(tǒng),S4主要解決的是高數(shù)據(jù)率和大數(shù)據(jù)量的流式處理。
設(shè)計(jì)假設(shè)和目標(biāo)
為了簡(jiǎn)化設(shè)計(jì),S4給出了下面的假設(shè)。
Lossy failover is acceptable,即一旦一個(gè)節(jié)點(diǎn)失敗,會(huì)failover到另一個(gè)standby節(jié)點(diǎn),但是會(huì)丟失原節(jié)點(diǎn)的內(nèi)存狀態(tài)。這也是為什么說(shuō)S4是一個(gè)部分容錯(cuò)的系統(tǒng)。
節(jié)點(diǎn)不能動(dòng)態(tài)增加和減少。
設(shè)計(jì)目標(biāo)包括以下幾個(gè)方面。
  • 簡(jiǎn)單的編程接口。
  • 高可用+高可擴(kuò)展。
  • 盡力避免Disk IO,而要盡量使用Local Memory,以便減少處理latency。
  • 使用去中心化和對(duì)稱架構(gòu),所有的節(jié)點(diǎn)的責(zé)任相同,方便部署和維護(hù)。
  • 功能可插拔,使得平臺(tái)通用化的同時(shí),做到可以定制化。
  • 設(shè)計(jì)要科學(xué)、易用和靈活。
S4的設(shè)計(jì)大量借鑒了I BM的Stream Processing Core(SPC)中間件的設(shè)計(jì)。只是 SPC采用的是Subscription Model,而S4結(jié)合了 MapReduce和Actors Model。
Event Stream
一個(gè)Stream是Events的序列流。每個(gè)Event是一個(gè)(K,A)數(shù)據(jù),通過(guò)EventType來(lái)標(biāo)示其類型。K、A分別表示這種類型的Event的keys和attributes。key和attribute都是tuple-valued,即key=value這種元組值。下面給出一個(gè)event的例子:
EV:ClickLog                         → event type
KEY:product=“search”, type=”online”
→ keys
VAL: userid=”123”, ip=”10.0.0.0”,
cookieid=”3”                            → attributes
Processing Elements
Processing Element(PE)是S4中的基本運(yùn)算單元。一個(gè)PE通過(guò)下面四個(gè)組件來(lái)表示。
  • functionality:實(shí)現(xiàn)PE的Java類和相關(guān)配置來(lái)定義。
  • types of events:處理的event type。
  • key:關(guān)心哪種key。
  • Key的值:關(guān)心的key值是多少。


每個(gè)PE只負(fù)責(zé)處理自己所關(guān)心的eventtype,并且只處理自己所對(duì)應(yīng)的key值的event。PE處理后可能輸出一個(gè)或多個(gè)event。當(dāng)平臺(tái)處理一個(gè)key值時(shí),會(huì)先檢查相應(yīng)的PE是否已經(jīng)存在,如果不存在,會(huì)先初始化相應(yīng)的PE,然后交由這個(gè)PE進(jìn)行處理。舉例如圖1所示。
在圖1中,PE2負(fù)責(zé)處理相應(yīng)的單詞事件(WordEvent),主要邏輯是統(tǒng)計(jì)所關(guān)心單詞的個(gè)數(shù),然后輸出給下游的PE。PE2所關(guān)心的eventtype為WorkEvent,所關(guān)心的key為word,所關(guān)心的key值為“said”。假如又來(lái)了一個(gè)WordEvent,key為word=“l(fā)isten”,那么這個(gè)事件就不是PE2所關(guān)心的,所以平臺(tái)可能會(huì)為“l(fā)isten”值啟動(dòng)一個(gè)新的PE來(lái)處理。
有一類特殊的PE,即keylessPE(沒(méi)有key和key值),這些PE會(huì)接收相應(yīng)eventtype的所有event進(jìn)行處理。這類PE主要用來(lái)作為S4cluster的輸入層(InputLayer),即外圍應(yīng)用會(huì)產(chǎn)生相應(yīng)的event(keylessevent),將這些event發(fā)到任何一個(gè)節(jié)點(diǎn)。而S4cluster中的每個(gè)節(jié)點(diǎn)都會(huì)啟動(dòng)一個(gè)keylessPE,這些PE做簡(jiǎn)單的輸入處理后,轉(zhuǎn)化為keyedevent,交給集群中的其他PE類型進(jìn)行處理。
PE的邏輯主要由應(yīng)用程序員來(lái)開(kāi)發(fā)。
Processing Node
Processing Node是一個(gè)邏輯節(jié)點(diǎn),負(fù)責(zé)監(jiān)聽(tīng)消息的到來(lái),對(duì)消息進(jìn)行處理,然后通過(guò)Communication Layer將event在集群中分發(fā)。S4主要依據(jù)上面提到的eventtype和key/key值,對(duì)key值求hash,在集群中進(jìn)行分發(fā)。關(guān)注的key集合通過(guò)配置文件來(lái)得到。對(duì)于需要處理的event,會(huì)交給PN中的Processing Element Container(PEC),然后PEC調(diào)用相應(yīng)的PE進(jìn)行處理。PN功能框如圖2所示。
通過(guò)圖2的設(shè)計(jì),可以保證,對(duì)應(yīng)于相同event type,key和key值的event一定會(huì)被路由到對(duì)應(yīng)的PN。
底下的Communication Layer和Zookeeper共同完成了集群管理和自動(dòng)failover功能。
編程模型
應(yīng)用的主要任務(wù)就是實(shí)現(xiàn)一些相應(yīng)的PE。PE一般提供如下接口供應(yīng)用實(shí)現(xiàn)。
  • processEvent():用來(lái)處理每一個(gè)event,然后修改相應(yīng)的內(nèi)部狀態(tài)。
  • output():框架會(huì)按照應(yīng)用的配置定期的調(diào)用,以便向下游輸出其他event。應(yīng)用可以使用兩種輸出配置,一個(gè)是隔多長(zhǎng)時(shí)間輸出一次;另一個(gè)是隔多少event個(gè)數(shù)輸出一次。
其他
論文中給出了一個(gè)Word Count的例子,大家可以仔細(xì)研究一下。在性能測(cè)試部分,論文總結(jié)了將S4應(yīng)用到實(shí)際的CTR(Click-Through Rate)預(yù)估中的效果。在應(yīng)用舉例中,給出了S4在在線參數(shù)優(yōu)化的應(yīng)用。
隨著大量實(shí)時(shí)計(jì)算需求的增加,分布式流式計(jì)算將會(huì)成為分布式計(jì)算的下一個(gè)主要研究重點(diǎn),將會(huì)成為類似Hadoop這類MapReduce框架的有力補(bǔ)充。這一方向的工作還處在初級(jí)發(fā)展階段,大家需要多加關(guān)注。
本文地址:http://m.qingdxww.cn/thread-58907-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開(kāi)發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開(kāi)發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久婷婷色一区二区三区| 亚洲综合片| 色婷婷六月桃花综合影院| 手机成人| 中文字幕第15页| 中文字幕精品在线| 国产人成精品综合欧美成人| 青春草久久| 小xav导航福利网址| 亚洲性激情| 四虎在线视频免费观看| 十分钟免费观看视频在线观看免费| 在线视频网站| 精品国产国产精2020久久日| 性派对xxxhd| 亚洲欧美日韩中文字幕在线不卡| 啪啪免费看视频| 亚洲国产成人久久一区www妖精| 性欧美高清videofree| 97亚洲狠狠色综合久久位| 精品久久99麻豆蜜桃666| 亚洲一区日韩一区欧美一区a| 四虎影视永久免费观看地址| 日韩伦理片网站| 洗涤屋在线| A级韩国乱理伦片在线观看| 免费观看美女的网站| 在线伦理电影网| 日本免费看视频| 亚洲福利一区| 在线亚洲欧美| 欧美牲交A欧美牲交| 午夜激情小视频| 日韩国产欧美视频| 涩涩漫画软件| WWW国产亚洲精品久久| 天美传媒色情原创精品| 亚洲精品国产美女在线观看| 手机福利视频| 亚洲自拍第二页| 国产久青青青青在线观看|