特別註意,在本地運行的時候應該去掉<scope>provided</scope>,否則會報java.lang.ClassNotFoundException: org.apache.storm.topology.IRichSpout 集群環境中運行的時候應該加上 在這個例子中,有一個spout,兩個b ...
特別註意,在本地運行的時候應該去掉<scope>provided</scope>,否則會報java.lang.ClassNotFoundException: org.apache.storm.topology.IRichSpout
集群環境中運行的時候應該加上
在這個例子中,有一個spout,兩個bolt,也就是說這個任務分為兩步。spout隨機發送一句話到stream,而SplitBolt負責將其分隔成一個一個單詞,CountBolt負責計數。運行的時候,spout的並行數是3,SplitBolt的並行數是2,也就是說相當於有3個spout,2個SplitBolt,1個CountBolt。
運行的時候,直接右鍵運行main方法即可,輸出結果大概是這樣的:
簡單的對比hadoop,可以這樣理解storm:
Storm中的Topology相當於Hadoop中的Job
Storm中的Spout相當於Hadoop中的輸入文件,而Bolt相當於MapReduce任務
Storm中的每一個處理是一個Bolt再到下一個Bolt,而Hadoop中是一個MapReduce任務再下一個MapReduce
如果一個任務需要分多步完成的話,那麼在Storm中每一步就相當於一個Bolt,而在Hadoop中每一步相當於一個MapReduce任務