Thursday, 15 September 2011

Riak returns an error "Reading large object of size ..." when a mapreduce -



Riak returns an error "Reading large object of size ..." when a mapreduce -

when seek run query mapreduce, riak returns error [preflist_exhausted]. in console.log warning:

riak_kv_vnode:do_get_object:1300 reading big object of size 8360185.

i stored in riak big objects (up 20 mb). there setting perform mapreduce on objects of size?

my mapreduce:

{ "inputs":"myclients", "query": [{ "map": { "language":"javascript", "source":"function(riakobject){ homecoming [1]; }" } },{ "reduce":{ "language":"javascript", "source":"function(values,arg){ homecoming [values.reduce(function(acc,item){ homecoming acc + item;},0)] ;}" } }] }

riak doesn't perform objects larger couple of megabytes. map phase read each object backend , pass map function, non-trivial number of keys @ 20mb each, unlikely ever finish before timing out. possible fold employed read info map phase may cause vnode become overloaded, create appear offline, leading preflist_exhausted message.

the reading big object message informational message allow know object larger configured threshold has been read. alert objects of size potentially performance-impacting.

if must store values of size, should consider breaking them chunks , storing each chunk in separate key. perchance have bucket contains key represent overall value , contains list of block key/values need retrieved reassemble object.

if values file oriented, consider using riak cs, handles breaking big objects 1mb chunks storage.

riak

No comments:

Post a Comment