我已经分区( IMDB )我想在每个节点上启动一个计算任务,该任务对每个节点IMDB上的所有记录执行一些计算。因此,每个任务都做了一部分工作。这种托管似乎不太可能,因为我不能限制对节点上的数据的访问。请确认或建议解决方案。
发布于 2014-04-12 11:26:01
听起来您是在问如何将计算与缓存数据的节点配置在一起。你可以看看GridGain附带的CacheAffinityExample。具体地说,下面的代码片段:
for (int i = 0; i < KEY_CNT; i++) {
final int key = i;
// This callable will execute on the remote node where
// data with the given key is located.
grid.compute().affinityCall(CACHE_NAME, key, new GridCallable() {
@Override public void call() throws Exception {
String val = cache.get(key);
// Work on cached value.
...
return val;
}
}).get();
}发布于 2014-04-15 09:41:23
此代码将向每个节点发送一个闭包,并对该节点上的所有数据进行计算:
grid.forCache("mycache").compute().broadcast(new GridRunnable() {
@Override public void run() {
for (GridCacheEntry<K, V> e : cache.entrySet()) {
// Do something
...
}
}
}).get();https://stackoverflow.com/questions/23017560
复制相似问题