如何配置多节点 Apache Storm 集群
How to configure multi-node Apache Storm cluster
我正在跟随 http://jayatiatblogs.blogspot.com/2011/11/storm-installation.html & http://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 集合。
下面是我的 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
下面是我的 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"
下面是我的 master 节点的 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个supervisor一共15个slot?
我应该怎么做才能拥有 3 个主管?
我在slave节点check in supervisor.log时,原因如下:
2015-05-29T09:21:24.185+0000 b.s.d.supervisor [INFO] 5019754f-cae1-4000-beb4-fa0
16bd1a43d still hasn't started
您是指 Nimbus 为主节点吗?
一般情况下,Zookeeper集群应该先启动,然后是nimbus,然后是supervisors。 Zookeeper 和 Nimbus 应该始终可用,以便 Storm 集群正常运行。
您应该检查主管日志以检查故障。 Nimbus 主机和 Zookeeper 机器应该可以从 Supervisor 机器访问。
你做的很完美,也很有效。
你唯一应该改变的是你的 storm.dir
。它在从属节点和主节点中是相同的,只是在 nimbus 和主管节点中更改 storm.dir
路径中的路径(不要使用相同的本地路径)。当您使用相同的本地路径时,nimbus 和 supervisor 共享相同的 id。他们开始发挥作用,但您看不到 8 个插槽,他们只显示 4 个插槽作为工人。
更改 (storm.local.dir:/home/ubuntu/storm/data
) 并且不要在 supervisor 和 nimbus 中使用相同的路径。
我正在跟随 http://jayatiatblogs.blogspot.com/2011/11/storm-installation.html & http://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 集合。
下面是我的 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
下面是我的 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"
下面是我的 master 节点的 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个supervisor一共15个slot?
我应该怎么做才能拥有 3 个主管?
我在slave节点check in supervisor.log时,原因如下:
2015-05-29T09:21:24.185+0000 b.s.d.supervisor [INFO] 5019754f-cae1-4000-beb4-fa0
16bd1a43d still hasn't started
您是指 Nimbus 为主节点吗?
一般情况下,Zookeeper集群应该先启动,然后是nimbus,然后是supervisors。 Zookeeper 和 Nimbus 应该始终可用,以便 Storm 集群正常运行。
您应该检查主管日志以检查故障。 Nimbus 主机和 Zookeeper 机器应该可以从 Supervisor 机器访问。
你做的很完美,也很有效。
你唯一应该改变的是你的 storm.dir
。它在从属节点和主节点中是相同的,只是在 nimbus 和主管节点中更改 storm.dir
路径中的路径(不要使用相同的本地路径)。当您使用相同的本地路径时,nimbus 和 supervisor 共享相同的 id。他们开始发挥作用,但您看不到 8 个插槽,他们只显示 4 个插槽作为工人。
更改 (storm.local.dir:/home/ubuntu/storm/data
) 并且不要在 supervisor 和 nimbus 中使用相同的路径。