Storm 第四章 Storm常見問題

一、集羣如何啓動,任務如何執行?
  java -server nimbus,supervisor
  client--->createTopology(序列化)--->提交jar到nimbusinbox--->nimibus分配任務(task總數/worker數)---寫到zk。
  啓動worker<----識別本身的任務<----supervisor----->watch----zk
  啓動Spout/Bolt<----TaskInfo<-----worker---->task
二、集羣架構中各個模塊如何啓動?
  nimbus:用戶啓動
  supervisor:用戶啓動
  worker:supervisor啓動
  Task:worker啓動
三、集羣如何通訊?
  集羣架構中的各個模塊是如何通訊的?外部通訊
  拓撲程序中的各個Task是如何通訊的?內部通訊
四、Worker與topology
  一個worker只屬於一個topology,每一個worker中運行的task只能屬於這個topology。反之,一個topology包含多個worker,其實就是這個topology運行在多個worker上。

  一個topology要求worker數量若是不被知足,集羣在分配任務時,根據現有的worker先運行topology。若是當前集羣中的worker數量爲0,那麼最新提交的topology將只會標記active,
  不會運行,只有當集羣有了空閒資源纔會運行。

五、如何指定驅動類中每一個組件的併發度數量?如何設置worker數量?
  1,根據上游的數據量來設置spout的併發度。
  2,根據業務複雜度和execute方法執行時間來設置bolt併發度。
  3,根據集羣的可用資源來配置,通常狀況下70%的資源使用率。
  4,worker的數量理論上根據程序併發度的task數據來劃分,在實際業務場景中,須要反覆調整。java

六、ack-fail機制
  1,須要ackfail時,請爲每一個tuple生成一個messageId,這個messageId是用來標識你關心的tuple,當這個tuple被徹底處理時,storm框架會調用spout的ack方法,不然調用fail。至於你的
  消息是否重發,徹底由本身處理。
  2,在Spout有併發度的狀況下,storm會根據tuple最開始的所屬spout taskId,通知相應的spoutTask。
  3,在流式計算中topology的bolt組件能夠配置多個的,在每一個環節中,都須要bolt組件顯示的高速storm框架,本身對當前接受的這個tuple處理完成。




架構

相關文章
相關標籤/搜索