原文連結:Java 核心知識整理收集 :a870439570.github.io/interview-d…
什麼是Apache Storm
Apache Storm是一個分散式實時大資料處理系統。Storm設計用於在容錯和水平可擴充套件方法中處理大量資料。它是一個流資料框架,具有最高的攝取率。雖然Storm是無狀態的,它通過Apache ZooKeeper管理分散式環境和叢集狀態。它很簡單,您可以並行地對實時資料執行各種操作。
Apache Storm 和 Hadoop對比
Apache Storm優勢
- storm是開源的,強大的,使用者友好的。它可以用於小公司和大公司。
- Storm是容錯的,靈活的,可靠的,並且支援任何程式語言。
- 允許實時流處理。
- Storm是令人難以置信的快,因為它具有巨大的處理資料的力量。
- Storm可以通過線性增加資源來保持效能,即使在負載增加的情況下。它是高度可擴充套件的。
- Storm在幾秒鐘或幾分鐘內執行資料重新整理和端到端傳送響應取決於問題。它具有非常低的延遲。
- Storm有操作智慧。
- Storm提供保證的資料處理,即使群集中的任何連線的節點死或訊息丟失。
Storm 系統中包含以下幾個基本概念:
拓撲(Topologies)這裡寫連結內容 流(Streams) 資料來源(Spouts 資料流處理元件(Bolts) 資料流分組(Stream groupings) 可靠性(Reliability) 任務(Tasks) 工作程式(Workers)
Apache Storm的元件
Tuple
- Tuple是Storm中的主要資料結構。它是有序元素的列表。預設情況下,Tuple支援所有資料型別。通常,它被建模為一組逗號分隔的值,並傳遞到Storm叢集。
Stream
- 流是元組的無序序列。
Spouts
- 流的源。通常,Storm從原始資料來源(如Twitter Streaming API,Apache Kafka佇列,Kestrel佇列等)接受輸入資料。否則,您可以編寫spouts以從資料來源讀取資料。“ISpout”是實現spouts的核心介面,一些特定的介面是IRichSpout,BaseRichSpout,KafkaSpout等。
Bolts
- Bolts是邏輯處理單元。Spouts將資料傳遞到Bolts和Bolts過程,併產生新的輸出流。Bolts可以執行過濾,聚合,加入,與資料來源和資料庫互動的操作。Bolts接收資料併發射到一個或多個Bolts。 “IBolt”是實現Bolts的核心介面。一些常見的介面是IRichBolt,IBasicBolt等。
Storm工作流程
一個工作的Storm叢集應該有一個Nimbus和一個或多個supervisors。另一個重要的節點是Apache ZooKeeper,它將用於nimbus和supervisors之間的協調。
現在讓我們仔細看看Apache Storm的工作流程 −
- 最初,nimbus將等待“Storm拓撲”提交給它。
- 一旦提交拓撲,它將處理拓撲並收集要執行的所有任務和任務將被執行的順序。
- 然後,nimbus將任務均勻分配給所有可用的supervisors。
- 在特定的時間間隔,所有supervisor將向nimbus傳送心跳以通知它們仍然執行著。
- 當supervisor終止並且不向心跳傳送心跳時,則nimbus將任務分配給另一個supervisor。
- 當nimbus本身終止時,supervisor將在沒有任何問題的情況下對已經分配的任務進行工作。
- 一旦所有的任務都完成後,supervisor將等待新的任務進去。
- 同時,終止nimbus將由服務監控工具自動重新啟動。
- 重新啟動的網路將從停止的地方繼續。同樣,終止supervisor也可以自動重新啟動。由於網路管理程式和supervisor都可以自動重新啟動,並且兩者將像以前一樣繼續,因此Storm保證至少處理所有任務一次。
- 一旦處理了所有拓撲,則網路管理器等待新的拓撲到達,並且類似地,管理器等待新的任務。
預設情況下,Storm叢集中有兩種模式:
- 本地模式 -此模式用於開發,測試和除錯,因為它是檢視所有拓撲元件協同工作的最簡單方法。在這種模式下,我們可以調整引數,使我們能夠看到我們的拓撲如何在不同的Storm配置環境中執行。在本地模式下,storm拓撲在本地機器上在單個JVM中執行。
- 生產模式 -在這種模式下,我們將拓撲提交到工作Storm叢集,該叢集由許多程式組成,通常執行在不同的機器上。如在storm的工作流中所討論的,工作叢集將無限地執行,直到它被關閉。
Storm安裝(首先安裝jdk和zookeeper)
www.apache.org/dyn/closer.… 下載解壓,編輯conf/storm.yaml檔案
##填寫zookeeper叢集的ip地址或者主機名
########### These MUST be filled in for a storm configuration
storm.zookeeper.servers:
- "192.168.2.149"
- "192.168.2.150"
- "192.168.2.151"
nimbus.seeds: ["192.168.2.149"]
#配置資料儲存路徑
storm.local.dir: "/data/ms/storm-1.1.1/data"
##配置節點健康檢測
storm.health.check.dir: "healthchecks"
storm.health.check.timeout.ms: 5000
storm.local.hostname: "192.168.2.150"
#配置supervisor: 開啟幾個埠插槽,就開啟幾個對應的worker程式
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
複製程式碼
配置詳解 xstarcd.github.io/wiki/Cloud/…
啟動守護程式
最後一步是啟動所有的Storm守護程式。 在監督下執行這些守護程式是非常重要的。 Storm是一個快速失敗(fail-fast)系統,意味著只要遇到意外錯誤,程式就會停止。 Storm的設計可以在任何時候安全停止,並在重新啟動過程時正確恢復。 這就是為什麼Storm在程式中不保持狀態 - 如果Nimbus或Supervisors重新啟動,執行的拓撲結構不受影響。 以下是如何執行Storm守護程式:
Nimbus:在Storm主控節點上執行命令bin/storm nimbus &,啟動Nimbus後臺程式,並放到後臺執行。
Supervisor:在Storm各個工作節點上執行命令bin/storm supervisor &。
UI: 在Storm主控節點上執行命令bin/storm ui &,啟動UI後臺程式,並放到後臺執行
複製程式碼
訪問http://192.168.1.191:8080 成功