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.
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.
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.
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.
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.
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!
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:
One of the biggest complaints I have for websites that host software projects is a tendency to assume you know what the project is about. A couple of clicks to look at the main page, documentation, and getting started, and there is not a single paragraph that tells me what mesos is for. So my eyes glaze over and I move on.
I agree. This is a sub-page talking about a particular release though, so it's not a landing page or "front page".
Clicking the logo works and gets you to the project's actual front page (http://mesos.apache.org/), which has a decent description:
Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.
That's still pretty abstract of course, but at least it's attempting to answer "what is Mesos?" first thing on the page.
Fair critique, but this is a release notes page and not really the front page. Here is likely the bat article on what mesos really is from a high level:
Idk how many people care, but one of the new features in 0.27 is the addition of ContainerLoggers, and a logger that uses logrotate. Here's a blog post I wrote on how to get you started with getting this working: http://continuousfailure.com/post/mesos27_logging/
> would capture std{out,err} indefinitely, which could cause the slave host to run out of disk space
That sounds to me like something everyone would care about. I have started setting Docker's log-opt to max-size=128m and max-file=3 expressly to side-step that kind of nonsense. It's a great happy medium between "logs go out over the network", which impedes one's ability to use "docker log" for quick-and-dirty viewing, but not blowing out the disks. We've enjoyed great success with logspout, since it captures every container, relieving us of the need to configure them individually.
15 comments
[ 3.3 ms ] story [ 34.4 ms ] threadHow 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
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 ended up abandoning mesos just to get our prototype 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...
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.
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!
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.
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
Clicking the logo works and gets you to the project's actual front page (http://mesos.apache.org/), which has a decent description:
Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.
That's still pretty abstract of course, but at least it's attempting to answer "what is Mesos?" first thing on the page.
http://www.wired.com/2013/03/google-borg-twitter-mesos/
It was this article that helped me convince my coworkers that we should look into Mesos
That sounds to me like something everyone would care about. I have started setting Docker's log-opt to max-size=128m and max-file=3 expressly to side-step that kind of nonsense. It's a great happy medium between "logs go out over the network", which impedes one's ability to use "docker log" for quick-and-dirty viewing, but not blowing out the disks. We've enjoyed great success with logspout, since it captures every container, relieving us of the need to configure them individually.