Apache Ignite map-reduce求解方程的方法

时间:2017-04-13 02:33:39

标签: java apache mapreduce ignite

我有一个可用树描述的等式。因此,叶子是父顶点是数学运算符的值,当计算完成时,另一个值出现在父顶点的位置,它变成具有父顶点的叶子(作为数学运算符)。树不平衡,根据您追求的分支,可能有不均匀的深度。

我需要知道的是如何使用Apache点燃(我选择它因为它的事件传播机制适合我的需要),以便通过发送不同深度的所有叶子(以及它们的父顶点)来进行并行化以进行计算等等,直到计算出公式。

我是否使用了错误的技术?

这个问题不适合地图缩减技术吗?

什么是最好的技术,它还内置了事件传播技术?

我只差一分钱......

编辑:添加了赏金。基本上我的要求是计算分布式计算解决方案中的变量子问题,而不是类似地图缩减的子问题。有解决方案吗?任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:3)

Ignite可以实现。您需要实施ComputeTaskAdapter的{​​{1}}和map()方法。第一种方法将您的任务映射到节点,然后第二种方法收集计算结果。请参阅example

之后,如果先前的reduce减少了返回的结果集合,您可以再次运行它。

要减少数据传输量,您可以使用缓存,并在其中存储中间数据。如果将任务映射到具有所需数据的节点,则所有条目将在本地可用于该任务,并且不需要从远程节点查询它们。要以这种方式映射任务,您可以使用

reduce()

此处ClusterNode dataNode = ignite.affinity("cacheName").mapKeyToNode("key");是此密钥的主要节点,如果将在其上启动任务,则整个条目将在本地可用。