1

Riak で以下の map reduce ジョブを実行しようとしているホストが 50 あります。worker_limit以下のエラーが表示され、一部のホストが到達したことについて不平を言っています。

このエラーを回避するためにシステムを調整できるかどうかについての洞察をお探しですか? に関するドキュメントがあまり見つかりませんでしたworker_limit

{"phase":0,"error":"[worker_limit_reached]","input":"{<<\"provisionentry\">>,<<\"R89Okhz49SDje0y0qvcnkK7xLH0\">>}","type":" result","stack":"[]"} クエリ MapReduce(path='/mapred', reply_headers={'content-length': '144', 'access-control-allow-headers': 'Content-Type ', 'server': 'MochiWeb/1.1 WebMachine/1.10.8 (その頭は偽物ですね)', 'connection': 'close', 'date': 'Thu, 27 Aug 2015 00:32:22 GMT', 'access-control-allow-origin': '*', 'access-control-allow-methods': 'POST, GET, OPTIONS', 'content-type': 'application/json'}, verb='POST' , headers={'Content-Type': 'application/json'}, data=MapReduceJob(inputs=MapReduceInputs(bucket='provisionentry', key=u'34245e92-ccb5-42e2-a1d9-74ab1c6af8bf', index='testid_bin'), query=[MapReduceQuery(map=MapReduceQuerySpec) (language='erlang', module='datatools', function='map_object_key_value'))]))

4

1 に答える 1

1

Riak の Map Reduce はうまくスケーリングできないため、ユーザー向けサービスの一部としてうまく機能しません。

定期的な管理業務や、ジョブ数を制限できる場合の事前計算に適しています。

ジョブのマップ フェーズはカバレッジ クエリであるため、各マップで少なくとも 1/n_val (切り上げ) の vnode を使用し、それぞれで 1 つのワーカーを使用する必要があります。選択したカバレッジ セットが重複しないことを保証できないため、ワーカー制限設定よりも多くのマップ削減ジョブを同時に実行できると期待しないでください。

デフォルトのワーカー制限は 50 ( https://github.com/basho/riak_pipe/blob/develop/src/riak_pipe_vnode.erl#L86{worker_limit, 50} ) ですが、app.config または advanced の riak_pipe セクションで設定することで調整できます。構成。

各ワーカーはプロセスであるため、erlang VM のプロセス制限も増やす必要がある場合があることに注意してください。

于 2015-09-01T04:01:19.693 に答える