2015-05-29 82 views
6

我跟随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群集。如何配置多节点Apache Storm群集

我的主节点是10.0.0.185。 我的从属节点分别为10.0.0.79,10.0.0.124,& 10.0.0.84,它们的动物园管理员数据中分别具有1,2和3的myid。我建立了由所有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" 

下面是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" 

我在我所有的从节点中启动我的动物园管理员,然后在我的主节点中启动我的风暴灵气,然后在我所有的从节点中启动风暴监控器。但是,当我在Storm UI中查看时,集群摘要中只有1个总共5个插槽的管理员&只有主管总结中的1个主管信息,为什么?

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

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

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

当我在从节点supervisor.log检查,原因是如下:

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

查看有关连接问题的失败主管日志 – shutty

+0

添加了管理员日志。似乎只有一个主管会同时启动,其他人不会启动,但我也会发出“风暴主管”命令。 – Toshihiko

回答

5

你在做什么完美的作品呢。

你应该改变的唯一的事情是你的storm.dir。在从节点和主节点中相同,只需更改管理节点(不使用相同的本地路径)中的storm.dir路径中的路径即可。当你使用相同的本地路径时,nimbus和supervisor共享相同的id。他们发挥作用,但你没有看到8个插槽,他们只显示你4个插槽作为工人。

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

+0

感谢您的帮助,但是,尽管我将nimbus节点的storm.yaml中的storm.local.dir:/ home/ubuntu/storm/data更改为/ home/ubuntu/storm/data2,但仍然存在问题, 同时保留从属节点storm.yaml中的storm.local.dir:/ home/ubuntu/storm/data。 – Toshihiko

+0

当我发出风暴重新平衡,而不是允许新的奴隶与前一个节点一起运行,新的奴隶节点替换前一个节点运行 – Toshihiko

+2

好吧!我可以知道你有多少个主管节点在运行!如果你在管理程序中运行相同的本地路径改变它,在管理程序1节点storm.local.dir:/ home/ubuntu/storm/data中的路径目录路径改变或在所有主管节点中使用相同的路径在主管2节点storm.local.dir:/home/ubuntu/storm/data2.they应该有所不同!如果不起作用,请在更换后检查上一个节点的日志。 –

0

你指的是灵气的主节点?

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

您应该检查管理员日志以检查失败。应该可以从Supervisor计算机访问Nimbus主机和Zookeeper计算机。

+0

是的,我首先启动Zookeeper集群,然后启动风暴Nimbus,然后启动Storm Supervisor。我只是在我问的问题中输入错误。编辑我的问题。 – Toshihiko