Parallel-MapReduce
==================

  ## THIS IS ALL STILL EXPERIMENTAL!!
  ## DO NOT USE FOR PRODUCTION!!

What is it?
-----------

This is a pure-Perl implementation of MapReduce, the distributed
algorithm introduced by Google.

See the RESOURCES file in this distribution and also

   http://kill.devc.at/node/197

   http://kill.devc.at/node/195

What are the _external_ dependencies?
-------------------------------------

Apart from the normal CPAN dependencies, following software
must be available for full operation:

   apt-get install openssh-client
   apt-get install memcached

How to get started?
-------------------

  1) Write your algorithm in MR form and test it with

        Parallel::MapReduce::Testing

     That is a sequential, local implementation.

  2) If you want to test it in a distributed setting, switch
     to

        Parallel::MapReduce::Sequential

     and use the worker class

        Parallel::MapReduce::Worker::SSH

     You (your process) need/s to have a working ssh account on
     every worker box you want to use. The public key of the SSH
     servers should be known and accepted locally and you should
     be able to log into the remote workers without giving a
     password. Otherwise the worker implementation will just block
     there waiting for your input.

  3) Make sure your memcached daemons are running on each of
     the servers:

        /etc/init.d/memcached start

  4) Cross your fingers and run your app.

How to install?
---------------

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install


>>> NOTE!! <<<

At this stage the tests are only testing local functionality, not any
which involves the network setup. That cannot be detected or guessed.
If you have a memcached on your local machine running, then

   export MR_ONLINE=1
   make test

will run a test against that. Do not be scared by the large amount of
test output. That will eventually go away.


Copyright (C) 2008 by Robert Barta

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.0 or,
at your option, any later version of Perl 5 you may have available.