共計 1770 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章主要講解了“取消 storm 跟蹤機制的方法有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“取消 storm 跟蹤機制的方法有哪些”吧!
storm 中涉及的名詞
0、zookeeper
1、nimbus
2、supervisor
3、worker
4、executor
5、task
6、topology
0、zookeeper:存儲狀態信息、調度信息、心跳,—》nimbus 和 supervisor 之間的通信是由 zookeeper 來連接的,nimbus 和 supervisor 是不能直接通信的,storm 集群中的信息都存儲在 zookeeper 中。
1、nimbus:相當于集群中的 master,storm 是 master/slave 架構 —》nimbus 主要有兩個任務,1—》管理集群,supervisor 向 zookeeper 寫信息,然后 nimbus 從 zookeeper 的節點上獲取到信息,這樣 nimbus 就知道集群中的信息了。
2—》調度 topology,當一個 topology 通過 nimbus 提交到集群,nimbus 會通過 zookeeper 中得到集群中有多少個 supervisor 和運行狀況,然后根據 supervisor 運行狀況啟動 worker,nimbus 也負責接收數據。
2、supervisor:storm 的每一個節點上會有一個 supervisor 進程,supervisor 負責啟動和停止 worker 進程。
3、worker:每一個 supervisor 進程一般會啟動多個 worker 進程,worker 就是 jvm,主要負責兩件事;1、啟動 executor,2、負責 worker 和 worker 之間的通信。
4、executor:創建實際的 Spout/Bolt 對象,創建兩個線程,執行線程、傳輸線程(負責 task 與 task 中數據的通信)。
5、task:本人認為 task 就是 executor 中的執行線程。
6、topology:就是我們寫的 storm 程序
7、Spout(水龍頭):每一個 topology 都要有 Spout 節點,都必須從 Spout 節點開始,是生產 Tuple 的源頭,Spout 有 KafkaSpout、DRPCSpout、RedisSpout 等;Spout 是集群的起始節點,因此 nimbus 和 supervisor 都掛了,集群還是可以運作的,Spout 拿數據然后產生 Tuple,再將數據發送給 Bolt 來處理數據,nextTuple() 就是 Spout 的發送數據的函數,emit() 是發送數據的方法;
8、Bolt:每一個 topology 可以有 n 個 Bolt 處理節點,用去處理數據的中間狀態或結果狀態,Bolt 中的 execute() 方法是用來處理數據的
BaseBolt:
RichBolt:collector.emit(oldTuple,newTuple);
9、Tuple:Tuple 的 id 對于 Storm 的可靠性是非常有用的,數據的最小單元
10、acker:Storm 的跟蹤機制,Tuple 在每一級的處理都會向 acker 匯報;如果規定時間內沒有返回到需要的信息,會有一定的處理機制,比如重發或丟棄;
取消跟蹤機制的三種方法
1、在配置文件中將 Config.TOPOLOGY_ACKERS 設置為 0,整個 bolt 樹狀結構都沒有 ack 機制
2、不設置 messageid,沒有 messageid,ack 就沒法做異或運算;
3、在發送 Tuple 時不發送 oldTuple
跟蹤總結:ack 機制實現首先需要配置,其次有 messageid,最后要將原 Tuple 和新 Tuple 都發送出去;
10、Stream:每一個 Stream 都有一個 id,如果沒有指定寫 id 就用的是默認的流,叫 default,每個 Spout/Bolt 都有一個默認的 Stream:default
注:并發度的衡量標準是由多少個 executor(thread),而不是 task
感謝各位的閱讀,以上就是“取消 storm 跟蹤機制的方法有哪些”的內容了,經過本文的學習后,相信大家對取消 storm 跟蹤機制的方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!