Storm官方文檔翻譯之在生產環境集羣中運行Topology

在進羣生產環境下運行Topology和在本地模式下運行很是類似。下面是步驟:html

    一、定義Topology(若是使用Java開發語言,則使用TopologyBuilder來建立)java

    二、使用StormSubmitter向集羣提交Topology。StormSubmitter有三個參數,Topology的名字,Topology的配置,和Topology自己。下面是例子:shell

Config conf = new Config();
conf.setNumWorkers(20);
conf.setMaxSpoutPending(5000);
StormSubmitter.submitTopology("mytopology", conf, topology);

    三、將你的代碼和你代碼所依賴的jar包打包成一個jar包(Storm的jar包除外,Storm的jar包會被添加到worker節點的classpath路徑)apache

   若是你使用maven,插件Maven Assembly Plugin會幫你打包,只需將下面的代碼添加到你的pom.xml中:api

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
  <descriptorRefs>  
    <descriptorRef>jar-with-dependencies</descriptorRef>
  </descriptorRefs>
  <archive>
    <manifest>
      <mainClass>com.path.to.main.Class</mainClass>
    </manifest>
  </archive>
</configuration>
</plugin>

   而後運行mvn assembly:assembly命令來獲取有效的jar包。確認你的jar包中沒包含Storm的jar包,由於的classpath中已經存在。maven

    四、使用Storm客戶端將Topology提交到集羣,指定你jar包的路徑、名稱河全部的參數而後運行: ui

storm jar path/to/allmycode.jar org.me.MyTopology arg1 arg2 arg3

   storm jar命令會提交jar包給集羣而且使用StormSubmitter類和有效地集羣對話。在上面的示例中,在提交jar包後storm jar會使用"arg1","arg2","arg3"三個參數調用org.me.MyTopology的主方法.spa

    你能夠閱讀設置Storm開發環境一文來查看如何使用storm客戶端來和Storm進羣對話。.net

經常使用的設置插件

   每一個Topology都有不少不一樣的配置。點擊此處查看Topology的全部設置。帶「TOPOLOGY」前綴的設置(其餘的是集羣的設置,不能被覆蓋)能夠被特定的Topology配置覆蓋。下面是一些經常使用的Topology設置:

一、Config.TOPOLOGY_WORKERS 

    這個參數設置設置了使用了多少個工做進程去執行Topology。例如,若是你將此參數設置爲25,就會有25個Java進程在集羣中執行全部任務。若是在Topology中有150個並行執行的組件,那麼每一個工做進程會以6個線程的方式執行個任務。

二、Config.TOPOLOGY_ACKER_EXECUTORS

    這個參數設置當Spout元組被徹底處理後,追蹤和探測元組樹的執行進程的數量。Acker是Storm的一部分,你能夠閱讀Guaranteeing message processing一文來獲取更多關於Acker的信息。若是不設置此參數,或者將此參數設置爲空,Storm會將此參數設置爲Topology指定的運行工做節點的數量。若是將這個參數設置爲0,Storm會在Spout發出元組後馬上返回成功信息,這將影響可靠性。

三、Config.TOPOLOGY_MAX_SPOUT_PENDING

    此參數設置了在單一一個Spout任務中一次能夠存留的最大元組的數量(沒有返回成功或者失敗消息的元組)。強烈建議設置此參數防止隊列溢出。

四、Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS

    這個參數設置了Spout元組被成功處理的最大超時時間。默認是30s,這對大多數的Topology來講已經足夠了。閱讀Guaranteeing message processing一文了解更多Storm可靠性的知識。

五、Config.TOPOLOGY_SERIALIZATIONS

    你可使用這個參數來註冊更多的序列化器,以便在元組中使用自定義類型。

殺死一個Topology

  要殺死一個Topology圖譜,只需簡單的運行:

storm kill {stormname}

   將提交Topology時設置的名字傳給  storm kill。

 Storm不會馬上殺死Topology。它會使全部的Spout失效而且確認他們不會再發射任何元組。Storm會在摧毀全部的工做節點以前等待Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS參數所設置的秒數,這給Topology足夠的時間來處理完全部的元組。

更新運行中的Topology

    要更新運行中的Topology,惟一的操做是殺掉當前的Topology而後從新提交一個新的Topology。一個計劃中的特性是實現storm swap命令來用一個新的Topology替換運行中的Topology,保證最小的故障時間同時使全部的舊Topology再也不處理元組。

監控Topology

     監控Topology的最好方法是使用Storm UI。Storm UI提供了運行任務中遇到的錯誤,細粒度的吞吐量狀況以及每一個Topology中的每一個組件的表現。你也能夠查看集羣中工做節點的日誌。

相關文章
相關標籤/搜索