The answer to this is highly application specific. 3dinfluence already mentioned the possibility of Hadoop, which is great if your application breaks down in to the Map-Reduce execution model.
If you are planning to distribute your workload to multiple nodes but still want to have just one instance of your application in a thread-like execution model, you need to look in to some form of MPI.
MPI is a standard with a common interface, but there are multiple implementations of it such as OpenMPI and MPICH. Essentially you design your application to spawn multiple copies that pass messages between each other. MPI then abstracts away the actual method of communication. Instead it provides a series of primitive functions such as send, receive, and broadcast which you use in your application design. The actual communication is then handled by a module in your chosen MPI stack.
OpenMPI includes many transports, including shared memory, TCP/IP, InfiniBand, Myrinet Express, and a bunch more. Which of those you use and how you configure them is again highly application dependent.
Usually your MPI tasks will be allocated nodes on the cluster using some sort of batch queueing system such as Torque or Sun Grid Engine. These become more useful if you share your cluster among multiple users and need to schedule your cluster resources.
I suggest you check out the Gentoo Cluster project site and have a look through some of the linked resources. These will help you get a better understanding of running applications in a clustered environment, and help you narrow down which areas you need more help with.