Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Framework specification #55

Open
kszucs opened this issue Feb 28, 2017 · 5 comments
Open

Framework specification #55

kszucs opened this issue Feb 28, 2017 · 5 comments

Comments

@kszucs
Copy link
Member

kszucs commented Feb 28, 2017

We should define a couple of frameworks which would implemented via mentor. A good starting point can be already implemented ones from here and here.

Write them in pure mentos (the core concepts are enough), then refactor to generalize the common parts.

There are a couple of domains we should cover:

  1. Batch processing: implement a framework for dask distributed
  2. Stream processing: implement a framework for rq
  3. Serving: framework for rabbitmq
  4. General task scheduling: like chronos, implement daskos

I think each of these have different needs.

@kszucs kszucs mentioned this issue Feb 28, 2017
11 tasks
@kszucs
Copy link
Member Author

kszucs commented Feb 28, 2017

RQ

  • RQ workers are identical, so we'll have homogeneous, long running tasks with same resource, environment needs.
  • A task could be a shell command rq worker or just a pickled python function (I'm not sure which one is better - preference?)
  • Due to no task-unique dependencies we have one and only mesos executor.
  • To take advantage of bin-packing and shorten deployment time an executor can run multiple tasks simultaneously.
  • We prioritize running a task in an existing executor over creating a new one (unless other constraints prohibit it).
  • User has to be able to define framework role, and constraints like marathon/aurora enables it.

@Arttii
Copy link

Arttii commented Mar 1, 2017

I wanted to create a framework for Jupyter Notebooks as well,

Juyter

  • Jupyter notebook to spin up a dynamic set of Jupyter Notebooks
  • Each task is a single docker instance of Jupyter Notebook
  • One non homogeneous task, which servers as an auth proxy to each Notebook
  • Would most probably use docker overlay networking of mesos networking

For dask there was an example already create by Mrocklin I think no? We can reuse that I guess.

For RQ, do you mean we also spin up a redis instance and things or we completely remove redis from the picture and do what the current satyr implementation did for running arbitrary python functions somewhere?

There is also this: https://github.com/tobilg/mesos-framework/blob/master/examples/

@kszucs
Copy link
Member Author

kszucs commented Mar 10, 2017

For RQ without redis. Mrockling had an example for running distributed on top of marathon which I've ported to daskathon.
Can You implement these two as examples in mentos?
Then we'll see what needs to be done in the pending PR.

@kszucs kszucs closed this as completed Mar 10, 2017
@kszucs kszucs reopened this Mar 10, 2017
@Arttii
Copy link

Arttii commented Mar 10, 2017

I think yes, I was a bit busy lately, but I will try to work on it a bit in the next few days

@kszucs
Copy link
Member Author

kszucs commented Apr 22, 2017

I have another use case. Right now we're moving to https://clickhouse.yandex/
There are no mesos frameworks for it yet. How about implementing one (as a database example)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants