You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mesos.apache.org by Obaid Salikeen <Ob...@ask.com> on 2014/12/09 03:44:41 UTC

How to launch Storm topology on Apache Marathon

Hi,

Currently, I couldn't find any tutorial or steps regarding how to launch storm-mesos (Storm topology) framework on Apache Marathon. It would be great if you guys could give me any reference or hints over how to launch Storm topology over Marathon.

-          Do I need to first install Storm on every single machine on my Mesos cluster?

-          What is the recommended way to launch Storm topology over Marathon?


Thanks a lot,
Obaid


RE: How to launch Storm topology on Apache Marathon

Posted by Obaid Salikeen <Ob...@ask.com>.
Thanks Tomas,

I was finally able to deploy Apache Storm 0.9.3-rc1 through Docker clustering on Marathon i.e I deployed Storm Docker images through Marathon. In this setup I am using HAProxy with Marathon (as recommended<https://www.youtube.com/watch?v=hZNGST2vIds> by Mesosphere).

This setup allows us to deploy any App (Storm in our case) in High Availability mode. Secondly since Marathon and Mesos are only concerned about running containers, they are not aware of what we are running. By this setup we achieve both the fault tolerance for machine failures and isolation of Storm processes by using Docker.

I have added a project on GitHub (https://github.com/obaidsalikeen/storm-marathon) which contains Docker images and Marathon recipes to launch a Storm Docker cluster on Apache Mesos through Marathon.

Let me know your thoughts.

Regards
Obaid



From: Tomas Barton [mailto:barton.tomas@gmail.com]
Sent: Saturday, December 20, 2014 2:23 AM
To: Salikeen, Obaid
Subject: Re: How to launch Storm topology on Apache Marathon

Hi Obaid,

I remember having problems with configuration being loaded from storm.yml that is bundled in storm jar. Nimbus hostname should be initialized to IP address,
where storm-mesos framework is running (which is not necessarily same host as marathon machine). Anyway by the time you're launching storm executors
you know the ipaddress - it's the address where framework is running, so you can pass it with env variable $NIMBUS_HOSTNAME

Regards,
Tomas

On 13 December 2014 at 00:06, Obaid Salikeen <Ob...@ask.com>> wrote:
Thanks a lot for your previous replies. I have made a lot of progress, and found an issue which can be a possible bug.

Basically the problem is with the hardcoded nimbus.host (set to localhost if not specified) field in storm.yaml file. Marathon decides where to run Nimbus (for example Node A) and right after the launch of Nimbus over Marathon, the nimbus.host static entry becomes stale (it was pointing to node B and Marathon launched it to A). All the Supervisors do reach Nimbus through Zookeeper (i.e topologies are launched initially) however the code and storm.yaml files are copied from Nimbus to the Supervisors (following Storm workflow) before launching. So the Supervisors get the invalid/stale nimbus.host value and loose the connection since there is no Nimbus running on that machine. The Executer tar (tgz) file does have the latest nimbus.host entry however that storm.yaml is overwritten by the configuration provided by the Nimbus as the initial initialization step.

 Possible Solution: I want to make this field nimbus.host dynamic for Nimbus i.e it should be initialized by the $HOSTNAME of the machine where the Marathon launched it.

It would be great if you could share your opinion and a possible workaround. After this exercise I am planning to write down my findings/tutorial.

Thanks a lot
Obaid


From: Tomas Barton [mailto:barton.tomas@gmail.com<ma...@gmail.com>]
Sent: Tuesday, December 09, 2014 2:27 PM

To: Salikeen, Obaid
Cc: user@mesos.apache.org<ma...@mesos.apache.org>
Subject: Re: How to launch Storm topology on Apache Marathon

Nimbus IP address should be stored in ZooKeeper as soon as Nimbus is launched by Marathon. Marathon could be used for launching Nimbus (log and ui services). However launching storm topologies should be negotiated by Storm-Mesos(Nimbus) framework (not Marathon).

On 9 December 2014 at 22:04, Obaid Salikeen <Ob...@ask.com>> wrote:
Thanks, I have previously deployed a few topologies on Storm cluster and Apache Mesos cluster (using Storm-Mesos project), however I want to know explicitly that if I launched Nimbus through Apache Marathon then how do I launch my topology Jar file on Nimbus (since there is no local machine installation of Nimbus, it was directly launched through Marathon and Marathon decides which machine it should run Nimbus on)?  I have currently Mesos cluster with 10 nodes, and Marathon on top. Previously I deployed my Storm topology on this cluster using Storm-Mesos framework however now I want to use Marathon to launch nimbus and my tasks .

Thanks
Obaid



From: Tomas Barton [mailto:barton.tomas@gmail.com<ma...@gmail.com>]
Sent: Tuesday, December 09, 2014 11:17 AM
To: Salikeen, Obaid
Cc: user@mesos.apache.org<ma...@mesos.apache.org>

Subject: Re: How to launch Storm topology on Apache Marathon

Marathon is a meta-framework, it makes sense to run Storm on Marathon when you need to have Storm in a HA mode.

Storm comes up with a command line client:

http://storm.apache.org/documentation/Command-line-client.html

For submitting topology you can use `storm jar ...` command.

There's a configuration file storm.yaml where you can setup various settings, anyway the steps should be:

 1) setup ZooKeeper quorum (for testing 1 instance should be enough
 2) distribute storm binary on a cluster
 3) update storm.yaml accordingly
 4) start nimbus (resp. storm-mesos framework - could be done via Marathon, for testing purposes starting from console is also fine)
 5) submit topology jar

Nimbus address should be fetched from ZooKeeper, or you could hardcode it into storm.yaml.


On 9 December 2014 at 19:08, Obaid Salikeen <Ob...@ask.com>> wrote:
Thanks a lot Tomas,

I was actually trying out Apache Marathon. I am trying to run storm-mesos framework over Marathon.

So far I managed to run Nimbus and UI by running following two commands through Marathon UI, however

-          UI dosent know where to find Nimbus.

-          Secondly I don’t know how to deploy my Storm topology jar on running instance of Nimbus on Apache Marathon:

Run Numbus on Marathon:
Command: ./storm-mesos-0.9/bin/storm-mesos nimbus
URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz

Run storm UI on Marathon:
Command: ./storm-mesos-0.9/bin/storm ui
URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz

It would be great if you could let me know how to deploy Storm topology over Marathon. Thanks a lot,

Obaid
PS

[cid:image001.png@01D028BD.F1FEC500]


From: Tomas Barton [mailto:barton.tomas@gmail.com<ma...@gmail.com>]
Sent: Tuesday, December 09, 2014 2:15 AM
To: user
Subject: Re: How to launch Storm topology on Apache Marathon

Hi Obaid,

you'll need one instance of Nimbus (storm coordinator) which could be running as Mesos framework, have a look here:

https://github.com/deric/storm-mesos

Nimbus could be started via marathon, just use something like:

/usr/local/bin/storm-mesos nimbus

Then on Mesos slaves will be launched tasks requested by Nimbus, you don't have to start Supervisors on each slave. You could use either some binary
package for distributing Storm jars or it could be copied before launching tasks via Mesos.

If you are using Storm DRPC you would need to start DRPC daemon on each node. Also for accessing logs from Storm UI there is a log service that
should be running on each node if you would like to use this feature.

Regards,
Tomas


On 9 December 2014 at 03:44, Obaid Salikeen <Ob...@ask.com>> wrote:
Hi,
Currently, I couldn’t find any tutorial or steps regarding how to launch storm-mesos (Storm topology) framework on Apache Marathon. It would be great if you guys could give me any reference or hints over how to launch Storm topology over Marathon.

-          Do I need to first install Storm on every single machine on my Mesos cluster?

-          What is the recommended way to launch Storm topology over Marathon?


Thanks a lot,
Obaid






Re: How to launch Storm topology on Apache Marathon

Posted by Tomas Barton <ba...@gmail.com>.
Nimbus IP address should be stored in ZooKeeper as soon as Nimbus is
launched by Marathon. Marathon could be used for launching Nimbus (log and
ui services). However launching storm topologies should be negotiated by
Storm-Mesos(Nimbus) framework (not Marathon).

On 9 December 2014 at 22:04, Obaid Salikeen <Ob...@ask.com> wrote:

>  Thanks, I have previously deployed a few topologies on Storm cluster and
> Apache Mesos cluster (using Storm-Mesos project), however I want to know
> explicitly that if I launched Nimbus through Apache Marathon then how do I
> launch my topology Jar file on Nimbus (since there is no local machine
> installation of Nimbus, it was directly launched through Marathon and
> Marathon decides which machine it should run Nimbus on)?  I have currently
> Mesos cluster with 10 nodes, and Marathon on top. Previously I deployed my
> Storm topology on this cluster using Storm-Mesos framework however now I
> want to use Marathon to launch nimbus and my tasks .
>
>
>
> Thanks
>
> Obaid
>
>
>
>
>
>
>
> *From:* Tomas Barton [mailto:barton.tomas@gmail.com]
> *Sent:* Tuesday, December 09, 2014 11:17 AM
> *To:* Salikeen, Obaid
> *Cc:* user@mesos.apache.org
>
> *Subject:* Re: How to launch Storm topology on Apache Marathon
>
>
>
> Marathon is a meta-framework, it makes sense to run Storm on Marathon when
> you need to have Storm in a HA mode.
>
>
>
> Storm comes up with a command line client:
>
>
>
> http://storm.apache.org/documentation/Command-line-client.html
>
>
>
> For submitting topology you can use `storm jar ...` command.
>
>
>
> There's a configuration file storm.yaml where you can setup various
> settings, anyway the steps should be:
>
>
>
>  1) setup ZooKeeper quorum (for testing 1 instance should be enough
>
>  2) distribute storm binary on a cluster
>
>  3) update storm.yaml accordingly
>
>  4) start nimbus (resp. storm-mesos framework - could be done via
> Marathon, for testing purposes starting from console is also fine)
>
>  5) submit topology jar
>
>
>
> Nimbus address should be fetched from ZooKeeper, or you could hardcode it
> into storm.yaml.
>
>
>
>
>
> On 9 December 2014 at 19:08, Obaid Salikeen <Ob...@ask.com>
> wrote:
>
>  Thanks a lot Tomas,
>
>
>
> I was actually trying out Apache Marathon. I am trying to run storm-mesos
> framework over Marathon.
>
>
>
> So far I managed to run Nimbus and UI by running following two commands
> through Marathon UI, however
>
> -          UI dosent know where to find Nimbus.
>
> -          Secondly I don’t know how to deploy my Storm topology jar on
> running instance of Nimbus on Apache Marathon:
>
>
>
> *Run Numbus on Marathon:*
>
> Command: ./storm-mesos-0.9/bin/storm-mesos nimbus
>
> URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz
>
>
>
> *Run storm UI on Marathon:*
>
> Command: ./storm-mesos-0.9/bin/storm ui
>
> URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz
>
>
>
> It would be great if you could let me know how to deploy Storm topology
> over Marathon. Thanks a lot,
>
>
>
> Obaid
>
> PS
>
>
>
>
>
>
>
> *From:* Tomas Barton [mailto:barton.tomas@gmail.com]
> *Sent:* Tuesday, December 09, 2014 2:15 AM
> *To:* user
> *Subject:* Re: How to launch Storm topology on Apache Marathon
>
>
>
> Hi Obaid,
>
>
>
> you'll need one instance of Nimbus (storm coordinator) which could be
> running as Mesos framework, have a look here:
>
>
>
> https://github.com/deric/storm-mesos
>
>
>
> Nimbus could be started via marathon, just use something like:
>
>
>
> /usr/local/bin/storm-mesos nimbus
>
>
>
> Then on Mesos slaves will be launched tasks requested by Nimbus, you don't
> have to start Supervisors on each slave. You could use either some binary
>
> package for distributing Storm jars or it could be copied before launching
> tasks via Mesos.
>
>
>
> If you are using Storm DRPC you would need to start DRPC daemon on each
> node. Also for accessing logs from Storm UI there is a log service that
>
> should be running on each node if you would like to use this feature.
>
>
>
> Regards,
>
> Tomas
>
>
>
>
>
> On 9 December 2014 at 03:44, Obaid Salikeen <Ob...@ask.com>
> wrote:
>
>  Hi,
>
> Currently, I couldn’t find any tutorial or steps regarding how to launch
> storm-mesos (Storm topology) framework on Apache Marathon. It would be
> great if you guys could give me any reference or hints over how to launch
> Storm topology over Marathon.
>
> -          Do I need to first install Storm on every single machine on my
> Mesos cluster?
>
> -          What is the recommended way to launch Storm topology over
> Marathon?
>
>
>
> Thanks a lot,
>
> Obaid
>
>
>
>
>
>
>

RE: How to launch Storm topology on Apache Marathon

Posted by Obaid Salikeen <Ob...@ask.com>.
Thanks, I have previously deployed a few topologies on Storm cluster and Apache Mesos cluster (using Storm-Mesos project), however I want to know explicitly that if I launched Nimbus through Apache Marathon then how do I launch my topology Jar file on Nimbus (since there is no local machine installation of Nimbus, it was directly launched through Marathon and Marathon decides which machine it should run Nimbus on)?  I have currently Mesos cluster with 10 nodes, and Marathon on top. Previously I deployed my Storm topology on this cluster using Storm-Mesos framework however now I want to use Marathon to launch nimbus and my tasks .

Thanks
Obaid



From: Tomas Barton [mailto:barton.tomas@gmail.com]
Sent: Tuesday, December 09, 2014 11:17 AM
To: Salikeen, Obaid
Cc: user@mesos.apache.org
Subject: Re: How to launch Storm topology on Apache Marathon

Marathon is a meta-framework, it makes sense to run Storm on Marathon when you need to have Storm in a HA mode.

Storm comes up with a command line client:

http://storm.apache.org/documentation/Command-line-client.html

For submitting topology you can use `storm jar ...` command.

There's a configuration file storm.yaml where you can setup various settings, anyway the steps should be:

 1) setup ZooKeeper quorum (for testing 1 instance should be enough
 2) distribute storm binary on a cluster
 3) update storm.yaml accordingly
 4) start nimbus (resp. storm-mesos framework - could be done via Marathon, for testing purposes starting from console is also fine)
 5) submit topology jar

Nimbus address should be fetched from ZooKeeper, or you could hardcode it into storm.yaml.


On 9 December 2014 at 19:08, Obaid Salikeen <Ob...@ask.com>> wrote:
Thanks a lot Tomas,

I was actually trying out Apache Marathon. I am trying to run storm-mesos framework over Marathon.

So far I managed to run Nimbus and UI by running following two commands through Marathon UI, however

-          UI dosent know where to find Nimbus.

-          Secondly I don’t know how to deploy my Storm topology jar on running instance of Nimbus on Apache Marathon:

Run Numbus on Marathon:
Command: ./storm-mesos-0.9/bin/storm-mesos nimbus
URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz

Run storm UI on Marathon:
Command: ./storm-mesos-0.9/bin/storm ui
URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz

It would be great if you could let me know how to deploy Storm topology over Marathon. Thanks a lot,

Obaid
PS

[cid:image001.png@01D013AF.E6D97580]


From: Tomas Barton [mailto:barton.tomas@gmail.com<ma...@gmail.com>]
Sent: Tuesday, December 09, 2014 2:15 AM
To: user
Subject: Re: How to launch Storm topology on Apache Marathon

Hi Obaid,

you'll need one instance of Nimbus (storm coordinator) which could be running as Mesos framework, have a look here:

https://github.com/deric/storm-mesos

Nimbus could be started via marathon, just use something like:

/usr/local/bin/storm-mesos nimbus

Then on Mesos slaves will be launched tasks requested by Nimbus, you don't have to start Supervisors on each slave. You could use either some binary
package for distributing Storm jars or it could be copied before launching tasks via Mesos.

If you are using Storm DRPC you would need to start DRPC daemon on each node. Also for accessing logs from Storm UI there is a log service that
should be running on each node if you would like to use this feature.

Regards,
Tomas


On 9 December 2014 at 03:44, Obaid Salikeen <Ob...@ask.com>> wrote:
Hi,
Currently, I couldn’t find any tutorial or steps regarding how to launch storm-mesos (Storm topology) framework on Apache Marathon. It would be great if you guys could give me any reference or hints over how to launch Storm topology over Marathon.

-          Do I need to first install Storm on every single machine on my Mesos cluster?

-          What is the recommended way to launch Storm topology over Marathon?


Thanks a lot,
Obaid




Re: How to launch Storm topology on Apache Marathon

Posted by Tomas Barton <ba...@gmail.com>.
Marathon is a meta-framework, it makes sense to run Storm on Marathon when
you need to have Storm in a HA mode.

Storm comes up with a command line client:

http://storm.apache.org/documentation/Command-line-client.html

For submitting topology you can use `storm jar ...` command.

There's a configuration file storm.yaml where you can setup various
settings, anyway the steps should be:

 1) setup ZooKeeper quorum (for testing 1 instance should be enough
 2) distribute storm binary on a cluster
 3) update storm.yaml accordingly
 4) start nimbus (resp. storm-mesos framework - could be done via Marathon,
for testing purposes starting from console is also fine)
 5) submit topology jar

Nimbus address should be fetched from ZooKeeper, or you could hardcode it
into storm.yaml.


On 9 December 2014 at 19:08, Obaid Salikeen <Ob...@ask.com> wrote:

>  Thanks a lot Tomas,
>
>
>
> I was actually trying out Apache Marathon. I am trying to run storm-mesos
> framework over Marathon.
>
>
>
> So far I managed to run Nimbus and UI by running following two commands
> through Marathon UI, however
>
> -          UI dosent know where to find Nimbus.
>
> -          Secondly I don’t know how to deploy my Storm topology jar on
> running instance of Nimbus on Apache Marathon:
>
>
>
> *Run Numbus on Marathon:*
>
> Command: ./storm-mesos-0.9/bin/storm-mesos nimbus
>
> URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz
>
>
>
> *Run storm UI on Marathon:*
>
> Command: ./storm-mesos-0.9/bin/storm ui
>
> URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz
>
>
>
> It would be great if you could let me know how to deploy Storm topology
> over Marathon. Thanks a lot,
>
>
>
> Obaid
>
> PS
>
>
>
>
>
>
>
> *From:* Tomas Barton [mailto:barton.tomas@gmail.com]
> *Sent:* Tuesday, December 09, 2014 2:15 AM
> *To:* user
> *Subject:* Re: How to launch Storm topology on Apache Marathon
>
>
>
> Hi Obaid,
>
>
>
> you'll need one instance of Nimbus (storm coordinator) which could be
> running as Mesos framework, have a look here:
>
>
>
> https://github.com/deric/storm-mesos
>
>
>
> Nimbus could be started via marathon, just use something like:
>
>
>
> /usr/local/bin/storm-mesos nimbus
>
>
>
> Then on Mesos slaves will be launched tasks requested by Nimbus, you don't
> have to start Supervisors on each slave. You could use either some binary
>
> package for distributing Storm jars or it could be copied before launching
> tasks via Mesos.
>
>
>
> If you are using Storm DRPC you would need to start DRPC daemon on each
> node. Also for accessing logs from Storm UI there is a log service that
>
> should be running on each node if you would like to use this feature.
>
>
>
> Regards,
>
> Tomas
>
>
>
>
>
> On 9 December 2014 at 03:44, Obaid Salikeen <Ob...@ask.com>
> wrote:
>
>  Hi,
>
> Currently, I couldn’t find any tutorial or steps regarding how to launch
> storm-mesos (Storm topology) framework on Apache Marathon. It would be
> great if you guys could give me any reference or hints over how to launch
> Storm topology over Marathon.
>
> -          Do I need to first install Storm on every single machine on my
> Mesos cluster?
>
> -          What is the recommended way to launch Storm topology over
> Marathon?
>
>
>
> Thanks a lot,
>
> Obaid
>
>
>
>
>

RE: How to launch Storm topology on Apache Marathon

Posted by Obaid Salikeen <Ob...@ask.com>.
Thanks a lot Tomas,

I was actually trying out Apache Marathon. I am trying to run storm-mesos framework over Marathon.

So far I managed to run Nimbus and UI by running following two commands through Marathon UI, however

-          UI dosent know where to find Nimbus.

-          Secondly I don’t know how to deploy my Storm topology jar on running instance of Nimbus on Apache Marathon:

Run Numbus on Marathon:
Command: ./storm-mesos-0.9/bin/storm-mesos nimbus
URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz

Run storm UI on Marathon:
Command: ./storm-mesos-0.9/bin/storm ui
URI: http://downloads.mesosphere.io/storm/storm-mesos-0.9.tgz

It would be great if you could let me know how to deploy Storm topology over Marathon. Thanks a lot,

Obaid
PS

[cid:image001.png@01D01398.131BA540]


From: Tomas Barton [mailto:barton.tomas@gmail.com]
Sent: Tuesday, December 09, 2014 2:15 AM
To: user
Subject: Re: How to launch Storm topology on Apache Marathon

Hi Obaid,

you'll need one instance of Nimbus (storm coordinator) which could be running as Mesos framework, have a look here:

https://github.com/deric/storm-mesos

Nimbus could be started via marathon, just use something like:

/usr/local/bin/storm-mesos nimbus

Then on Mesos slaves will be launched tasks requested by Nimbus, you don't have to start Supervisors on each slave. You could use either some binary
package for distributing Storm jars or it could be copied before launching tasks via Mesos.

If you are using Storm DRPC you would need to start DRPC daemon on each node. Also for accessing logs from Storm UI there is a log service that
should be running on each node if you would like to use this feature.

Regards,
Tomas


On 9 December 2014 at 03:44, Obaid Salikeen <Ob...@ask.com>> wrote:
Hi,
Currently, I couldn’t find any tutorial or steps regarding how to launch storm-mesos (Storm topology) framework on Apache Marathon. It would be great if you guys could give me any reference or hints over how to launch Storm topology over Marathon.

-          Do I need to first install Storm on every single machine on my Mesos cluster?

-          What is the recommended way to launch Storm topology over Marathon?


Thanks a lot,
Obaid



Re: How to launch Storm topology on Apache Marathon

Posted by Tomas Barton <ba...@gmail.com>.
Hi Obaid,

you'll need one instance of Nimbus (storm coordinator) which could be
running as Mesos framework, have a look here:

https://github.com/deric/storm-mesos

Nimbus could be started via marathon, just use something like:

/usr/local/bin/storm-mesos nimbus

Then on Mesos slaves will be launched tasks requested by Nimbus, you don't
have to start Supervisors on each slave. You could use either some binary
package for distributing Storm jars or it could be copied before launching
tasks via Mesos.

If you are using Storm DRPC you would need to start DRPC daemon on each
node. Also for accessing logs from Storm UI there is a log service that
should be running on each node if you would like to use this feature.

Regards,
Tomas


On 9 December 2014 at 03:44, Obaid Salikeen <Ob...@ask.com> wrote:

>  Hi,
>
>  Currently, I couldn’t find any tutorial or steps regarding how to launch
> storm-mesos (Storm topology) framework on Apache Marathon. It would be
> great if you guys could give me any reference or hints over how to launch
> Storm topology over Marathon.
>
> -          Do I need to first install Storm on every single machine on my
> Mesos cluster?
>
> -          What is the recommended way to launch Storm topology over
> Marathon?
>
>
>
> Thanks a lot,
>
> Obaid
>
>
>