Storm(五)第一個集群Topology

上一篇文章編寫了一個簡單的Topology,以local模式在Storm和IDEA中運行。這篇文章仍然以ExclamationBolt為例,只是這次要在Storm集群中運行。本文假定Storm集群環境已存在,不討論如何搭建環境。

原創文章,轉載請注明出處

修改Storm提交代碼

ExclamationTopology類的大部分代碼都不用修改,只需要修改main函數提交topology部分的代碼如下:

    try {
      StormSubmitter.submitTopology(topologyName, conf,
              builder.createTopology());
    } catch (Exception e) {
      e.printStackTrace();
    }

這里也把修改之前的代碼貼出來做個對比:

    try {
      LocalCluster cluster = new LocalCluster();
      cluster.submitTopology(topologyName, conf,builder.createTopology());
      Thread.sleep(60 * 1000);
      cluster.shutdown();
    } catch (Exception e) {
      e.printStackTrace();
    }

打包&運行

打包:mvn package
運行:storm jar cluster-topology-1.0-SNAPSHOT.jar com.quiterr.ExclamationTopology
打包和運行的方法和上一篇介紹的local模式是一模一樣的。

調試集群模式下的topology

本地模式下,可以在IDEA中方便的調試topology;集群模式下,至少有兩個方法來幫助驗證topology是否正確運行。

  1. Storm UI
Storm UI

Storm UI不僅可以用來查看一些信息,還有關閉topology、動態調整日志級別等功能。

topology管理

2.日志
(1)日志的路徑
默認的日志路徑:
/home/app/software/apache-storm-1.0.1/logs/workers-artifacts/{TopologyName}/6704/worker.log
例如ExclamationTopology:
/home/app/software/apache-storm-1.0.1/logs/workers-artifacts/ExclamationTopology-20-1491962752/6704/worker.log
(2)如果集群有多臺Storm服務器,日志在哪一臺上?
從路徑的命名來看,日志是按照worker來分的,這樣看來topology在哪臺服務器上執行,日志就會在相應的服務器上。如果有3個Storm服務器,剛好有3個worker,應該每臺服務器上都會有日志。為了避免找日志的繁瑣,我測試時一般在集群中只運行一臺服務器,一個worker。
(3)如何寫入自己的日志
其實Storm已經引入了slf4j日志框架,并用log4j進行日志存儲,我們不用自己再添加依賴,直接用就可以了。

public static Logger LOG = LoggerFactory.getLogger(TestWordSpout.class);
...... //省略中間的代碼
LOG.info("topologyName: {}", topologyName);

(4)如何調整日志級別
Storm UI可以動態調整某個topology的日志級別。
也可以修改/home/app/software/apache-storm-1.0.1/log4j2/worker.xml,然后重啟Storm。

本文源代碼:https://github.com/quiterr/storm-test/tree/master/cluster-topology

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容