大數據面試之Storm


說明,感謝亮哥長期對我的幫助,此處多篇文章均爲亮哥帶我整理。以及參考諸多博主的文章。如果侵權,請及時指出,我會立馬停止該行爲;如有不足之處,還請大佬不吝指教,以期共同進步。

1.Storm

Apache Storm是自由開源的分佈式實時計算系統,擅長處理海量數據,適用於數據實時處理而非批處理。
Apache Storm核心概念
- Nimbus:Storm集羣主節點,負責資源分配和任務調度。我們提交任務和截止任務都是在Nimbus上操作的。一個Storm集羣只有一個Nimbus節點。
- Supervisor:Storm集羣工作節點,接受Nimbus分配任務,管理所有Worker。
- Worker:工作進程,每個工作進程中都有多個Task。
- Task:任務,每個Spout和Bolt都是一個任務,每個任務都是一個線程。
- Topology:計算拓撲,包含了應用程序的邏輯。
- Stream:消息流,關鍵抽象,是沒有邊界的Tuple序列。
- Spout:消息流的源頭,Topology的消息生產者。
- Bolt:消息處理單元,可以過濾、聚合、查詢數據庫。
- Stream grouping:消息分發策略,一共6種,定義每個Bolt接受何種輸入。
- Reliability:可靠性,Storm保證每個Tuple都會被處理。
Storm集羣架構圖

image
參考
參考
參考
參考
參考

1.1 Spark Streaming和Storm有什麼不同?

image

區別是SparkStreaming的吞吐量非常高,秒級準實時處理,Storm是容錯性非常高,毫秒級實時處理
解釋:sparkStreaming是一次處理某個間隔的數據,比如5秒內的數據,批量處理,所以吞吐量高。
Storm是來一條處理一條,所以速度快,不存在丟失數據
應用場景:對於數據非常重要不能丟失數據的,不能有延遲的,比如股票,金融之類場景的使用Storm
對於沒那麼高精度,但是要處理大量的數據,可以用sparkSremaing

SparkStreaming是流式處理框架,是Spark API的擴展,支持可擴展、高吞吐量、容錯的實時數據流處理,實時數據的來源可以是:Kafka(Kafka和SparkStreaming是黃金組合), Flume, Twitter, ZeroMQ或者TCP sockets,並且可以使用高級功能的複雜算子來處理流數據。例如:map,reduce,join,window 。最終,處理後的數據可以存放在文件系統,數據庫等,方便實時展現
同樣作爲流式處理框架,SparkStreaming和Storm的區別在於:
- Storm是實時處理數據,SparkStreaming是微批處理數據,因此SparkStreaming的吞吐量要比Storm高
- Storm適合處理實時數據,SparkStreaming適合處理流數據。SparkStreaming的高吞吐量,使得其計算邏輯必然可以處理複雜業務
- Storm的事務更加完善(ack保障機制,數據有100條就直接處理100條),SparkStreaming可以管理事務(100條數據處理完50條,可以手動管理處理剩下的50條)
- Storm和SparkStreaming都支持動態資源調度,不過最好別開啓(資源一旦釋放掉,有可能就要不回來了)

image
參考
參考

1.2 Storm 架構模式

image

與Hadoop主從架構一樣,Storm也採用Master/Slave體系結構,分佈式計算由Nimbus和Supervisor兩類服務進程實現,Nimbus進程運行在集羣的主節點,負責任務的指派和分發,Supervisor運行在集羣的從節點,負責執行任務的具體部分。
Nimbus:負責資源分配和任務調度。
Supervisor:負責接受nimbus分配的任務,啓動和停止屬於自己管理的worker進程。
Worker:運行具體處理組件邏輯的進程。
Task:worker中每一個spout/bolt的線程稱爲一個task。同一個spout/bolt的task可能會共享一個物理線程,該線程稱爲executor。
storm架構中使用Spout/Bolt編程模型來對消息進行流式處理。消息流是storm中對數據的基本抽象,一個消息流是對一條輸入數據的封裝,源源不斷輸入的消息流以分佈式的方式被處理,Spout組件是消息生產者,是storm架構中的數據輸入源頭,它可以從多種異構數據源讀取數據,併發射消息流,Bolt組件負責接收Spout組件發射的信息流,並完成具體的處理邏輯。在複雜的業務邏輯中可以串聯多個Bolt組件,在每個Bolt組件中編寫各自不同的功能,從而實現整體的處理邏輯。

參考
參考

面試題
面試題
面試題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章