Acomputer clusteris a set ofcomputersthat work together so that they can be viewed as a single system. Unlikegrid computers,computer clusters have eachnodeset to perform the same task, controlled and scheduled by software. The newest manifestation of cluster computing iscloud computing.
The components of a cluster are usually connected to each other through fastlocal area networks,with eachnode(computer used as a server) running its own instance of anoperating system.In most circumstances, all of the nodes use the same hardware[1][better source needed]and the same operating system, although in some setups (e.g. usingOpen Source Cluster Application Resources(OSCAR)), different operating systems can be used on each computer, or different hardware.[2]
Clusters are usually deployed to improve performance and availability over that of a single computer, while typically being much more cost-effective than single computers of comparable speed or availability.[3]
Computer clusters emerged as a result of the convergence of a number of computing trends including the availability of low-cost microprocessors, high-speed networks, and software for high-performancedistributed computing.[citation needed]They have a wide range of applicability and deployment, ranging from small business clusters with a handful of nodes to some of the fastestsupercomputersin the world such asIBM's Sequoia.[4]Prior to the advent of clusters, single-unitfault tolerantmainframeswithmodular redundancywere employed; but the lower upfront cost of clusters, and increased speed of network fabric has favoured the adoption of clusters. In contrast to high-reliability mainframes, clusters are cheaper to scale out, but also have increased complexity in error handling, as in clusters error modes are not opaque to running programs.[5]
Basic concepts
editThe desire to get more computing power and better reliability by orchestrating a number of low-costcommercial off-the-shelfcomputers has given rise to a variety of architectures and configurations.
The computer clustering approach usually (but not always) connects a number of readily available computing nodes (e.g. personal computers used as servers) via a fastlocal area network.[6]The activities of the computing nodes are orchestrated by "clustering middleware", a software layer that sits atop the nodes and allows the users to treat the cluster as by and large one cohesive computing unit, e.g. via asingle system imageconcept.[6]
Computer clustering relies on a centralized management approach which makes the nodes available as orchestrated shared servers. It is distinct from other approaches such aspeer-to-peerorgrid computingwhich also use many nodes, but with a far moredistributed nature.[6]
A computer cluster may be a simple two-node system which just connects two personal computers, or may be a very fastsupercomputer.A basic approach to building a cluster is that of aBeowulfcluster which may be built with a few personal computers to produce a cost-effective alternative to traditionalhigh-performance computing.An early project that showed the viability of the concept was the 133-nodeStone Soupercomputer.[7]The developers usedLinux,theParallel Virtual Machinetoolkit and theMessage Passing Interfacelibrary to achieve high performance at a relatively low cost.[8]
Although a cluster may consist of just a few personal computers connected by a simple network, the cluster architecture may also be used to achieve very high levels of performance. TheTOP500organization's semiannual list of the 500 fastest supercomputers often includes many clusters, e.g. the world's fastest machine in 2011 was theK computerwhich has adistributed memory,cluster architecture.[9]
History
editGreg Pfister has stated that clusters were not invented by any specific vendor but by customers who could not fit all their work on one computer, or needed a backup.[10]Pfister estimates the date as some time in the 1960s. The formal engineering basis of cluster computing as a means of doing parallel work of any sort was arguably invented byGene AmdahlofIBM,who in 1967 published what has come to be regarded as the seminal paper on parallel processing:Amdahl's Law.
The history of early computer clusters is more or less directly tied to the history of early networks, as one of the primary motivations for the development of a network was to link computing resources, creating a de facto computer cluster.
The first production system designed as a cluster was the BurroughsB5700in the mid-1960s. This allowed up to four computers, each with either one or two processors, to be tightly coupled to a common disk storage subsystem in order to distribute the workload. Unlike standard multiprocessor systems, each computer could be restarted without disrupting overall operation.
The first commercial loosely coupled clustering product wasDatapoint Corporation's"Attached Resource Computer" (ARC) system, developed in 1977, and usingARCnetas the cluster interface. Clustering per se did not really take off untilDigital Equipment Corporationreleased theirVAXclusterproduct in 1984 for theVMSoperating system. The ARC and VAXcluster products not only supportedparallel computing,but also sharedfile systemsandperipheraldevices. The idea was to provide the advantages of parallel processing, while maintaining data reliability and uniqueness. Two other noteworthy early commercial clusters were theTandem NonStop(a 1976 high-availability commercial product)[11][12]and theIBM S/390 Parallel Sysplex(circa 1994, primarily for business use).
Within the same time frame, while computer clusters used parallelism outside the computer on a commodity network,supercomputersbegan to use them within the same computer. Following the success of theCDC 6600in 1964, theCray 1was delivered in 1976, and introduced internal parallelism viavector processing.[13]While early supercomputers excluded clusters and relied onshared memory,in time some of the fastest supercomputers (e.g. theK computer) relied on cluster architectures.
Attributes of clusters
editComputer clusters may be configured for different purposes ranging from general purpose business needs such as web-service support, to computation-intensive scientific calculations. In either case, the cluster may use ahigh-availabilityapproach. Note that the attributes described below are not exclusive and a "computer cluster" may also use a high-availability approach, etc.
"Load-balancing"clusters are configurations in which cluster-nodes share computational workload to provide better overall performance. For example, a web server cluster may assign different queries to different nodes, so the overall response time will be optimized.[14]However, approaches to load-balancing may significantly differ among applications, e.g. a high-performance cluster used for scientific computations would balance load with different algorithms from a web-server cluster which may just use a simpleround-robin methodby assigning each new request to a different node.[14]
Computer clusters are used for computation-intensive purposes, rather than handlingIO-orientedoperations such as web service or databases.[15]For instance, a computer cluster might supportcomputational simulationsof vehicle crashes or weather. Very tightly coupled computer clusters are designed for work that may approach "supercomputing".
"High-availability clusters"(also known asfailoverclusters, or HA clusters) improve the availability of the cluster approach. They operate by having redundantnodes,which are then used to provide service when system components fail. HA cluster implementations attempt to use redundancy of cluster components to eliminatesingle points of failure.There are commercial implementations of High-Availability clusters for many operating systems. TheLinux-HAproject is one commonly usedfree softwareHA package for theLinuxoperating system.
Benefits
editClusters are primarily designed with performance in mind, but installations are based on many other factors. Fault tolerance (the ability of a system to continue operating despite a malfunctioning node) enablesscalability,and in high-performance situations, allows for a low frequency of maintenance routines, resource consolidation (e.g.,RAID), and centralized management. Advantages include enabling data recovery in the event of a disaster and providing parallel data processing and high processing capacity.[16][17]
In terms of scalability, clusters provide this in their ability to add nodes horizontally. This means that more computers may be added to the cluster, to improve its performance, redundancy and fault tolerance. This can be an inexpensive solution for a higher performing cluster compared to scaling up a single node in the cluster. This property of computer clusters can allow for larger computational loads to be executed by a larger number of lower performing computers.
When adding a new node to a cluster, reliability increases because the entire cluster does not need to be taken down. A single node can be taken down for maintenance, while the rest of the cluster takes on the load of that individual node.
If you have a large number of computers clustered together, this lends itself to the use ofdistributed file systemsandRAID,both of which can increase the reliability and speed of a cluster.
Design and configuration
editOne of the issues in designing a cluster is how tightly coupled the individual nodes may be. For instance, a single computer job may require frequent communication among nodes: this implies that the cluster shares a dedicated network, is densely located, and probably has homogeneous nodes. The other extreme is where a computer job uses one or few nodes, and needs little or no inter-node communication, approachinggrid computing.
In aBeowulf cluster,the application programs never see the computational nodes (also called slave computers) but only interact with the "Master" which is a specific computer handling the scheduling and management of the slaves.[15]In a typical implementation the Master has two network interfaces, one that communicates with the private Beowulf network for the slaves, the other for the general purpose network of the organization.[15]The slave computers typically have their own version of the same operating system, and local memory and disk space. However, the private slave network may also have a large and shared file server that stores global persistent data, accessed by the slaves as needed.[15]
A special purpose 144-nodeDEGIMA clusteris tuned to running astrophysical N-body simulations using the Multiple-Walk parallel tree code, rather than general purpose scientific computations.[18]
Due to the increasing computing power of each generation ofgame consoles,a novel use has emerged where they are repurposed intoHigh-performance computing(HPC) clusters. Some examples of game console clusters areSony PlayStation clustersandMicrosoftXboxclusters. Another example of consumer game product is theNvidia Tesla Personal Supercomputerworkstation, which uses multiple graphics accelerator processor chips. Besides game consoles, high-end graphics cards too can be used instead. The use of graphics cards (or rather their GPU's) to do calculations for grid computing is vastly more economical than using CPU's, despite being less precise. However, when using double-precision values, they become as precise to work with as CPU's and are still much less costly (purchase cost).[2]
Computer clusters have historically run on separate physicalcomputerswith the sameoperating system.With the advent ofvirtualization,the cluster nodes may run on separate physical computers with different operating systems which are painted above with a virtual layer to look similar.[19][citation needed][clarification needed]The cluster may also be virtualized on various configurations as maintenance takes place; an example implementation isXenas the virtualization manager withLinux-HA.[19]
Data sharing and communication
editData sharing
editAs the computer clusters were appearing during the 1980s, so weresupercomputers.One of the elements that distinguished the three classes at that time was that the early supercomputers relied onshared memory.Clusters do not typically use physically shared memory, while many supercomputer architectures have also abandoned it.
However, the use of aclustered file systemis essential in modern computer clusters.[citation needed]Examples include theIBM General Parallel File System,Microsoft'sCluster Shared Volumesor theOracle Cluster File System.
Message passing and communication
editTwo widely used approaches for communication between cluster nodes are MPI (Message Passing Interface) and PVM (Parallel Virtual Machine).[20]
PVM was developed at theOak Ridge National Laboratoryaround 1989 before MPI was available. PVM must be directly installed on every cluster node and provides a set of software libraries that paint the node as a "parallel virtual machine". PVM provides a run-time environment for message-passing, task and resource management, and fault notification. PVM can be used by user programs written in C, C++, or Fortran, etc.[20][21]
MPI emerged in the early 1990s out of discussions among 40 organizations. The initial effort was supported byARPAandNational Science Foundation.Rather than starting anew, the design of MPI drew on various features available in commercial systems of the time. The MPI specifications then gave rise to specific implementations. MPI implementations typically useTCP/IPand socket connections.[20]MPI is now a widely available communications model that enables parallel programs to be written in languages such asC,Fortran,Python,etc.[21]Thus, unlike PVM which provides a concrete implementation, MPI is a specification which has been implemented in systems such asMPICHandOpen MPI.[21][22]
Cluster management
editOne of the challenges in the use of a computer cluster is the cost of administrating it which can at times be as high as the cost of administrating N independent machines, if the cluster has N nodes.[23]In some cases this provides an advantage toshared memory architectureswith lower administration costs.[23]This has also madevirtual machinespopular, due to the ease of administration.[23]
Task scheduling
editWhen a large multi-user cluster needs to access very large amounts of data,task schedulingbecomes a challenge. In a heterogeneous CPU-GPU cluster with a complex application environment, the performance of each job depends on the characteristics of the underlying cluster. Therefore, mapping tasks onto CPU cores and GPU devices provides significant challenges.[24]This is an area of ongoing research; algorithms that combine and extendMapReduceandHadoophave been proposed and studied.[24]
Node failure management
editWhen a node in a cluster fails, strategies such as "fencing"may be employed to keep the rest of the system operational.[25][26]Fencing is the process of isolating a node or protecting shared resources when a node appears to be malfunctioning. There are two classes of fencing methods; one disables a node itself, and the other disallows access to resources such as shared disks.[25]
TheSTONITHmethod stands for "Shoot The Other Node In The Head", meaning that the suspected node is disabled or powered off. For instance,power fencinguses a power controller to turn off an inoperable node.[25]
Theresources fencingapproach disallows access to resources without powering off the node. This may includepersistent reservation fencingvia theSCSI3,fibre channel fencing to disable thefibre channelport, orglobal network block device(GNBD) fencing to disable access to the GNBD server.
Software development and administration
editParallel programming
editLoad balancing clusters such as web servers use cluster architectures to support a large number of users and typically each user request is routed to a specific node, achievingtask parallelismwithout multi-node cooperation, given that the main goal of the system is providing rapid user access to shared data. However, "computer clusters" which perform complex computations for a small number of users need to take advantage of the parallel processing capabilities of the cluster and partition "the same computation" among several nodes.[27]
Automatic parallelizationof programs remains a technical challenge, butparallel programming modelscan be used to effectuate a higherdegree of parallelismvia the simultaneous execution of separate portions of a program on different processors.[27][28]
Debugging and monitoring
editDeveloping and debugging parallel programs on a cluster requires parallel language primitives and suitable tools such as those discussed by theHigh Performance Debugging Forum(HPDF) which resulted in the HPD specifications.[21][29]Tools such asTotalViewwere then developed to debug parallel implementations on computer clusters which useMessage Passing Interface(MPI) orParallel Virtual Machine(PVM) for message passing.
TheUniversity of California, BerkeleyNetwork of Workstations(NOW) system gathers cluster data and stores them in a database, while a system such as PARMON, developed in India, allows visually observing and managing large clusters.[21]
Application checkpointingcan be used to restore a given state of the system when a node fails during a long multi-node computation.[30]This is essential in large clusters, given that as the number of nodes increases, so does the likelihood of node failure under heavy computational loads. Checkpointing can restore the system to a stable state so that processing can resume without needing to recompute results.[30]
Implementations
editThe Linux world supports various cluster software; for application clustering, there isdistcc,andMPICH.Linux Virtual Server,Linux-HA– director-based clusters that allow incoming requests for services to be distributed across multiple cluster nodes.MOSIX,LinuxPMI,Kerrighed,OpenSSIare full-blown clusters integrated into thekernelthat provide for automatic process migration among homogeneous nodes.OpenSSI,openMosixandKerrighedaresingle-system imageimplementations.
Microsoft Windowscomputer cluster Server 2003 based on theWindows Serverplatform provides pieces for high-performance computing like the job scheduler, MSMPI library and management tools.
gLiteis a set of middleware technologies created by theEnabling Grids for E-sciencE(EGEE) project.
slurmis also used to schedule and manage some of the largest supercomputer clusters (see top500 list).
Other approaches
editAlthough most computer clusters are permanent fixtures, attempts atflash mob computinghave been made to build short-lived clusters for specific computations. However, larger-scalevolunteer computingsystems such asBOINC-based systems have had more followers.
See also
edit
Basic concepts Distributed computing |
Specific systems Computer farms |
References
edit- ^"Cluster vs grid computing".Stack Overflow.
- ^Bader, David;Pennington, Robert (May 2001)."Cluster Computing: Applications".Georgia Tech College of Computing.Archived fromthe originalon 2007-12-21.Retrieved2017-02-28.
- ^"Nuclear weapons supercomputer reclaims world speed record for US".The Telegraph. 18 Jun 2012.Archivedfrom the original on 2022-01-12.Retrieved18 Jun2012.
- ^Gray, Jim; Rueter, Andreas (1993).Transaction processing: concepts and techniques.Morgan Kaufmann Publishers.ISBN978-1558601901.
- ^abcEnokido, Tomoya; Barolli, Leonhard; Takizawa, Makoto (23 August 2007).Network-Based Information Systems: First International Conference, NBIS 2007.p. 375.ISBN978-3-540-74572-3.
- ^William W. Hargrove, Forrest M. Hoffman andThomas Sterling(August 16, 2001)."The Do-It-Yourself Supercomputer".Scientific American.Vol. 265, no. 2. pp. 72–79.RetrievedOctober 18,2011.
- ^Hargrove, William W.; Hoffman, Forrest M. (1999)."Cluster Computing: Linux Taken to the Extreme".Linux Magazine.Archived fromthe originalon October 18, 2011.RetrievedOctober 18,2011.
- ^Yokokawa, Mitsuo; et al. (1–3 August 2011).The K computer: Japanese next-generation supercomputer development project.International Symposium on Low Power Electronics and Design (ISLPED). pp. 371–372.doi:10.1109/ISLPED.2011.5993668.
- ^Pfister, Gregory (1998).In Search of Clusters(2nd ed.). Upper Saddle River, NJ: Prentice Hall PTR. p.36.ISBN978-0-13-899709-0.
- ^Katzman, James A. (1982). "Chapter 29, The Tandem 16: A Fault-Tolerant Computing System". In Siewiorek, Donald P. (ed.).Computer Structure: Principles and Examples.U.S.A.: McGraw-Hill Book Company. pp. 470–485.
- ^"History of TANDEM COMPUTERS, INC. – FundingUniverse".www.fundinguniverse.com.Retrieved2023-03-01.
- ^Hill, Mark Donald;Jouppi, Norman Paul;Sohi, Gurindar (1999).Readings in computer architecture.Gulf Professional. pp. 41–48.ISBN978-1-55860-539-8.
- ^abSloan, Joseph D. (2004).High Performance Linux Clusters."O'Reilly Media, Inc.".ISBN978-0-596-00570-2.
- ^abcdDaydé, Michel; Dongarra, Jack (2005).High Performance Computing for Computational Science – VECPAR 2004.Springer. pp. 120–121.ISBN978-3-540-25424-9.
- ^"IBM Cluster System: Benefits".IBM.Archived fromthe originalon 29 April 2016.Retrieved8 September2014.
- ^"Evaluating the Benefits of Clustering".Microsoft.28 March 2003. Archived fromthe originalon 22 April 2016.Retrieved8 September2014.
- ^Hamada, Tsuyoshi; et al. (2009). "A novel multiple-walk parallel algorithm for the Barnes–Hut treecode on GPUs – towards cost effective, high performance N-body simulation".Computer Science – Research and Development.24(1–2): 21–31.doi:10.1007/s00450-009-0089-1.S2CID31071570.
- ^abMauer, Ryan (12 Jan 2006)."Xen Virtualization and Linux Clustering, Part 1".Linux Journal.Retrieved2 Jun2017.
- ^abcMilicchio, Franco; Gehrke, Wolfgang Alexander (2007).Distributed services with OpenAFS: for enterprise and education.Springer. pp. 339–341.ISBN9783540366348.
- ^abcdePrabhu, C.S.R. (2008).Grid and Cluster Computing.PHI Learning Pvt. pp. 109–112.ISBN978-8120334281.
- ^Gropp, William; Lusk, Ewing; Skjellum, Anthony (1996). "A High-Performance, Portable Implementation of the MPI Message Passing Interface".Parallel Computing.22(6): 789–828.CiteSeerX10.1.1.102.9485.doi:10.1016/0167-8191(96)00024-5.
- ^abcPatterson, David A.; Hennessy, John L. (2011).Computer Organization and Design.Elsevier. pp. 641–642.ISBN978-0-12-374750-1.
- ^abK. Shirahata; et al. (30 Nov – 3 Dec 2010).Hybrid Map Task Scheduling for GPU-Based Heterogeneous Clusters.Cloud Computing Technology and Science (CloudCom). pp. 733–740.doi:10.1109/CloudCom.2010.55.ISBN978-1-4244-9405-7.
- ^abc"Alan Robertson Resource fencing using STONITH"(PDF).IBM Linux Research Center, 2010.Archived fromthe original(PDF)on 2021-01-05.
- ^Vargas, Enrique; Bianco, Joseph; Deeths, David (2001).Sun Cluster environment: Sun Cluster 2.2.Prentice Hall Professional. p. 58.ISBN9780130418708.
- ^abAho, Alfred V.; Blum, Edward K. (2011).Computer Science: The Hardware, Software and Heart of It.Springer. pp. 156–166.ISBN978-1-4614-1167-3.
- ^Rauber, Thomas; Rünger, Gudula (2010).Parallel Programming: For Multicore and Cluster Systems.Springer. pp. 94–95.ISBN978-3-642-04817-3.
- ^Francioni, Joan M.;Pancake, Cherri M.(April 2000)."A Debugging Standard for High-performance computing".Scientific Programming.8(2).Amsterdam,Netherlands:IOS Press: 95–108.doi:10.1155/2000/971291.ISSN1058-9244.
- ^abSloot, Peter, ed. (2003).Computational Science: ICCS 2003: International Conference.pp. 291–292.ISBN3-540-40195-4.
Further reading
edit- Baker, Mark; et al. (11 Jan 2001). "Cluster Computing White Paper".arXiv:cs/0004014.
- Marcus, Evan; Stern, Hal (2000-02-14).Blueprints for High Availability: Designing Resilient Distributed Systems.John Wiley & Sons.ISBN978-0-471-35601-1.
- Pfister, Greg (1998).In Search of Clusters.Prentice Hall.ISBN978-0-13-899709-0.
- Buyya, Rajkumar, ed. (1999).High Performance Cluster Computing: Architectures and Systems.Vol. 1. NJ, USA: Prentice Hall.ISBN978-0-13-013784-5.
- Buyya, Rajkumar, ed. (1999).High Performance Cluster Computing: Architectures and Systems.Vol. 2. NJ, USA: Prentice Hall.ISBN978-0-13-013785-2.
External links
edit- IEEE Technical Committee on Scalable Computing (TCSC)
- Reliable Scalable Cluster Technology, IBM[permanent dead link ]
- Tivoli System Automation Wiki
- Large-scale cluster management at Google with Borg,April 2015, by Abhishek Verma, Luis Pedrosa, Madhukar Korupolu, David Oppenheimer, Eric Tune and John Wilkes