> Well, I deeply think that additionally to the architecture and the
> organisations concerns, Mesos need to provide some Enterprise oriented
> benchmark and "proof" to be able to really prime time on the enterprise
> world and not only on the "Startup style enterprises", but it's not the
> topic of your post and I'll made my own regarding this specific topic.
>
>
Looking forward to that discussion.



> Anyway, thank you very much for your answers.
>
> Regarding your choose of Golang instead of Scala because of some pain
> points, could you send me some exemples (except for compile time)? Even in
> private if you do not want to steal the thread, as I'm really balancing
> between those two.
>
>

I'll send you a separate private message with the reply, I don't mind
talking about it, but wouldn't want to distract this mailing list with the
topic.

Thanks

Diego



> 2015-03-03 14:26 GMT+01:00 Diego Medina <[email protected]>:
>
>> 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
>>
>
>


-- 
Diego Medina
Lift/Scala consultant
[email protected]
http://fmpwizard.telegr.am

Reply via email to