Storm系列(一)環境搭建安裝

原文連接:Java 核心知識整理收集 :a870439570.github.io/interview-d…html

什麼是Apache Storm

Apache Storm是一個分佈式實時大數據處理系統。Storm設計用於在容錯和水平可擴展方法中處理大量數據。它是一個流數據框架,具備最高的攝取率。雖然Storm是無狀態的,它經過Apache ZooKeeper管理分佈式環境和集羣狀態。它很簡單,您能夠並行地對實時數據執行各類操做。git

Apache Storm 和 Hadoop對比

輸入圖片說明
屏幕截圖.png

Apache Storm優點

  • storm是開源的,強大的,用戶友好的。它能夠用於小公司和大公司。
  • Storm是容錯的,靈活的,可靠的,而且支持任何編程語言。
  • 容許實時流處理。
  • Storm是使人難以置信的快,由於它具備巨大的處理數據的力量。
  • Storm能夠經過線性增長資源來保持性能,即便在負載增長的狀況下。它是高度可擴展的。
  • Storm在幾秒鐘或幾分鐘內執行數據刷新和端到端傳送響應取決於問題。它具備很是低的延遲。
  • Storm有操做智能。
  • Storm提供保證的數據處理,即便羣集中的任何鏈接的節點死或消息丟失。

Storm 系統中包含如下幾個基本概念:

拓撲(Topologies)這裏寫連接內容 流(Streams) 數據源(Spouts 數據流處理組件(Bolts) 數據流分組(Stream groupings) 可靠性(Reliability) 任務(Tasks) 工做進程(Workers)github

Apache Storm的組件

Tuple數據庫

  • Tuple是Storm中的主要數據結構。它是有序元素的列表。默認狀況下,Tuple支持全部數據類型。一般,它被建模爲一組逗號分隔的值,並傳遞到Storm集羣。

Streamapache

  • 流是元組的無序序列。

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之間的協調。bash

如今讓咱們仔細看看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 成功

參考連接:github.com/weyo/Storm-…

相關文章
相關標籤/搜索