3 ms·
> Does anyone have a use case where data is on a single machine and map reduce is still relevant? What matters is the running data structure. For example, you
by alecco 13y ago
> Does anyone have a use case where data is on a single machine and map reduce is still relevant?
What matters is the running data structure. For example, you can have Petabytes of logs but you need a map/table of some kind to do aggregations/transformations. Or a sparse-matrix based model. There are types of problems that can partition the data structure and work in parallel in the RAM of many servers.
Related: it's extremely common to confuse for CPU bottleneck what's actually a problem of TLB-miss, cache-miss, or bandwidth limits (RAM, disk, network). I'd rather invest time in improving the basic DS/Algorithm than porting to Map/Reduce.
- collyw 13y agoOK, maybe I am not understanding you correctly, but what you describe seems to be, if the data is on one machine, connect to a cluster of machines, and run processing in parallel on that. That doesn't imply a NoSQL solution to me. Just parallel processing on different parts of the data. If I am wrong can you point me to a clearer example?
- Roboprog 13y agoIt sounds to me like the poster above restructured the input data to exploit locality of reference better. http://en.wikipedia.org/wiki/Locality_of_reference http://en.wikipedia.org/wiki/Locality_of_reference
- alecco 13y agoIt's one of the issues, yes. But I wanted to be more general on purpose.
- collyw 13y agoSo assuming the data is one one machine (as I asked), why would an index not solve this problem? And why does Map Reduce solve it?
- virtuabhi 13y agoIndexes do not solve the locality problem (see Non-clustered indexes). Even for in-memory databases, it is non-trivial to minimize cache misses in irregular data structures like B-trees. Now why MapReduce "might" be a better fit for a problem where data fits into one disk. Consider a program which is embarrassingly parallel. It just reads a tuple and writes a new tuple back to disk. The parallel IO provided by map/reduce can offer a significant benefit in this simple case as well. Also NoSQL != parallel processing.
- alecco 13y agoMaybe I misunderstood what you were asking. Note both MapReduce and NoSQL are overhyped solutions. They are useful in a handful of cases, but often applied to problems they are not as good.
- aidos 13y agoI'm not sure that the two concepts are resulted at all. Obviously mongo has map reduce baked in - but that's not that relevant. Map/reduce is a reasonable paradigm for crunching information. I have a heavily CPU bound system that I parallelise by running on different machines and aggregating that results. I probably wouldn't call it map reduce - but really it's the same thing. How do you parallelise your long running tasks otherwise?
- alecco 13y agoI can't say without more information on the problem to solve. As I said above, there are cases where MapReduce is a good tool. And even if you improve the DS/Algorithm first, usually that is usable by the MapReduce port and you save a lot of time/costs.