Riak - 并发Erlang Map / Reduce工作

时间:2012-12-14 00:33:29

标签: concurrency erlang mapreduce virtual-machine riak

我在Riak上运行Erlang Map / Reduce作业。

在过去我使用Javascript M / R作业时,我必须正确调整JS VM设置。当时我发现这个对话非常有用:到http://riak-users.197444.n3.nabble.com/Follow-up-Riak-Map-Reduce-error-preflist-exhausted-td4024330.html

现在,因为我不是Erlang的开发人员,我想知道在Riak上运行并发M / R作业时的主要含义是什么?如果要设置任何VM设置(就像我以前使用JS M / R一样)

由于

2 个答案:

答案 0 :(得分:1)

目前我们发现这个riak mapred gotchas:

  • worker_limit_reached。当你有很多时,就会发生这种情况 数据到达已映射的作业和作业的队列已满
  • 读取r = 1。 mapreduce中的所有数据都以r = 1
  • 读取
  • 没有读修复。 Mapreduce读取不会触发read reapair
  • 您可能已经删除了数据。在mapred内部检查对象的特殊标题,表示该对象已被删除

P.S。这是关于riak 1.2.1。 Basho人很快解决了许多问题,因此可能会在不久的将来改变。

答案 1 :(得分:0)

基本上这里发生的是map / reduce查询的所有阶段都是由ErlangVM执行的,而不是由Erlang + JS执行的。由于作业在ErlangVM中在单独的进程中被隔离,因此操作不受影响。主机方面你有相同的计算能力,所以它也没关系。关于ErlangVM参数,其中许多都经过调整以改进Riak操作系统,你的查询很好。