您好,登錄后才能下訂單哦!
本篇內容介紹了“Storm面試題有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一、架構
1、Nimbus
負責資源分配和任務調度。新版本中的 nimbus 節點可以有多個做主備。
2、Zookeeper
協調集群,公共數據的存放(如心跳數據,集群的狀態和配置信息),nimbus 將分配給 Supervisor 的任務寫入到 Zookeeper
3、supervisor
負責接受 nimbus 分配的任務,啟動和停止屬于自己管理的 worker進程。
4、worker
運行具體處理組件邏輯的進程。worker 中每一個 spout/bolt 的線程稱為一個task. 在 storm0.8 之后,task 不再與物理線程對應,同一個 spout/bolt 的 task 可能會共享一個物理線程,該線程稱為 executor。最新版本的 Jstorm 已經廢除了 task 的概念
二、編程模型
1、Spout
Spout 是接受外部數據源的組件,將外部數據源轉化成 Storm 內部的數據, 以 Tuple 為基本的傳輸單元下發給 Bolt。(Tuple 是 Storm 內部中數據傳輸的基本單元,里面封裝了一個 List 對象,用來保存數據。)
2、Bolt
Bolt 是接受 Spout 發送的數據,或上游的 bolt 的發送的數據。根據業務邏輯進行處理。發送給下一個 Bolt 或者是存儲到某種介質上。介質可以是 mongodb 或 mysql,或者其他。
3、并行度
Worker:表示一個進程
Executor:表示由 worker 啟動的線程
Task:實際執行數據處理的最小工作單元(注意,task 并不是線程)
并行度的設置:評估上游 kafka 每秒生產的數據量,分析 topic 每個 partition
每秒的數據量,partition 的數據量=SpoutTask 接受數據量SpoutTask 數量=partition 的數量
Worker 的設置:如果數據量大,worker 的數量等于 spouttask 的數量
4、消息不丟失
ack 機制即, spout 發送的每一條消息,
l在規定的時間內,spout 收到 Acker 的 ack 響應,即認為該 tuple 被后
l
續 bolt 成功處理
l在規定的時間內,沒有收到 Acker 的 ack 響應 tuple,就觸發 fail 動作, 即認為該 tuple 處理失敗,
l或者收到 Acker 發送的 fail 響應 tuple,也認為失敗,觸發 fail 動作。通過 Ack 機制,spout 發送出去的每一條消息,都可以確定是被成功處理或失敗處理, 從而可以讓開發者采取動作。比如在 Meta 中,成功被處理,即可更新偏移量,當失敗時,重復發送數據。因此,通過 Ack 機制,很容易做到保證所有數據均被處理,一條都不漏。
“Storm面試題有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。