5 ms·
This is a tangent, because hosting providers didn't really use distributed computing back in 90's. They don't really have to solve any coordination problems be
by chubot 9y ago
This is a tangent, because hosting providers didn't really use distributed computing back in 90's. They don't really have to solve any coordination problems because every customer is separate by definition. As far as I understand, their conception of distributed computing was limited to sys admins maintaining NFS and so forth.
But going off on this tangent: I don't think BigTable was a major milestone in terms of fault-tolerant clusters of
commodity PCs.
For example here is a write-up paper from 2003 that describes Google's search clusters:
http://www.eecs.harvard.edu/~dbrooks/cs246-fall2004/google.pdf http://www.eecs.harvard.edu/~dbrooks/cs246-fall2004/google.p...
Google’s racks consist of 40 to 80 x86-based servers mounted on either side of a custom
made rack (each side of the rack contains twenty 20u or forty 1u servers). Our focus on
price/performance favors servers that resemble mid-range desktop PCs in terms of their components
This architecture existed for a few years before BigTable did.
Also, Google didn't invent this architecture. I did some research on this several years ago -- it appears that Eric Brewer's work at Inktomi in the 90's had an architecture that was largely similar to Google. I also think there was a name for it other than "RAIN". But I can't recall now.
This isn't the paper I'm thinking of, but it's from 1997 and has a lot of the ideas from Google (which became a company in 1998):
Cluster-Based Scalable Network Services
https://people.eecs.berkeley.edu/~brewer/papers/TACC-sosp.pdf https://people.eecs.berkeley.edu/~brewer/papers/TACC-sosp.pd...
We observe that clusters of workstations have some fundamental properties that can be exploited to meet these requirements: using commodity PCs as the unit of scaling allows the service to ride the leading edge of the cost/performance curve, the inherent redundancy of clusters can be used to mask transient failures, and "embarrassingly parallel" network service workloads map well
onto networks of workstations.
----
Ah OK I found it, the term is "Networks of Workstations". From 1994:
A Case for NOW (Networks of Workstations)
https://scholar.google.com/scholar?cluster=1089787370567533783&hl=en&as_sdt=0,5&sciodt=0,5 https://scholar.google.com/scholar?cluster=10897873705675337...
I believe this work influenced first Inktomi and then Google... since the last author is Patterson, that's pretty easy to believe.
There are some stories about the Google prototype at Stanford (backrub) using every workstation they could cobble together.
In this paper, we argue that because of recent technology advances, networks of workstations (NOWs) are poised to become the primary computing infrastructure for science and engineering, from low end interactive computing to demanding sequential and parallel applications. We identify three opportunities for NOWs that will benefit endusers: dramatically improving virtual memory and file system performance by using the aggregate DRAM of a NOW as a giant cache for disk; achieving cheap, highly available, and scalable file storage by using redundant arrays of workstation disks, using the LAN as the I/O backplane; and finally, multiple CPUs for parallel computing.
- peterwwillis 9y agoHosting providers still don't really use distributed computing. Cloud hosting providers do, but mainly because they are great at selling the idea that the customer should help the hosting provider save money by accepting increased complexity. What you're describing, clusters based on commodity PCs, have existed in some form since shortly after commodity PCs were introduced. Clusters in general have existed since 1977. The thing is that most computers were big and expensive, so there was practically no hardware available to make clusters on the cheap until the 90's. The NOW workstation you reference was the progenitor of Beowulf clusters, developed at NASA in 1994. [https://www.researchgate.net/publication/24321665_Clustered_Workstations_and_their_Potential_Role_as_High_Speed_Compute_Processors https://www.researchgate.net/publication/24321665_Clustered_...] But vendors were making similar clusters at the same time, because they all had to solve the same problem: handle workloads too big for a single machine. The Tandem Himalayan and IBM S/390 Parallel Sysplex were also both introduced in 1994, but those were big commercial products, not commodity clusters. Many other commercial cluster solutions had been produced in the previous 10 years. So it's not exactly some mind-blowing paradigm shift, and more an increased focus on reducing the cost of computing, which has always been the pink elephant in the room.
- chubot 9y agoWell, I'd argue that Inktomi and Google are qualitatively different than earlier clusters for 2 of the 3 reasons mentioned in the NOW paper: - dramatically improving virtual memory and file system performance by using the aggregate DRAM of a NOW as a giant cache for disk; - achieving cheap, highly available, and scalable file storage by using redundant arrays of workstation disks, using the LAN as the I/O backplane; and Also: - Compute clusters with shared memory are completely different than NOW clusters. - Compute clusters existed before, but most were not fault tolerant as far as I understand. Commodity disks have a (much?) higher failure rate than commodity CPUs. As far as I know, NASA was mainly using compute clusters. As far as I understand, "Beowulf" clusters were mostly about compute. That is, doing a lot of computation on a relatively small amount of data. In contrast, Google and Inktomi were about doing a small amount of computation on huge data, and also operating live services. Though, I'm interested in any specific examples of earlier systems that unified separate memories and disks from commodity PCs. For example, BigTable definitely unified distributed memory and disk into a single resource, but it came much later. Also, to be truly called "commodity", the memory/disk should be unified over Ethernet, e.g. using a Unix socket interface and not something custom.