之前Storm安裝之后,也知道了Storm的一些相關概念,那么怎么樣才可以運行一個例子對Storm流式計算有一個感性的認識呢,那么下面來運行一個Storm安裝目錄自帶的測試案例,我們的Storm安裝在服務器的/usr/storm/apache-storm-0.9.6中,首先進入這個目錄,執行ls可以看到有一個examples目錄,這個就是Storm自帶的案例,里面有一個項目storm-starter,首先確保maven的正確安裝,我們執行命令: cd examples/storm-starter/ 進入項目目錄,看到目錄下有一個test目錄,然后我們執行: mvn test 執行之后,maven會自動搜索依賴並下載相關類庫最后完成項目的編譯,這個時候要保持網絡暢通,等待5-10分鍾項目就構建完畢了,會看到目錄下多出很多文件,提示BUILD SUCCESS則代表命令執行成功,如下圖:
然后,此時執行下面命令運行主類中的main方法:
mvn exec:java "-Dstorm.topology=storm.starter.WordCountTopology"
代碼稍微滾動幾秒,然后就結束了,最后出現的錯誤我們可以忽略,如果運行過程中查看仔細的話,會看到中間計算對單詞進行了一定的統計,中間某一時刻截圖如下:
此時,這個項目我們可以通過tar命令打包,下載到本地,也可以在本地參考在Windows下安裝maven的過程,和上面一樣執行 mvn test ,執行之后不用執行,因為Windows下默認沒有Python,所以要運行測試案例,還要安裝Python,此時我們可以打開開發環境eclipse for javaee,單擊"File"->"Import",進入項目導入選項,選擇Maven->Existing Maven Projects,單擊"Next"
然后在打開的界面,選擇Browse進入瀏覽界面,選擇我們之前使用maven編譯好的項目目錄storm-starter,點擊Finish完成即可導入了,導入后的項目結構截圖如下:
里面的錯誤可以暫時忽略,不影響運行,其中第一項src/jvm就是源碼的存放位置:
此時,我們可以打開storm.starter包下的WordCountTopology.java源文件,這個就是剛才測試案例的主類
代碼我們可以簡單地看懂一些,首先是創建拓撲,然后設置的數據源所在的類,我么可以看一下RandomSetenceSpout這個類數據源代碼,后來就是設置Bolt和MapReduce一樣進行了計算,之前執行的時候並不是和服務一樣不斷執行,而是一會就結束了,通過后面2行代碼我們就明白了,這里延時了10s然后將任務shutdown,大體流程就是這樣
這個主類的構造方法中調用了一個命令就是執行splitsentence.py腳本,查看這個腳本可以知道該腳本導入了storm.py這個模塊,主要的計算邏輯都在storm.py這個腳本所定義的方法中實現,所以之前說過必須安裝python才可以正確執行,原因就在這,所以理論上storm可以實現任何語言來編寫計算邏輯,只要調用父類的構造方法即可,當然我們可以使用Java直接來編寫相應的邏輯
當然這個項目還有很多細節需要理解,目前就先說這些,對Storm入門的項目有一個簡單的認識