Hacker News new | ask | show | jobs
by jnaour 3781 days ago
Have anybody works with Mesos?

How does it compare to Yarn, particularly in a production perspective? Is it stable, easy to integrate?

We are currently thinking to switch from a Kafka-Spark(on Yarn)-Mongo stack to a SMACK stack (Spark, Mesos, Akka, Cassandra, Kafka)[1]. It seems that there is a good integration between theses projects. Also you can run Docker on Mesos using Marathon[2] so not only our data-driven stack could be on Mesos but the full stack.

[1] https://mesosphere.com/blog/2015/07/24/learn-everything-you-...

[2] https://github.com/mesosphere/marathon

3 comments

Mesos is a superset of Yarn and also a bit lower level. In fact, there is a project that allows you to run Yarn on top of mesos thereby getting the best of both worlds. Kind of by design, you couldn't really run mesos on top of Yarn.

http://www.apache-myriad.org

I use Mesos in production and it is great stuff. It also helps knowing 100% of the backend of Siri, 100% of Twitter, much of eBay, PayPal, Airbnb, Uber, etc all run entirely on mesos. It is simply battle tested.

We have been using Mesos+Marathon+Docker in production for more than year. Mesos has been very reliable, there are a lot of moving parts so it does take some effort to get everything going.

Caveat: We only use it to run state-less applications. Applications like Kafka that require data persistence are run outside Mesos as data persistance is not yet handled reliably with Marathon.

[1] http://datajet.io/One-year-with-Apache-Mesos-The-Good-The-Ba...

It seems like Marathon is a really weak link in the chain between Mesos and Docker.

Have you considered using some other tool there? I know there is a Kubernetes target for it. Of course, any non-GCE port of Kubernetes is in likely need of sponsorship/love. And of course, Kubernetes currently introduces some additional network overhead.

Still, it might be helpful there for handling problems like getting persistent storage mixed in.

I collaborate with the team at Google who work on Kubernetes, and I know that other platforms are given a lot of love - we test end-to-end on AWS, for example.

If you're interested in getting involved in Kubernetes-on-something-else, we'd love to hear from you. Drop by Slack at slack.k8s.io!

So is the AWS binding not full of landmines now? With misleading defaults, a bad logging configuration that will assuredly fall over if it hits serious load, and a way to diagnose failures on the minions without resorting to AWS sorcery?

Can I run more than 1 cluster per account AZ without a silent but very nasty failure condition where both clusters become wedged?

I have stuff in production on it and I need to take it down because the entire cluster is unreliable. Mostly because there are frustrating bugs in disk space management that hurt clusters.

I really like Kubernetes and you can see I've carried water for it here. I've been trying to tie it to mbrace because thatz be a nice cloud portability. But I'm much more impressed with the GCE experience than the AWS experience.

I honestly don't know, but I do know that the GitHub issue tracker is the system of record for all these things, and if you report them there, they will be fixed very quickly. These sound like things we'd want to know about and I'm not close enough to the AWS experience to know if it's as bad as you say!
We use Mesos/Marathon/Docker extensively at my work as well, and Marathon has definitely been the flakiest of those three.
Note that there is actually a very nice kafka mesos framework for this sort of thing:

https://github.com/mesos/kafka

Mesos supports persistent volumes and what they call "dynamic reservations", which this framework supports. If the application is killed, and the host is still up, it will be restarted on the same host and re-attached to the volume which has the data, otherwise, kafka will just replicate to the new broker (as it does).

The initial code for adding the dynamic reservation bits was added last November as it is a relatively new feature in Mesos:

https://github.com/mesos/kafka/commit/455b20f94b9166b026ea

I tried to use mesos to setup a test spark cluster. I figured I would install mesos, then use it to deploy spark, cassandra, etc. In practice using mesos turned out to be a major pain. Several blogs online made it seem trivial; however, I kept finding out that much of what I thought was mesos was actually a commercial product from mesosphere.

We ended up abandoning mesos just to get our prototype going.