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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    storm常見問題解答

    Posted on 2011-12-19 15:25 dennis 閱讀(14965) 評論(9)  編輯  收藏 所屬分類: javaHadoop與分布式
        最近有朋友給我郵件問一些storm的問題,集中解答在這里。
    一、我有一個數據文件,或者我有一個系統里面有數據,怎么導入storm做計算?

    你需要實現一個Spout,Spout負責將數據emit到storm系統里,交給bolts計算。怎么實現spout可以參考官方的kestrel spout實現:
    https://github.com/nathanmarz/storm-kestrel

    如果你的數據源不支持事務性消費,那么就無法得到storm提供的可靠處理的保證,也沒必要實現ISpout接口中的ack和fail方法。

    二、Storm為了保證tuple的可靠處理,需要保存tuple信息,這會不會導致內存OOM?

    Storm為了保證tuple的可靠處理,acker會保存該節點創建的tuple id的xor值,這稱為ack value,那么每ack一次,就將tuple id和ack value做異或(xor)。當所有產生的tuple都被ack的時候, ack value一定為0。這是個很簡單的策略,對于每一個tuple也只要占用約20個字節的內存。對于100萬tuple,也才20M左右。關于可靠處理看這個:
    https://github.com/nathanmarz/storm/wiki/Guaranteeing-message-processing

    三、Storm計算后的結果保存在哪里?可以保存在外部存儲嗎?

    Storm不處理計算結果的保存,這是應用代碼需要負責的事情,如果數據不大,你可以簡單地保存在內存里,也可以每次都更新數據庫,也可以采用NoSQL存儲。storm并沒有像s4那樣提供一個Persist API,根據時間或者容量來做存儲輸出。這部分事情完全交給用戶。

    數據存儲之后的展現,也是你需要自己處理的,storm UI只提供對topology的監控和統計。

    四、Storm怎么處理重復的tuple?

    因為Storm要保證tuple的可靠處理,當tuple處理失敗或者超時的時候,spout會fail并重新發送該tuple,那么就會有tuple重復計算的問題。這個問題是很難解決的,storm也沒有提供機制幫助你解決。一些可行的策略:
    (1)不處理,這也算是種策略。因為實時計算通常并不要求很高的精確度,后續的批處理計算會更正實時計算的誤差。
    (2)使用第三方集中存儲來過濾,比如利用mysql,memcached或者redis根據邏輯主鍵來去重。
    (3)使用bloom filter做過濾,簡單高效。

    五、Storm的動態增刪節點

    我在storm和s4里比較里談到的動態增刪節點,是指storm可以動態地添加和減少supervisor節點。對于減少節點來說,被移除的supervisor上的worker會被nimbus重新負載均衡到其他supervisor節點上。在storm 0.6.1以前的版本,增加supervisor節點不會影響現有的topology,也就是現有的topology不會重新負載均衡到新的節點上,在擴展集群的時候很不方便,需要重新提交topology。因此我在storm的郵件列表里提了這個問題,storm的開發者nathanmarz創建了一個issue 54并在0.6.1提供了rebalance命令來讓正在運行的topology重新負載均衡,具體見:
    https://github.com/nathanmarz/storm/issues/54
    和0.6.1的變更:
    http://groups.google.com/group/storm-user/browse_thread/thread/24a8fce0b2e53246

    storm并不提供機制來動態調整worker和task數目。

    六、Storm UI里spout統計的complete latency的具體含義是什么?為什么emit的數目會是acked的兩倍?
    這個事實上是storm郵件列表里的一個問題。Storm作者marz的解答:
    The complete latency is the time from the spout emitting a tuple to that
    tuple being acked on the spout
    . So it tracks the time 
    for the whole tuple
    tree to be processed.

    If you dive into the spout component in the UI, you
    'll see that a lot of
    the emitted/transferred is on the __ack* stream. This is the spout
    communicating with the ackers which take care of tracking the tuple trees.


    簡單地說,complete latency表示了tuple從emit到被acked經過的時間,可以認為是tuple以及該tuple的后續子孫(形成一棵樹)整個處理時間。其次spout的emit和transfered還統計了spout和acker之間內部的通信信息,比如對于可靠處理的spout來說,會在emit的時候同時發送一個_ack_init給acker,記錄tuple id到task id的映射,以便ack的時候能找到正確的acker task。


    評論

    # re: storm常見問題解答  回復  更多評論   

    2011-12-19 16:33 by shawny
    很贊的解答,學習了~

    # re: storm常見問題解答  回復  更多評論   

    2011-12-22 08:54 by tb
    恩 很不錯的

    # re: storm常見問題解答[未登錄]  回復  更多評論   

    2011-12-22 17:14 by tbw
    學習了。博主很有才

    # re: storm常見問題解答  回復  更多評論   

    2012-02-13 14:45 by bohr.qiu
    "spout會fail并重新發送該tuple"
    貌似spout不會自動重新發送改tuple吧。

    # re: storm常見問題解答[未登錄]  回復  更多評論   

    2012-02-13 15:06 by dennis
    @bohr.qiu
    看你怎么理解自動這個詞。
    fail通知你處理失敗,通常你的spout是個事務消費的consumer,那么失敗后就會重新消費消息,并emit這個失敗的tuple,從這個意義上說是自動的也沒錯。

    # re: storm常見問題解答  回復  更多評論   

    2012-05-10 09:46 by 肖磊
    老師好,剛開始學習storm,遇到很多問題,到現在連環境都搭不起來,真是苦惱。問題如下:
    1.storm開發環境的搭建是在linux下還是在windows下?有沒有具體的步驟啊?要是有圖解就更好了?
    2.開發storm項目的開發工具是什么,eclipse可以么?怎么實現?我理想中的情況是:在eclipse中開發topology然后就運行。這樣想對么?

    # re: storm常見問題解答  回復  更多評論   

    2012-05-23 16:43 by szh
    你好,我想問一下為什么我運行的wordcount例子,Storm UI里spout統計的complete latency和acked均為0呢,如何讓其顯示?

    # re: storm常見問題解答  回復  更多評論   

    2012-12-11 23:19 by babydavic
    我現在在4臺服務器上進行測試, 同時1000并發,處理能力最大在4000次 Trident Reach 例子,不知道真實的性能結果是否這樣·?

    # re: storm常見問題解答  回復  更多評論   

    2014-07-07 14:59 by 陳大貓
    部署到server上遇到一個Expecting previous txid state to be the previous transaction的問題,本地run沒問題,請問怎么解決?
    主站蜘蛛池模板: 黄色网址免费观看| 日本免费A级毛一片| 2019中文字幕免费电影在线播放| 国产一级淫片a视频免费观看| 久久久久亚洲AV无码网站| 精品国产污污免费网站入口| 午夜爱爱免费视频| 亚洲一区二区三区免费观看| 4hu四虎最新免费地址| 亚洲国产精品第一区二区| 黄网站免费在线观看| 中文字幕亚洲电影| 三级网站免费观看| 国产AV无码专区亚洲AV漫画| 黄床大片30分钟免费看| 亚洲乱码日产精品a级毛片久久 | 亚洲国产日韩在线人成下载 | 亚洲另类图片另类电影| 久草免费手机视频| 亚洲国产主播精品极品网红| 亚洲一区二区三区国产精品无码| 免费观看无遮挡www的视频 | 亚洲国产人成在线观看| 99免费视频观看| 日韩在线看片免费人成视频播放| 亚洲乱码一二三四五六区| 天天影院成人免费观看| 亚洲乱码一二三四区国产| 久久电影网午夜鲁丝片免费| ASS亚洲熟妇毛茸茸PICS| 色猫咪免费人成网站在线观看| 国产免费131美女视频| 国产精品高清免费网站| 亚洲av午夜精品一区二区三区| 四虎成人精品国产永久免费无码 | 亚洲AV午夜成人片| 特级做A爰片毛片免费看无码| 国产午夜亚洲不卡| 中文字幕免费人成乱码中国| 久久夜色精品国产嚕嚕亚洲av| 91精品手机国产免费|