本篇內(nèi)容介紹了“Storm面試題有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司服務項目包括訥河網(wǎng)站建設、訥河網(wǎng)站制作、訥河網(wǎng)頁制作以及訥河網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,訥河網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到訥河省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!一、架構(gòu)
1、Nimbus
負責資源分配和任務調(diào)度。新版本中的 nimbus 節(jié)點可以有多個做主備。
2、Zookeeper
協(xié)調(diào)集群,公共數(shù)據(jù)的存放(如心跳數(shù)據(jù),集群的狀態(tài)和配置信息),nimbus 將分配給 Supervisor 的任務寫入到 Zookeeper
3、supervisor
負責接受 nimbus 分配的任務,啟動和停止屬于自己管理的 worker進程。
4、worker
運行具體處理組件邏輯的進程。worker 中每一個 spout/bolt 的線程稱為一個task. 在 storm0.8 之后,task 不再與物理線程對應,同一個 spout/bolt 的 task 可能會共享一個物理線程,該線程稱為 executor。最新版本的 Jstorm 已經(jīng)廢除了 task 的概念
二、編程模型
1、Spout
Spout 是接受外部數(shù)據(jù)源的組件,將外部數(shù)據(jù)源轉(zhuǎn)化成 Storm 內(nèi)部的數(shù)據(jù), 以 Tuple 為基本的傳輸單元下發(fā)給 Bolt。(Tuple 是 Storm 內(nèi)部中數(shù)據(jù)傳輸?shù)幕締卧?,里面封裝了一個 List 對象,用來保存數(shù)據(jù)。)
2、Bolt
Bolt 是接受 Spout 發(fā)送的數(shù)據(jù),或上游的 bolt 的發(fā)送的數(shù)據(jù)。根據(jù)業(yè)務邏輯進行處理。發(fā)送給下一個 Bolt 或者是存儲到某種介質(zhì)上。介質(zhì)可以是 mongodb 或 mysql,或者其他。
3、并行度
Worker:表示一個進程
Executor:表示由 worker 啟動的線程
Task:實際執(zhí)行數(shù)據(jù)處理的最小工作單元(注意,task 并不是線程)
并行度的設置:評估上游 kafka 每秒生產(chǎn)的數(shù)據(jù)量,分析 topic 每個 partition
每秒的數(shù)據(jù)量,partition 的數(shù)據(jù)量=SpoutTask 接受數(shù)據(jù)量SpoutTask 數(shù)量=partition 的數(shù)量
Worker 的設置:如果數(shù)據(jù)量大,worker 的數(shù)量等于 spouttask 的數(shù)量
4、消息不丟失
ack 機制即, spout 發(fā)送的每一條消息,
l在規(guī)定的時間內(nèi),spout 收到 Acker 的 ack 響應,即認為該 tuple 被后
l
續(xù) bolt 成功處理
l在規(guī)定的時間內(nèi),沒有收到 Acker 的 ack 響應 tuple,就觸發(fā) fail 動作, 即認為該 tuple 處理失敗,
l或者收到 Acker 發(fā)送的 fail 響應 tuple,也認為失敗,觸發(fā) fail 動作。通過 Ack 機制,spout 發(fā)送出去的每一條消息,都可以確定是被成功處理或失敗處理, 從而可以讓開發(fā)者采取動作。比如在 Meta 中,成功被處理,即可更新偏移量,當失敗時,重復發(fā)送數(shù)據(jù)。因此,通過 Ack 機制,很容易做到保證所有數(shù)據(jù)均被處理,一條都不漏。
“Storm面試題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!