使用Apache Storm 1.0.0在生产群集中运行拓扑时出错,拓扑无法启动

时间:2016-04-15 18:45:58

标签: properties apache-storm production-environment

我的拓扑在本地群集上运行良好。 但是当我尝试在生产群集上运行它时,会发生以下情况:

  1. 雨云正在上升
  2. 风暴用户界面已启动
  3. 我使用的两名工人正在
  4. Zookeper上线
  5. 我用

    进行风暴

    storm jar myjar.jar MyClass

  6. Nimbus提交拓扑

  7. 拓扑和工作人员出现在风暴UI中
  8. BUT:

    尽管其状态为ACTIVE

    ,但拓扑仍无法启动

    拓扑的日志文件未显示在工作人员中。

    我在 supervisor.log

    中的工作人员中有以下日志
    2016-04-15 13:18:19.831 o.a.s.d.supervisor [WARN] There was a connection problem with nimbus. #error {
     :cause jobs-rec-storm-nimbus
     :via
     [{:type java.lang.RuntimeException
       :message org.apache.storm.thrift.transport.TTransportException: java.net.UnknownHostException: jobs-rec-storm-nimbus
       :at [org.apache.storm.security.auth.TBackoffConnect retryNext TBackoffConnect.java 64]}
      {:type org.apache.storm.thrift.transport.TTransportException
       :message java.net.UnknownHostException: jobs-rec-storm-nimbus
       :at [org.apache.storm.thrift.transport.TSocket open TSocket.java 226]}
      {:type java.net.UnknownHostException
       :message jobs-rec-storm-nimbus
       :at [java.net.AbstractPlainSocketImpl connect AbstractPlainSocketImpl.java 184]}]
     :trace
     [[java.net.AbstractPlainSocketImpl connect AbstractPlainSocketImpl.java 184]
      [java.net.SocksSocketImpl connect SocksSocketImpl.java 392]
      [java.net.Socket connect Socket.java 589]
      [org.apache.storm.thrift.transport.TSocket open TSocket.java 221]
      [org.apache.storm.thrift.transport.TFramedTransport open TFramedTransport.java 81]
      [org.apache.storm.security.auth.SimpleTransportPlugin connect SimpleTransportPlugin.java 103]
      [org.apache.storm.security.auth.TBackoffConnect doConnectWithRetry TBackoffConnect.java 53]
      [org.apache.storm.security.auth.ThriftClient reconnect ThriftClient.java 99]
      [org.apache.storm.security.auth.ThriftClient <init> ThriftClient.java 69]
      [org.apache.storm.utils.NimbusClient <init> NimbusClient.java 106]
      [org.apache.storm.utils.NimbusClient getConfiguredClientAs NimbusClient.java 78]
      [org.apache.storm.utils.NimbusClient getConfiguredClient NimbusClient.java 41]
      [org.apache.storm.blobstore.NimbusBlobStore prepare NimbusBlobStore.java 268]
      [org.apache.storm.utils.Utils getClientBlobStoreForSupervisor Utils.java 462]
      [org.apache.storm.daemon.supervisor$fn__9590 invoke supervisor.clj 942]
      [clojure.lang.MultiFn invoke MultiFn.java 243]
      [org.apache.storm.daemon.supervisor$mk_synchronize_supervisor$this__9351$fn__9369 invoke supervisor.clj 582]
      [org.apache.storm.daemon.supervisor$mk_synchronize_supervisor$this__9351 invoke supervisor.clj 581]
      [org.apache.storm.event$event_manager$fn__8903 invoke event.clj 40]
      [clojure.lang.AFn run AFn.java 22]
      [java.lang.Thread run Thread.java 745]]}
    2016-04-15 13:18:19.831 o.a.s.d.supervisor [INFO] Finished downloading code for storm id jobs-KafkaMigration-topology-3-1460740616
    2016-04-15 13:18:19.850 o.a.s.d.supervisor [INFO] Missing topology storm code, so can't launch worker with assignment ...(some more numbers)
    

    所以我认为我与nimbus有连接问题,但是worker中的属性文件是:

     storm.zookeeper.servers:
         - "192.168.22.209"
         - "192.168.22.216"
         - "192.168.22.217"
    
     storm.local.dir: "/app/home/storm"
    
    
     storm.zookeeper.root: "/storm-prod"
    
    # 
     nimbus.seeds: ["192.168.120.96"]
    

    如果我从工作人员对nimbus ip进行ping操作,则返回OK

    错误在哪里,我该如何解决?

    谢谢!

3 个答案:

答案 0 :(得分:7)

在这种情况下似乎发生的事情是,Storm主管从storm.yaml种子/主机第一次时间配置的任何内容中解析了nimbus,然后使用nimbus 主机名下载拓扑工件。

如果这是正确的,DNS对于群集设置是必需的。这远非理想,特别是在像kubernetes这样的协调环境中使用容器时。

我正在使用的当前解决方法是添加

storm.local.hostname: "<local.ip.value>" 

到storm.yaml

感谢@bastien在风暴用户邮件列表中提供了提示

答案 1 :(得分:2)

我遇到了类似的问题。结果我的防火墙规则阻止了主管端口。确保主管和灵气能够相互通信。

答案 2 :(得分:0)

我发现我需要将这些框的主机名与我在/ etc / hosts文件中调用它们的名称相匹配

在主机文件中我有

xxx.xxx.xxx.xxx nimbus

但是框中的主机名不同,它正在从os中提取主机名

更改nimbus服务器操作系统上的主机名解决了我的问题。