我有一个可用树描述的等式。因此,叶子是父顶点是数学运算符的值,当计算完成时,另一个值出现在父顶点的位置,它变成具有父顶点的叶子(作为数学运算符)。树不平衡,根据您追求的分支,可能有不均匀的深度。
我需要知道的是如何使用Apache点燃(我选择它因为它的事件传播机制适合我的需要),以便通过发送不同深度的所有叶子(以及它们的父顶点)来进行并行化以进行计算等等,直到计算出公式。
我是否使用了错误的技术?
这个问题不适合地图缩减技术吗?
什么是最好的技术,它还内置了事件传播技术?
我只差一分钱......
编辑:添加了赏金。基本上我的要求是计算分布式计算解决方案中的变量子问题,而不是类似地图缩减的子问题。有解决方案吗?任何想法都表示赞赏。
答案 0 :(得分:3)
Ignite可以实现。您需要实施ComputeTaskAdapter
的{{1}}和map()
方法。第一种方法将您的任务映射到节点,然后第二种方法收集计算结果。请参阅example。
之后,如果先前的reduce减少了返回的结果集合,您可以再次运行它。
要减少数据传输量,您可以使用缓存,并在其中存储中间数据。如果将任务映射到具有所需数据的节点,则所有条目将在本地可用于该任务,并且不需要从远程节点查询它们。要以这种方式映射任务,您可以使用
reduce()
此处ClusterNode dataNode = ignite.affinity("cacheName").mapKeyToNode("key");
是此密钥的主要节点,如果将在其上启动任务,则整个条目将在本地可用。