Wednesday, January 16, 2008

What is a cluster?

WHAT IS A CLUSTER?
A cluster is a group of two or more loosely coupled computers that cooperate in such a way that they behave like a single computer. The idea is to take advantage of the high performance processing power of personal computers. By many measures including, computational speed, size of main memory, available disk space and bandwidth, the PC of today is more powerful than the supercomputers of the past. By harnessing the power of multiple such low cost processing elements, we can create a powerful supercomputer.
A cluster is made up of nodes, each with one or more processors, shared memory and peripheral devices (such as disks) connected by a network that allows data to move between the nodes. A cluster is a pretty powerful setup even if old computers are used.
Clusters can be
- DIY (assembled by the user out of COTs –commercial off the shelf components)
- Prepackaged (assembled by a vendor)

WHY IS A CLUSTER USED?
A cluster is can be used for
1. Parallel Processing – to make applications run faster by running parallel processes; such clusters are called High Performance Clusters.
Applications that require greater performance than that available through a single processor can utilize the power of these clusters. The reasons that an application desires higher computational power include
– Real time constraints: computation must be finished within a certain period of time (e.g. – weather forecasting)
- Need for a higher throughput: when a single processor would require days or even years to complete a calculation. e.g. – Google uses over 15,000 commodity PCs with fault tolerant software to provide a high performance web search service.
- Larger Memory requirements – application needs to handle huge amounts of data.

2. Fault Tolerance – such clusters operate by having redundant nodes, which can continue to provide service when system components fail; also called High-Availability Clusters. The failure of a single component would only reduce the cluster’s power. If the primary node in a high-availability cluster fails, it is replaced by a secondary node that has been waiting for that moment. That secondary node is usually a mirror image of the primary node, so that when it does replace the primary, it can completely take over its identity and thus keep the system environment consistent from the user's point of view. Such clusters are good choices for environments that require guarantees of high processing power, such as Web servers. e.g.- Linux HA project

3. Load Balancing – A front end load balancer distributes workload to back end platforms. Load-balancing clusters provide a more practical system for business needs. As the name implies, this system entails sharing the processing load as evenly as possible across a cluster of computers. The load could be in the form of an application processing load or a network traffic load that needs to be balanced. Such a system is perfectly suited for large numbers of users running the same set of applications. E.g.- Linux Virtual Server project


WHAT ARE BEOWULF CLUSTERS?

The best-known type of Linux-based cluster is the Beowulf cluster. A Beowulf cluster consists of multiple machines on a local area network that pool resources to solve computing tasks. In order for this cooperation to take place, special cluster-enabled software applications must be written using clustering libraries. The most popular clustering libraries are Parallel Virtual Machine (PVM) and Message Passing Interface (MPI), and they are both very mature and work very well. By using PVM or MPI, programmers can create cluster-enabled applications that are able to take advantage of an entire cluster's computing resources, rather than being bound to a single machine.

WHAT ARE MOSIX CLUSTERS?
This kind of clustering technology is easy to set up and can provide an immediate benefit. MOSIX works in a fundamentally different way from PVM or MPI, extending the kernel so that any standard Linux process can take advantage of a cluster's resources. By using special adaptive load-balancing techniques, processes running on one node in the cluster can be transparently "migrated" to another node where they may execute faster. Because MOSIX is transparent, the process that's migrated doesn't even "know" (or need to know) that it is running on a remote system. As far as that remote process and other processes running on the original node (called the "home node") are concerned, the process is running locally.
Because MOSIX is completely transparent, no special programming is required to take advantage of MOSIX's load-balancing technology. In fact, a default MOSIX installation will automatically migrate processes to the "best" node without any user intervention. For example, if an application is designed to fork() many child processes which perform work, then MOSIX will be able to migrate each one these processes as needed. So, if you wanted to compress 13 digital audio tracks simultaneously (as separate processes), then MOSIX will allow you to immediately benefit from the power of your cluster. If, however, you were to run the 13 encoding processes linearly (one after another), then you wouldn't see any speedup at all.

WHAT IS OSCAR?

Open Source Cluster Application Resource software package allows installation of a HPC cluster and is easier to install than Beowulf.

1 comment:

Krypton said...

hey...
extremely good article.
are u doing any sort of research in high performance computing ?
Prakhar
(agrawal.prakhar88@gmail.com)
(Blog: http://prakharagrawal.wordpress.com)