【问题标题】:Riak - Concurrent Erlang Map/Reduce jobsRiak - 并发 Erlang Map/Reduce 作业
【发布时间】:2013-06-26 03:27:46
【问题描述】:

我正在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 所做的那样) .

谢谢

【问题讨论】:

    标签: concurrency erlang mapreduce virtual-machine riak


    【解决方案1】:

    目前我们发现了这个 riak mapred 陷阱:

    • worker_limit_reached。当你有很多 数据到达映射作业且作业队列已满
    • 读取 r=1。使用 r=1 读取 mapreduce 中的所有数据
    • 没有读取修复。 Mapreduce 读取不会触发read reapair
    • 您可能会收到已删除的数据。在mapred里面检查object的特殊header,表示object已经被删除了

    附言这是关于riak 1.2.1。芭蕉人很快解决了许多问题,所以它可能会在不久的将来改变。

    【讨论】:

    • 谢谢。我更关心的是运行时的性能问题,例如一个集群中 20 个并发的繁重 M/R 作业。我认为只要有空闲的 CPU/内存可用,我就不会遇到麻烦,对吧?
    • 如果你已经编写了erlang代码,你可以使用riak管道github.com/basho/riak_pipe(这是riak的mapreduce引擎)。我们直接使用 riak 管道,这使我们能够运行繁重的 mapreduce 作业而不会出现此类问题。
    【解决方案2】:

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

    【讨论】:

    • 这意味着我可以在一个集群中同时运行 20 个繁重的 M/R 作业,而且只要我的机器上有足够的 CPU/内存可用就不用担心了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多