1. 程式人生 > >linux上安裝storm單機模式

linux上安裝storm單機模式

最近的工作設計到了海量的實時的日誌分析與重組,討論之下,想嘗試使用storm來開發這套分析程式,於是就開始了新的研究與學習。

名詞解釋

nimbus:storm叢集的中心server,負責監控supervisor的情況
supervisor:每一臺叢集的機子都有一個supervisor監控topology的執行情況
topology:相當於一個計算任務
spout:用來獲取資料並分發到計算模組
bolt:計算模組
worker:跑在supervisor上的java虛擬機器程序
executor:跑在worker裡的執行緒
task:跑在executor裡的bolt,有可能一個執行緒跑多個bolt

網上有計算單詞出現次數的簡單例子程式,這裡不重複了,說說我遇到的坑吧

1.Storm單機版的配置

我是用虛擬機器安裝storm,暫時先將storm zookeeper 等都裝在一臺centos6.6機子上,Storm版本是最新的9.4

用的java版本是1.7.0_79
python是2.6.6
nimbus的機子上需要先裝ZeroMQ和JZMQ

在配置storm.yaml的時候有個不大不小的坑,yaml格式的配置檔案 =號的兩邊都要有空格,不然會報錯

配置完後先啟動zookeeper,然後是nimbus,然後是supervisor,最後是stormui

這裡我啟動supervisor的時候報了一個錯java.net.UnknownHostException
這個錯只要修改下hosts檔案,增加本機名以及對應ip即可

2.打包topology併發布到storm上去

1.開發的時候我們會引入storm-core的包,但在釋出到storm時需要將這個包排除在外
我們可以使用assembly的配置做到這一點

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"
>
<id>jar-with-dependencies</id> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <dependencySets> <dependencySet> <unpack>true</unpack> <excludes> <exclude>org.apache.storm:storm-core</exclude> </excludes> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>src/main/bin</directory> <outputDirectory>/</outputDirectory> </fileSet> <fileSet> <directory>${project.build.outputDirectory}</directory> </fileSet> </fileSets> </assembly>

用這個配置檔案排除storm的包

打成包後copy到機子上,用storm jar命令就可以運行了