您好,登錄后才能下訂單哦!
這篇文章主要講解了“Storm編程入門知識點有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Storm編程入門知識點有哪些”吧!
Storm是一個分布式實時計算框架, 適應于流式計算。 所謂流式計算,你可以把它想像成你家的電表,電在流過電表時,電表就要計算耗用量,電表對耗用量的計算就是典型的流式計算。
下面介紹編程過程中需要用到的Storm的幾個概念:
Topology
Topology似于Hadoop中的MapReduce Job,是一個用來編排、容納一組計算邏輯組件(Spout、Bolt)的對象(Hadoop MapReduce中一個Job包含一組Map Task、Reduce Task),這一組計算組件可以按照DAG圖的方式編排起來(通過選擇Stream Groupings來控制數據流分發流向),從而組合成一個計算邏輯更加強大的對象,那就是Topology。一個Topology運行以后就不能停止,它會無限地運行下去,除非手動干預(顯式執行bin/storm kill )或意外故障(如停機、整個Storm集群掛掉)讓它終止。
Spout
Spout是一個Topology消息源頭,是一個可持續不斷生產消息的組件,例如,它可以是一個Socket Server在監聽外部Client連接并發送消息,可以是一個消息隊列(MQ)的消費者、可以是用來接收Flume Agent的Sink所發送消息的服務,等等。Spout生產的消息在Storm中被抽象為Tuple,在整個Topology的多個計算組件之間都是根據需要抽象構建的Tuple消息來進行連接,從而形成流。
Bolt
Storm中消息的處理邏輯被封裝到Bolt中,任何處理邏輯都可以在Bolt里面執行,處理過程和普通計算應用程序沒什么區別,只是需要根據Storm的計算語義來合理設置一下組件之間消息流的聲明、分發、連接即可。Bolt可以接收來自一個或多個Spout的Tuple消息,也可以來自多個其它Bolt的Tuple消息,也可能是Spout和其它Bolt組合發送的Tuple消息。
Stream Grouping
Storm中用來定義各個計算組件(Spout、Bolt)之間流的連接、分組、分發關系。Storm定義了如下7種分發策略:Shuffle Grouping(隨機分組)、Fields Grouping(按字段分組)、All Grouping(廣播分組)、Global Grouping(全局分組)、Non Grouping(不分組)、Direct Grouping(直接分組)、Local or Shuffle Grouping(本地/隨機分組),各種策略的具體含義可以參考Storm官方文檔、比較容易理解。
storm-demo是一個包含完整的storm topology的代碼示例,有詳盡的注釋。
源碼見: https://git.oschina.net/HuQingmiao/storm-demo.git
###本地模式 在本地開發時,不需要部署storm, 直接在eclipse或IntelliJ idea下運行即可,便于調試。 也可以通過命令行執行: java -jar jar文件名 main入口類
###生產模式 先將你的應用程序打成jar包,但jar包中不要含有storm及相關日志包,即將storm及相關日志包的scope設為provided即可:
<dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</artifactId> <version>0.9.5</version> <scope>provided</scope> </dependency>
再把應用程序jar包上傳到storm結點(Nimbus), 然后在結點上執行指令:
storm jar 你的應用程序.jar Main入口類 參數(topologId) 或 jstorm jar 你的應用程序.jar Main入口類 參數(topologId)
若要在在生產模式下停止這個topology,則執行以下命令即可:
storm kill 參數(topologId) 或 jstorm kill 參數(topologId)
感謝各位的閱讀,以上就是“Storm編程入門知識點有哪些”的內容了,經過本文的學習后,相信大家對Storm編程入門知識點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。