Hi Alex, On Tue, Mar 3, 2015 at 7:37 AM, Alex Rukletsov <[email protected]> wrote:
> Next good big thing would be to handle task state updates. Instead of > dying on TASK_LOST, you may want to retry this task several times. > Yes, this is definitely something I need to address, for now I use it to help me find bugs in the code, if the app stops, I know I did something wrong :) I also need to find out why some tasks stay in status "Staging" on the Mesos UI, but I'll start a separate thread for it. Thanks Diego > > On Tue, Mar 3, 2015 at 10:38 AM, Billy Bones <[email protected]> > wrote: > >> Oh and you've got a glitch on one of your executor name in your first >> code block. >> >> You've got: >> >> *extractorExe := &mesos.ExecutorInfo{ >> ExecutorId: util.NewExecutorID("owl-cralwer-extractor"), >> Name: proto.String("OwlCralwer Fetcher"), >> Source: proto.String("owl-cralwer"), >> Command: &mesos.CommandInfo{ >> Value: proto.String(extractorExecutorCommand), >> Uris: executorUris, >> }, >> }* >> >> It should rather be: >> >> *extractorExe := &mesos.ExecutorInfo{ >> ExecutorId: util.NewExecutorID("owl-cralwer-extractor"), >> Name: proto.String("OwlCralwer Extractor"), >> Source: proto.String("owl-cralwer"), >> Command: &mesos.CommandInfo{ >> Value: proto.String(extractorExecutorCommand), >> Uris: executorUris, >> }, >> }* >> >> >> >> 2015-03-03 10:28 GMT+01:00 Billy Bones <[email protected]>: >> >>> Hi Diego, did you already plan to make a benchmark of your result on the >>> Mesos platform VS Bare-metal servers ? >>> It would be really interesting for Enterprise evangelism, they love >>> benchmark and metrics. >>> >>> I'm impress by your project and how it goes fast. I'm myself a fan of >>> Golang, but why did you choose it? >>> >>> 2015-03-03 3:03 GMT+01:00 Diego Medina <[email protected]>: >>> >>>> Hi everyone, based on all the great feedback I got here I updated the >>>> code and now I have one scheduler and two executors, one for fetching html >>>> and a second one that extracts links and text from the html. >>>> I also run the actual work on their own goroutines (like threads for >>>> tose not familiar with Go) and it's working great. >>>> >>>> I wrote about the changes here >>>> http://blog.fmpwizard.com/blog/owlcrawler-multiple-executors-using-meso >>>> and you can find the updated code here >>>> https://github.com/fmpwizard/owlcrawler >>>> >>>> Again, thanks everyone for your input. >>>> >>>> Diego >>>> >>>> >>>> >>>> >>>> On Fri, Feb 27, 2015 at 1:52 PM, Diego Medina <[email protected]> >>>> wrote: >>>> >>>>> Thanks for looking at the code and the feedback Alex. I'll be working >>>>> on those changes later tonight! >>>>> >>>>> Diego >>>>> >>>>> On Fri, Feb 27, 2015 at 12:15 PM, Alex Rukletsov <[email protected]> >>>>> wrote: >>>>> >>>>>> Diego, >>>>>> >>>>>> I've checked your code, nice effort! Great to see people hacking with >>>>>> mesos and go bindings! >>>>>> >>>>>> One thing though. You do the actual job in the launchTask() of your >>>>>> executor. This prevents you from multiple tasks in parallel on one >>>>>> executor. That means you can't have more simultaneous tasks than >>>>>> executors >>>>>> in your cluster. You may want to spawn a thread for every incoming task >>>>>> and >>>>>> do the job there, while launchTasks() will do solely task initialization >>>>>> (basically, starting a thread). Check the project John referenced to: >>>>>> https://github.com/mesosphere/RENDLER. >>>>>> >>>>>> Best, >>>>>> Alex >>>>>> >>>>>> On Fri, Feb 27, 2015 at 11:03 AM, Diego Medina <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Hi Billy, >>>>>>> >>>>>>> comments inline: >>>>>>> >>>>>>> On Fri, Feb 27, 2015 at 4:07 AM, Billy Bones <[email protected] >>>>>>> > wrote: >>>>>>> >>>>>>>> Hi diego, as a real fan of the golang, I'm cudoes and clap for your >>>>>>>> work on this distributed crawler and hope you'll finally release it ;-) >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> Thanks! my 3 month old baby is making sure I don't sleep much and >>>>>>> have plenty of time to work on this project :) >>>>>>> >>>>>>> >>>>>>>> About your question, the common architecture is to have one >>>>>>>> scheduler and multiple executors rather than one big executor. >>>>>>>> The basics of mesos is to take any resources, put them together on >>>>>>>> a pool to then swarm tasks on this pool, so, basically the >>>>>>>> architecture of >>>>>>>> your application should share this philosophy and then explode / >>>>>>>> decouple >>>>>>>> your application as much as possible but be carreful to not loop lock >>>>>>>> yourself on threads and tasks if they're dependents. >>>>>>>> >>>>>>>> I don't know if I'm explaining myself correctly so do not hesitate >>>>>>>> if you need more clarification. >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> Your answer was very clear. Today I started to split the executor >>>>>>> into two, one that simply fetches the html and then a second one that >>>>>>> extracts text without tags from it, this second executor gets the data >>>>>>> from >>>>>>> a database, so far it seems like a natural way to split the tasks. I was >>>>>>> going with the idea of also having two schedulers, but I think I just >>>>>>> figured out how to use just one. >>>>>>> >>>>>>> Thanks! >>>>>>> >>>>>>> Diego >>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> 2015-02-26 21:50 GMT+01:00 Diego Medina <[email protected]>: >>>>>>>> >>>>>>>>> @John: thanks for the link, i see that RENDLER uses the ExecutorId >>>>>>>>> from ExecutorInfo to decide what to do, I'll give this a try >>>>>>>>> @Craig: you are right, after I sent the email I continued to read >>>>>>>>> more of the mesos docs and saw that I used the wrong term, where I >>>>>>>>> meant >>>>>>>>> scheduler instead of framework, thanks. >>>>>>>>> >>>>>>>>> Thanks and looking forward to any other feedback you may all have. >>>>>>>>> >>>>>>>>> Diego >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Feb 26, 2015 at 5:24 AM, craig w <[email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Diego, >>>>>>>>>> >>>>>>>>>> I'm also interested in hearing feedback to your qusestion. One >>>>>>>>>> minor thing I'd point out is that a Framework is made up of a >>>>>>>>>> Scheduler and >>>>>>>>>> Executor(s), so I think it's more correct to say you've created a >>>>>>>>>> Scheduler >>>>>>>>>> (instead of "one big framework") and an Executor. >>>>>>>>>> >>>>>>>>>> Anyhow, for what it's worth, the Aurora framework has multiple >>>>>>>>>> executors ( >>>>>>>>>> https://github.com/apache/incubator-aurora/blob/master/examples/vagrant/aurorabuild.sh#L61). >>>>>>>>>> You might pop into the #aurora IRC chat room and ask, usually a few >>>>>>>>>> Aurora >>>>>>>>>> contributors are in there answering questions when they can. >>>>>>>>>> >>>>>>>>>> On Wed, Feb 25, 2015 at 9:02 PM, John Pampuch <[email protected] >>>>>>>>>> > wrote: >>>>>>>>>> >>>>>>>>>>> Diego- >>>>>>>>>>> >>>>>>>>>>> You might want to look at this project for some insights: >>>>>>>>>>> >>>>>>>>>>> https://github.com/mesosphere/RENDLER >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -John >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Wed, Feb 25, 2015 at 5:27 PM, Diego Medina < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Short: Is it better to have one big framework and executor with >>>>>>>>>>>> if statements to select what to do or several smaller framework <-> >>>>>>>>>>>> executors when writing a Mesos app? >>>>>>>>>>>> >>>>>>>>>>>> Longer question: >>>>>>>>>>>> >>>>>>>>>>>> Last week I started a side project based on mesos (using Go), >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> http://blog.fmpwizard.com/blog/web-crawler-using-mesos-and-golang >>>>>>>>>>>> https://github.com/fmpwizard/owlcrawler >>>>>>>>>>>> >>>>>>>>>>>> It's a web crawler written on top of Mesos, The very first >>>>>>>>>>>> version of it had a framework that sent a task to an executor and >>>>>>>>>>>> that >>>>>>>>>>>> single executor would fetch the page, extract links from the html >>>>>>>>>>>> and then >>>>>>>>>>>> send them to a message queue. >>>>>>>>>>>> >>>>>>>>>>>> Then the framework reads that queue and starts again, run the >>>>>>>>>>>> executor, etc, etc. >>>>>>>>>>>> >>>>>>>>>>>> Now I'm splitting fetching the html and extracting links into >>>>>>>>>>>> two separate tasks, and putting those two tasks in the same >>>>>>>>>>>> executor >>>>>>>>>>>> doesn't feel right, so I'm thinking that I need at least two diff >>>>>>>>>>>> executors >>>>>>>>>>>> and one framework, but then I wonder if people more experienced >>>>>>>>>>>> with mesos >>>>>>>>>>>> would normally write several pairs of framework <-> executors to >>>>>>>>>>>> keep the >>>>>>>>>>>> design cleaner. >>>>>>>>>>>> >>>>>>>>>>>> On this particular case, I can see the project growing into >>>>>>>>>>>> even more tasks that can be decoupled. >>>>>>>>>>>> >>>>>>>>>>>> Any feedback on the design would be great and let me know if I >>>>>>>>>>>> should explain this better. >>>>>>>>>>>> >>>>>>>>>>>> Thanks >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Diego >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Diego Medina >>>>>>>>>>>> Lift/Scala consultant >>>>>>>>>>>> [email protected] >>>>>>>>>>>> http://fmpwizard.telegr.am >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> https://github.com/mindscratch >>>>>>>>>> https://www.google.com/+CraigWickesser >>>>>>>>>> https://twitter.com/mind_scratch >>>>>>>>>> https://twitter.com/craig_links >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Diego Medina >>>>>>>>> Lift/Scala consultant >>>>>>>>> [email protected] >>>>>>>>> http://fmpwizard.telegr.am >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Diego Medina >>>>>>> Lift/Scala consultant >>>>>>> [email protected] >>>>>>> http://fmpwizard.telegr.am >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Diego Medina >>>>> Lift/Scala consultant >>>>> [email protected] >>>>> http://fmpwizard.telegr.am >>>>> >>>> >>>> >>>> >>>> -- >>>> Diego Medina >>>> Lift/Scala consultant >>>> [email protected] >>>> http://fmpwizard.telegr.am >>>> >>> >>> >> > -- Diego Medina Lift/Scala consultant [email protected] http://fmpwizard.telegr.am

