[infinispan-dev] Distributed execution framework - API proposal(s)
Vladimir Blagojevic
vblagoje at redhat.com
Wed Jan 12 07:17:07 EST 2011
On 11-01-11 2:42 PM, Manik Surtani wrote:
> How about this pseudocode:
>
> On each node:
> mapped = list()
> for entry in cache.entries:
> t = mapper.map(entry.key, entry.value)
> mapped.add(t)
>
> r = null
> for t in mapped:
> r = reducer.reduce(t, r)
>
> return r to calling node
>
> On calling node:
> reduced_results = invoke map reduce task on all nodes, retrieve
> map{address: result}
> for r in reduced_results.entries:
> remote_address = r.key
> remote_reduced_result = r.value
> collator.add(remote_address, remote_reduced_result)
>
> return collator.collate()
>
Interesting Manik! Where did you come up with this model? The examples I
tried to write using this model (WordCount etc) would work yet your
model is definitely different than the original proposed map/reduce!
>
> Hmm. I think both approaches are best, to allow for the most
> flexibility. So perhaps overload execute() with the following:
>
> execute(DistributedCallable c); // Javadoc says DistributedCallable
> must have a no arg ctor
> execute(DistributedCallableFactory cf); // Javadoc says
> DistributedCallable must have a no arg ctor
> execute(Class<? extends DistributedCallable> cc);
> execute(Class<? extends DistributedCallableFactory> cfc);
>
> Also, wrt. names and methods on the API on the Distributed Exec part
> of things, wdyt about aligning it with JDK executors (see separate
> email from me)?
>
Sure no problem!
> And - not trying to confuse you, promise! - here's some scope for
> additional work later on as well: network classloaders to deal with
> non-homogenous deployments with remote tasks like these. ;)
>
> Cheers
> Manik
>
More information about the infinispan-dev
mailing list