<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    最火爆的開(kāi)源流式系統(tǒng)Storm vs 新星Samza

    分布計(jì)算系統(tǒng)框架,按照數(shù)據(jù)集的特點(diǎn)來(lái)說(shuō),主要分為data-flow和streaming兩種。data-flow主要是以數(shù)據(jù)塊為數(shù)據(jù)源來(lái)處理數(shù)據(jù),代表有:MR、Spark等,我稱作它們?yōu)榇髷?shù)據(jù),而streaming主要是處理單位內(nèi)得到的數(shù)據(jù),這種方式,更注重于實(shí)時(shí)性,主要包括Strom、JStorm和Samza等,我稱作它們?yōu)榭鞌?shù)據(jù)。

    在這篇文章中,我主要談?wù)搒treaming相關(guān)的框架。

    第一個(gè)是Storm,一個(gè)實(shí)時(shí)計(jì)算系統(tǒng),它假定數(shù)據(jù)源是動(dòng)態(tài)的,可以向流水一樣處理數(shù)據(jù)。

    它的特點(diǎn)是:低延遲、高性能、分布式、可擴(kuò)展和容錯(cuò)性。

    架構(gòu)如下圖所示。


     

    Storm的具體概念可以參照:http://blog.csdn.net/hljlzc2007/article/details/12976211,這里不做具體介紹。

    Storm目前算是最最穩(wěn)定的開(kāi)源流式處理框架,但是個(gè)人認(rèn)為它有兩個(gè)問(wèn)題。

    1. Storm雖然支持多個(gè)語(yǔ)言編寫(xiě)spout和bolt端的代碼,但是它的主要技術(shù)實(shí)現(xiàn)是clojure,這給玩大數(shù)據(jù)、開(kāi)源的朋友帶來(lái)了極大的不變,因?yàn)榇蠹視?huì)的語(yǔ)言不是以java和C++等大眾語(yǔ)言為主,這樣的話,變得不可控了,難以深入了解、修改其細(xì)節(jié)。

    2. Storm可以支持在Yarn(Hadoop 2.0)上,可以和其他開(kāi)源框架共享Hadoop集群的資源,但是性能不佳,這個(gè)有待Storm改善

    當(dāng)然無(wú)論如何,Storm依然是目前開(kāi)源流式處理框架的王者。

    第二個(gè)我想說(shuō)的是JStorm,這個(gè)是阿里做的,算是Storm的另一個(gè)實(shí)現(xiàn),它用的語(yǔ)言是Java.

    特點(diǎn):

    1. 客戶端的API與Storm基本上是一致的,如果從Storm遷移過(guò)來(lái),不需要修改bolt和spout的代碼

    2. Jstrom比Strom穩(wěn)定,速度更快

    3. 提供了一些新的特性

    大家有興趣可以去玩玩,項(xiàng)目地址https://github.com/alibaba/jstorm 

    第三個(gè)是Samza

    Samza是由LinkedIn開(kāi)源的一個(gè)技術(shù),它是一個(gè)開(kāi)源的分布式流處理系統(tǒng),非常類似于Storm。不同的是它運(yùn)行在Hadoop之上,并且使用了自己開(kāi)發(fā)的Kafka分布式消息處理系統(tǒng)。

    這是Linkin開(kāi)發(fā)的一個(gè)小而美的項(xiàng)目,如何美呢?

    1. 只有幾千行代碼,完成的功能就可以和Storm媲美,當(dāng)然目前還有很多的不足

    2. 和Kafka結(jié)合緊密,更方便的處理數(shù)據(jù)

    3. 運(yùn)行在Yarn上

    之前我做過(guò)的一個(gè)項(xiàng)目,是Kafka + Storm + ElasticSearch,將來(lái)完全可以將Storm替換成Samza,這樣的話,還可以利用Hadoop集群的資源,做一些存儲(chǔ)、離線分析的功能。將實(shí)時(shí)處理和離線分析都運(yùn)行在Hadoop上,不得不說(shuō)Samza是一個(gè)偉大的項(xiàng)目,這樣可以減少項(xiàng)目的增長(zhǎng)復(fù)雜度,利于維護(hù),還是那句話,小而美的東西,更受歡迎一些。

    架構(gòu):

    Samza主要包含三層,

    1. 流處理層 --> Kafka

    2. 執(zhí)行層     --> YARN

    3. 處理層    --> Samza API

    Samza的流處理層和執(zhí)行層都是可插拔式的,開(kāi)發(fā)人員可以使用其他框架來(lái)替代,不局限于上述兩種技術(shù)。

    Samza提供了一個(gè)YARN ApplicationMaster,和YARN job,運(yùn)行在集群之外,下圖中不同顏色代表不同的主機(jī)。

    Samza客戶端告訴YARN的Resouce Manager,它想啟動(dòng)一個(gè)Samza job, YARN RM 告訴YARN Node manager,分配空間給YARN ApplicationMaster,NM指定完空間后,YARN container會(huì)運(yùn)行Samza Task Runner。


    Samza狀態(tài)管理

    流式處理數(shù)據(jù)對(duì)狀態(tài)的管理是很難的,由于數(shù)據(jù)是流動(dòng)的,本身沒(méi)有狀態(tài),這樣就需要靠歷史數(shù)據(jù)來(lái)記錄應(yīng)用的場(chǎng)合,Samza提供了一個(gè)內(nèi)部的key-value數(shù)據(jù)庫(kù),它是基于LevelDB,運(yùn)行的JVM之外的,使用它來(lái)存儲(chǔ)歷史數(shù)據(jù)。這樣的做的好處是:

    1. 減少JVM的開(kāi)銷

    2. 使用內(nèi)部存儲(chǔ),極大提高的吞吐率

    3. 減少并發(fā)操作

    Samza處理流程.

    下圖是Samza官方給的一例子,根據(jù)Member ID分組,計(jì)算頁(yè)面訪問(wèn)次數(shù)。入口消息分別來(lái)自Machine1、2,出口是Machine3,我們可以這樣理解,消息分散在不同的消息系統(tǒng)中(Kafka),Samza從不同的Kafka中讀取topic,在將topic進(jìn)行處理后,發(fā)送到Machine3,這里不做過(guò)多分解,具體可以參照官方文檔。



    項(xiàng)目地址:https://github.com/apache/incubator-samza

    官方文件:http://samza.incubator.apache.org/

    以上給了我們無(wú)限遐想,Storm是否會(huì)保持領(lǐng)先地位,Samza能否取而代之呢,無(wú)論如何,作為開(kāi)發(fā)者來(lái)說(shuō),幾千行代碼,我都迫不及待去要讀一下了。

    posted on 2014-12-02 15:03 paulwong 閱讀(421) 評(píng)論(0)  編輯  收藏 所屬分類: STORM

    主站蜘蛛池模板: 亚洲国产精品一区二区久| 免费一区二区三区在线视频| 在线免费视频一区二区| 污网站在线免费观看| 亚洲AV成人片色在线观看| 国产精品久久久久久久久久免费| 美女视频黄.免费网址| 亚洲视频在线观看一区| 国产免费av片在线播放| 久久免费福利视频| 国产精品成人亚洲| 亚洲色图综合网站| 久久久久一级精品亚洲国产成人综合AV区 | 国产成人精品免费视频大全麻豆| 色综合久久精品亚洲国产| 亚洲91av视频| 亚洲av无码不卡私人影院| 国产精品免费观看| 国产一级在线免费观看| 亚洲国产成人AV在线播放| 亚洲天堂一区二区| 国产亚洲大尺度无码无码专线| 夭天干天天做天天免费看| 久久永久免费人妻精品下载| 九一在线完整视频免费观看| 中文字幕亚洲男人的天堂网络| 亚洲成AV人片在WWW色猫咪| 亚洲va中文字幕无码| 四虎成人免费大片在线| 99精品视频免费在线观看| 人妻仑乱A级毛片免费看| 亚洲中文字幕久久精品蜜桃| 亚洲色图古典武侠| 亚洲精品自产拍在线观看动漫| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 高清免费久久午夜精品| 日韩欧美亚洲国产精品字幕久久久| 久久亚洲私人国产精品| 亚洲综合图色40p| 亚洲成a人片在线观看老师| 日本一道综合久久aⅴ免费|