【问题标题】:How to configure multi-node Apache Storm cluster如何配置多节点 Apache Storm 集群
【发布时间】:2015-08-12 02:07:59
【问题描述】:

我正在关注 http://jayatiatblogs.blogspot.com/2011/11/storm-installation.htmlhttp://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html#sc_zkMulitServerSetup 在 AWS EC2 的 Ubuntu 14.04 LTS 中设置 Apache Storm 集群。

我的主节点是 10.0.0.185。 我的从节点是 10.0.0.79、10.0.0.124 和 10.0.0.84,它们的 zookeeper-data 中的 myid 分别为 1、2 和 3。我建立了一个由所有 3 个从节点组成的 Apache Zookeeper 集合。

下面是我的 slave 节点的 zoo.cfg:

tickTime=2000
initLimit=10
syncLimit=5

dataDir=/home/ubuntu/zookeeper-data
clientPort=2181

server.1=10.0.0.79:2888:3888
server.2=10.0.0.124:2888:3888
server.3=10.0.0.84:2888:3888

autopurge.snapRetainCount=3
autopurge.purgeInterval=1

下面是我的 slave 节点的storm.yaml:

########### These MUST be filled in for a storm configuration
 storm.zookeeper.server:
     - "10.0.0.79"
     - "10.0.0.124"
     - "10.0.0.84"
#     - "localhost"
 storm.zookeeper.port: 2181

# nimbus.host: "localhost"
 nimbus.host: "10.0.0.185"

 storm.local.dir: "/home/ubuntu/storm/data"
 java.library.path: "/usr/lib/jvm/java-7-oracle"

 supervisor.slots.ports:
     - 6700
     - 6701
     - 6702
     - 6703
     - 6704
#
# worker.childopts: "-Xmx768m"
# nimbus.childopts: "-Xmx512m"
# supervisor.childopts: "-Xmx256m"
#
# ##### These may optionally be filled in:
#
## List of custom serializations
# topology.kryo.register:
#     - org.mycompany.MyType
#     - org.mycompany.MyType2: org.mycompany.MyType2Serializer
#
## List of custom kryo decorators
# topology.kryo.decorators:
#     - org.mycompany.MyDecorator
#
## Locations of the drpc servers
# drpc.servers:
#     - "server1"
#     - "server2"

## Metrics Consumers
# topology.metrics.consumer.register:
#   - class: "backtype.storm.metric.LoggingMetricsConsumer"
#     parallelism.hint: 1
#   - class: "org.mycompany.MyMetricsConsumer"
#     parallelism.hint: 1
#     argument:
#       - endpoint: "metrics-collector.mycompany.org"

下面是我的 ma​​ster 节点的storm.yaml:

########### These MUST be filled in for a storm configuration
 storm.zookeeper.servers:
     - "10.0.0.79"
     - "10.0.0.124"
     - "10.0.0.84"
#     - "localhost"
#
 storm.zookeeper.port: 2181

 nimbus.host: "10.0.0.185"
# nimbus.thrift.port: 6627
# nimbus.task.launch.secs: 240

# supervisor.worker.start.timeout.secs: 240
# supervisor.worker.timeout.secs: 240

 ui.port: 8772

#  nimbus.childopts: "‐Xmx1024m ‐Djava.net.preferIPv4Stack=true"

#  ui.childopts: "‐Xmx768m ‐Djava.net.preferIPv4Stack=true"
#  supervisor.childopts: "‐Djava.net.preferIPv4Stack=true"
#  worker.childopts: "‐Xmx768m ‐Djava.net.preferIPv4Stack=true"

 storm.local.dir: "/home/ubuntu/storm/data"

 java.library.path: "/usr/lib/jvm/java-7-oracle"

# supervisor.slots.ports:
#     - 6700
#     - 6701
#     - 6702
#     - 6703
#     - 6704

# worker.childopts: "-Xmx768m"
# nimbus.childopts: "-Xmx512m"
# supervisor.childopts: "-Xmx256m"

# ##### These may optionally be filled in:
#
## List of custom serializations
# topology.kryo.register:
#     - org.mycompany.MyType
#     - org.mycompany.MyType2: org.mycompany.MyType2Serializer
#
## List of custom kryo decorators
# topology.kryo.decorators:
#     - org.mycompany.MyDecorator
#
## Locations of the drpc servers
# drpc.servers:
#     - "server1"
#     - "server2"

## Metrics Consumers
# topology.metrics.consumer.register:
#   - class: "backtype.storm.metric.LoggingMetricsConsumer"
#     parallelism.hint: 1
#   - class: "org.mycompany.MyMetricsConsumer"
#     parallelism.hint: 1
#     argument:
#       - endpoint: "metrics-collector.mycompany.org"

我在我的所有从节点中启动我的 zookeeper,然后在我的主节点中启动我的storm nimbus,然后在我的所有从节点中启动storm supervisor。但是,当我在我的 Storm UI 中查看时,集群摘要中只有 1 个主管,总共 5 个插槽,并且主管摘要中只有 1 个主管信息,为什么会这样?

如果我在这种情况下提交拓扑,实际上有多少从节点在工作?

为什么不是 3 个主管,总共 15 个插槽?

我应该怎么做才能有 3 个主管?

查看slave节点的supervisor.log,原因如下:

2015-05-29T09:21:24.185+0000 b.s.d.supervisor [INFO] 5019754f-cae1-4000-beb4-fa0
16bd1a43d still hasn't started

【问题讨论】:

  • 查看有关连接问题的失败主管日志
  • 添加了主管日志。似乎只有 1 个主管会同时启动,其他不会启动,尽管我也发出了“风暴主管”命令。

标签: apache-storm apache-zookeeper


【解决方案1】:

你做的很完美,它也很有效。

您唯一应该更改的是您的storm.dir。从属节点和主节点相同,只需更改 nimbus 和主管节点中 storm.dir 路径中的路径(不要使用相同的本地路径)。当您使用相同的本地路径时,nimbus 和 supervisor 共享相同的 id。它们开始发挥作用,但您看不到 8 个插槽,它们只是向您显示 4 个作为工人的插槽。

更改 (storm.local.dir:/home/ubuntu/storm/data) 并且不要在 supervisor 和 nimbus 中使用相同的路径。

【讨论】:

  • 感谢大家的帮助,不过我将nimbus节点的storm.yaml中的storm.local.dir:/home/ubuntu/storm/data改成/home/,问题依旧存在ubuntu/storm/data2,同时在slave节点的storm.yaml中保留storm.local.dir:/home/ubuntu/storm/data。
  • 当我发出storm rebalance时,不是让新的slave与之前的节点一起运行,而是新的slave节点替换之前的节点来运行
  • 好的!!我可以知道您正在运行多少个主管节点吗?主管中的路径 dir 是否更改或在所有主管节点中使用相同的路径?如果您在主管中运行相同的本地路径更改 it.ex 主管 1 节点中的路径storm.local.dir:/home/ubuntu/storm/data 和在主管 2 节点storm.local.dir:/home/ubuntu/storm/data2.他们应该不同!如果它不起作用,请检查更换后的前一个节点的日志。
  • 我现在运行 3 个从节点。非常感谢,我把storm.local.dir的不同目录放到每个slave节点的storm.yaml文件后就可以了。
  • 太棒了!如果您遇到任何新错误,您可以查看风暴故障排除页面。美好的一天
【解决方案2】:

您是否将 Nimbus 称为主节点?

一般来说,Zookeeper集群应该先启动,然后是nimbus,然后是supervisors。 Zookeeper 和 Nimbus 应该始终可供 Storm 集群正常运行。

您应该检查主管日志以检查故障。主管机器应该可以访问 Nimbus 主机和 Zookeeper 机器。

【讨论】:

  • 是的,我确实先启动 Zookeeper 集群,然后启动 Storm Nimbus,然后启动 Storm Supervisor。我只是在我问的问题中输入错误。编辑了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
  • 2020-07-08
相关资源
最近更新 更多