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.