Apache Storm
1. Apache Storm是什么
2. Apache Storm核心概念
3. Storm原理架構
4. Storm集群安裝部署
5. 啟動storm ui、Nimbus和Supervisor
一、Apache Storm是什么
Apache Storm是自由開源的分布式實時計算系統,擅長處理海量數據,適用於數據實時處理而非批處理。
批處理使用的大多是鼎鼎大名的hadoop或者hive,作為一個批處理系統,hadoop以其吞吐量大、自動容錯等優點,在海量數據處理上得到了廣泛的使用。但是,hadoop不擅長實時計算,因為它天然就是為批處理而生的,這也是業界一致的共識。否則最近幾年也不會有s4,storm,puma這些實時計算系統如雨后春筍般冒出來啦。
舉個搜索場景中的例子,當一個賣家發布了一條寶貝信息時,他希望的當然是這個寶貝馬上就可以被賣家搜索出來、點擊、購買啦,相反,如果這個寶貝要等到第二天或者更久才可以被搜出來,估計就會有不少損失了。 再舉一個推薦的例子,如果用戶昨天在淘寶上買了一雙襪子,今天想買一副泳鏡去游泳,但是卻發現系統在不遺余力地給他推薦襪子、鞋子,根本對他今天尋找泳鏡的行為視而不見,這樣商家的利益就有所損失。這是因為后台系統做的是每天一次的全量處理,而且大多是在夜深人靜之時做的,那么客戶今天白天做的事情要到明天才能反映出來。這也就是為什么需要實時處理的原因。
二、Apache Storm核心概念
1. Nimbus:Storm集群主節點,負責資源分配和任務調度。我們提交任務和截止任務都是在Nimbus上操作的。
一個Storm集群只有一個Nimbus節點。
2. Supervisor:Storm集群工作節點,接受Nimbus分配任務,管理所有Worker。
3. Worker:工作進程,每個工作進程中都有多個Task。
4. Task:任務,每個Spout和Bolt都是一個任務,每個任務都是一個線程。
5. Topology:計算拓撲,包含了應用程序的邏輯。
6. Stream:消息流,關鍵抽象,是沒有邊界的Tuple序列。
7. Spout:消息流的源頭,Topology的消息生產者。
8. Bolt:消息處理單元,可以過濾、聚合、查詢數據庫。
9. Stream grouping:消息分發策略,一共6種,定義每個Bolt接受何種輸入。
10. Reliability:可靠性,Storm保證每個Tuple都會被處理。
三、Storm原理架構
1. Storm
Zookeeper集群在Storm集群中的作用:
Zookeeper集群負責Nimbus節點和Supervior節點之間的通信,監控各個節點之間的狀態。
比如通常我們提交任務的時候是在Nimbus節點上執行的,Nimbus節點通過zk集群將任務分發下去,而Supervisor是真正執行任務的地方。
Nimbus節點通過zk集群監控各個Supervisor節點的狀態,當某個Supervisor節點出現故障的時候,
Nimbus節點就會通過zk集群將那個Supervisor節點上的任務重新分發,在其他Supervisor節點上執行。這就意味着Storm集群也是高可用集群,
如果Nimbus節點出現故障的時候,整個任務並不會停止,但是任務的管理會出現影響,通常這種情況下我們只需要將Nimbus節點恢復就可以了。
Nimbus節點不支持高可用,這也是Storm目前面臨的問題之一。不過一般情況下,Nimbus節點的壓力不大,通常不會出現問題。
一般情況下,Zookeeper集群的壓力並不大,一般只需要部署3台就夠了。Zookeeper集群在Storm集群中邏輯上是獨立的,但在實際部署的時候,一般會將zk節點部署在Nimbus節點或Supervisor節點上。
2. 數據處理流程圖
storm處理數據的特點:數據源源不斷,不斷處理。
3. 拓撲圖分析
storm中是沒有數據存儲結構的,我們需要自己設計數據落地接口,指明數據存儲到哪一部分中。Storm本身是不存儲數據的。
參照於: https://www.cnblogs.com/zhaojiankai/p/7257617.html