Google platform

Google's first production server rack, circa 1998

The Google platform refers to the computer software and large hardware resources Google uses to provide their services. This article describes the technological infrastructure behind Google's websites as presented in the company's public announcements.

Hardware

Original hardware

The original hardware (circa 1998) that was used by Google when it was located at Stanford University included:[1]

Production hardware

Google uses commodity-class x86 server computers running customized versions of Linux. The goal is to purchase CPU generations that offer the best performance per dollar, not absolute performance. How this is measured is unclear, but it is likely to incorporate running costs of the entire server, and CPU power consumption could be a significant factor.[2] Servers as of 2009–2010 consisted of custom-made open-top systems containing two processors (each with two cores[3]), a considerable amount of RAM spread over 8 DIMM slots housing double-height DIMMs, and two SATA hard disk drives connected through a non-standard ATX-sized power supply unit.[4] According to CNET and to a book by John Hennessy, each server had a novel 12-volt battery to reduce costs and improve power efficiency.[3][5]

According to Google their global data center operation electrical power ranges between 500 and 681 megawatts.[6][7] The combined processing power of these servers might have reached from 20 to 100 petaflops in 2008.[8]

Network topology

Details of the Google worldwide private networks are not publicly available but Google publications[9][10] make references to the "Atlas Top 10" report that ranks Google as the third largest ISP behind Level 3.[11]

In order to run such a large network with direct connections to as many ISP as possible at the lowest possible cost Google has a very open peering policy.[12]

From this site we can see that the Google network can be accessed from 67 public exchange points and 69 different locations across the world. As of May 2012 Google had 882 Gbit/s of public connectivity (not counting private peering agreements that Google has with the largest ISPs). This public network is used to distribute content to Google users as well as to crawl the Internet to build its search indexes.

The private side of the network is a secret but recent disclosure from Google[13] indicate that they use custom built high-radix switch-routers (with a capacity of 128 × 10 Gigabit Ethernet port) for the wide area network. Running no less than two routers per datacenter (for redundancy) we can conclude that the Google network scales in the terabit per second range (with two fully loaded routers the bi-sectional bandwidth amount to 1,280 Gbit/s).

These custom switch-routers are connected to DWDM devices to interconnect data centers and point of presences (PoP) via dark fibre.

From a datacenter view, the network starts at the rack level, where 19-inch racks are custom-made and contain 40 to 80 servers (20 to 40 1U servers on either side, while new servers are 2U rackmount systems.[14] Each rack has a switch). Servers are connected via a 1 Gbit/s Ethernet link to the top of rack switch (TOR). TOR switches are then connected to a gigabit cluster switch using multiple gigabit or ten gigabit uplinks.[15] The cluster switches themselves are interconnected and form the datacenter interconnect fabric (most likely using a dragonfly design rather than a classic butterfly or flattened butterfly layout[16]).

From an operation standpoint, when a client computer attempts to connect to Google, several DNS servers resolve www.google.com into multiple IP addresses via Round Robin policy. Furthermore, this acts as the first level of load balancing and directs the client to different Google clusters. A Google cluster has thousands of servers and once the client has connected to the server additional load balancing is done to send the queries to the least loaded web server. This makes Google one of the largest and most complex content delivery networks.[17]

Google has numerous data centers scattered around the world. At least 12 significant Google data center installations are located in the United States. The largest known centers are located in The Dalles, Oregon; Atlanta, Georgia; Reston, Virginia; Lenoir, North Carolina; and Moncks Corner, South Carolina.[18] In Europe, the largest known centers are in Eemshaven and Groningen in the Netherlands and Mons, Belgium.[18] Google's Oceania Data Center is claimed to be located in Sydney, Australia. [19]

Project 02

One of the largest Google data centers is located in the town of The Dalles, Oregon, on the Columbia River, approximately 80 miles from Portland. Codenamed "Project 02", the $600 million[20] complex was built in 2006 and is approximately the size of two American football fields, with cooling towers four stories high.[21] The site was chosen to take advantage of inexpensive hydroelectric power, and to tap into the region's large surplus of fiber optic cable, a remnant of the dot-com boom. A blueprint of the site appeared in 2008.[22]

Summa papermill

In February 2009, Stora Enso announced that they had sold the Summa paper mill in Hamina, Finland to Google for 40 million Euros.[23][24] Google plans to invest 200 million euros on the site to build a data center.[25] Google chose this location due to the availability and proximity of renewable energy sources.[26]

Modular container data centers

Since 2005,[27] Google has been moving to a containerized modular data center. Google filed a patent application for this technology in 2003.[28]

Software

Most of the software stack that Google uses on their servers was developed in-house.[29] According to a well known Google employee, C++, Java, Python and (more recently) Go are favored over other programming languages.[30] For example, the back end of Gmail is written in Java and the back end of Google Search is written in C++.[31] Google has acknowledged that Python has played an important role from the beginning, and that it continues to do so as the system grows and evolves.[32]

The software that runs the Google infrastructure includes:[33]

Google has developed several abstractions which it uses for storing most of its data:[41]

Software development practices

Most operations are read-only. When an update is required, queries are redirected to other servers, so as to simplify consistency issues. Queries are divided into sub-queries, where those sub-queries may be sent to different ducts in parallel, thus reducing the latency time.[14]

To lessen the effects of unavoidable hardware failure, software is designed to be fault tolerant. Thus, when a system goes down, data is still available on other servers, which increases reliability.

Search infrastructure

Index

Like most search engines, Google indexes documents by building a data structure known as inverted index. Such an index allows obtaining a list of documents by a query word. The index is very large due to the number of documents stored in the servers.[17]

The index is partitioned by document IDs into many pieces called shards. Each shard is replicated onto multiple servers. Initially, the index was being served from hard disk drives, as is done in traditional information retrieval (IR) systems. Google dealt with the increasing query volume by increasing number of replicas of each shard and thus increasing number of servers. Soon they found that they had enough servers to keep a copy of the whole index in main memory (although with low replication or no replication at all), and in early 2001 Google switched to an in-memory index system. This switch "radically changed many design parameters" of their search system, and allowed for a significant increase in throughput and a large decrease in latency of queries.[46]

In June 2010, Google rolled out a next-generation indexing and serving system called "Caffeine" which can continuously crawl and update the search index. Previously, Google updated its search index in batches using a series of MapReduce jobs. The index was separated into several layers, some of which were updated faster than the others, and the main layer wouldn't be updated for as long as two weeks. With Caffeine the entire index is updated incrementally on a continuous basis. Later Google revealed a distributed data processing system called "Percolator"[47] which is said to be the basis of Caffeine indexing system.[39][48]

Server types

Google's server infrastructure is divided into several types, each assigned to a different purpose:[14][17][49][50][51]

References

  1. "Google Stanford Hardware" at the Wayback Machine (archived February 9, 1999). Stanford University (provided by Internet Archive). Retrieved on July 10, 2006.
  2. Tawfik Jelassi and Albrecht Enders (2004). "Case study 16 — Google". Strategies for E-business. Pearson Education. p. 424. ISBN 978-0-273-68840-2.
  3. 3.0 3.1 Computer Architecture, Fifth Edition: A Quantitative Approach, ISBN 978-0123838728; Chapter Six; 6.7 "A Google Warehouse-Scale Computer" page 471 "Designing motherboards that only need a single 12-volt supply so that the UPS function could be supplied by standard batteries associated with each server"
  4. Google's secret power supplies on YouTube
  5. Google on-server 12V UPS, 1 April 2009.
  6. Google Green infographics
  7. Analytics Press Growth in data center electricity use 2005 to 2010
  8. Google Surpasses Supercomputer Community, Unnoticed?, May 20, 2008.
  9. "Fiber Optic Communication Technologies: What's Needed for Datacenter Network Operations", Research, Google
  10. "FTTH look ahead — technologies & architectures", Research, Google
  11. James Pearn. How many servers does Google have?. plus.google.com.
  12. "kumara ASN15169", Peering DB
  13. "Urs Holzle", Speakers, Open Network Summit
  14. 14.0 14.1 14.2 Web Search for a Planet: The Google Cluster Architecture (Luiz André Barroso, Jeffrey Dean, Urs Hölzle)
  15. Warehouse size computers
  16. Denis Abt High Performance Datacenter Networks: Architectures, Algorithms, and Opportunities
  17. 17.0 17.1 17.2 Fiach Reid (2004). "Case Study: The Google search engine". Network Programming in .NET. Digital Press. pp. 251–253. ISBN 978-1-55558-315-6.
  18. 18.0 18.1 Rich Miller (March 27, 2008). "Google Data Center FAQ". Data Center Knowledge. Retrieved 2009-03-15.
  19. Brett Winterford (March 5, 2010). "Found: Google Australia's secret data network". ITNews. Retrieved 2010-03-20.
  20. Google "The Dalles, Oregon Data Center" Retrieved on January 3, 2011.
  21. Markoff, John; Hansell, Saul. "Hiding in Plain Sight, Google Seeks More Power." New York Times. June 14, 2006. Retrieved on October 15, 2008.
  22. Strand, Ginger. "Google Data Center" Harper's Magazine. March 2008. Retrieved on October 15, 2008.
  23. "Stora Enso divests Summa Mill premises in Finland for EUR 40 million". Stora Enso. 2009-02-12. Retrieved 12.02.2009. Check date values in: |accessdate= (help)
  24. "Stooora yllätys: Google ostaa Summan tehtaan". Kauppalehti (in Finnish) (Helsinki). 2009-02-12. Retrieved 2009-02-12.
  25. "Google investoi 200 miljoonaa euroa Haminaan". Taloussanomat (in Finnish) (Helsinki). 2009-02-04. Retrieved 2009-03-15.
  26. Finland – First Choice for Siting Your Cloud Computing Data Center. Accessed 4 August 2010.
  27. http://www.theregister.co.uk/2009/04/10/google_data_center_video
  28. "United States Patent: 7278273". Patft.uspto.gov. Retrieved 2012-02-17.
  29. Mark Levene (2005). An Introduction to Search Engines and Web Navigation. Pearson Education. p. 73. ISBN 978-0-321-30677-7.
  30. "Python Status Update". Artima. 2006-01-10. Retrieved 2012-02-17.
  31. "Warning". Panela. Blog-city. Retrieved 2012-02-17.
  32. "Quotes about Python". Python. Retrieved 2012-02-17.
  33. "Google Architecture". High Scalability. 2008-11-22. Retrieved 2012-02-17.
  34. 34.0 34.1 34.2 Fikes, Andrew (July 29, 2010), "Storage Architecture and Challenges", TechTalk (PDF), Google
  35. "Colossus: Successor to the Google File System (GFS)". Highly Scalable Systems. 2013-02-05. Retrieved 2014-03-10.
  36. Dean, Jeffrey 'Jeff' (2009), "Design, Lessons and Advice from Building Large Distributed Systems", Ladis (keynote talk presentation), Cornell
  37. Shute, Jeffrey 'Jeff'; Oancea, Mircea; Ellner, Stephan; Handy, Benjamin 'Ben'; Rollins, Eric; Samwel, Bart; Vingralek, Radek; Whipkey, Chad; Chen, Xin; Jegerlehner, Beat; Littlefield, Kyle; Tong, Phoenix (2012), "F1 — the Fault-Tolerant Distributed RDBMS Supporting Google's Ad Business", Research (presentation), Sigmod: Google
  38. "Anna Patterson – CrunchBase Profile". Crunchbase.com. Retrieved 2012-02-17.
  39. 39.0 39.1 The Register. Google Caffeine jolts worldwide search machine
  40. "Google official release note". Google.com. Retrieved 2013-09-28.
  41. 41.0 41.1 "Google Developing Caffeine Storage System | TechWeekEurope UK". Eweekeurope.co.uk. 2009-08-18. Retrieved 2012-02-17.
  42. "Developer Guide – Protocol Buffers – Google Code". Code.google.com. Retrieved 2012-02-17.
  43. windley on June 24, 2008 1:10 PM (2008-06-24). "Phil Windley's Technometria | Velocity 08: Storage at Scale". Windley.com. Retrieved 2012-02-17.
  44. "Message limit – Protocol Buffers | Google Groups". Groups.google.com. Retrieved 2012-02-17.
  45. "Jeff Dean's keynote at WSDM 2009" (PDF). Retrieved 2012-02-17.
  46. Daniel Peng, Frank Dabek. (2010). Large-scale Incremental Processing Using Distributed Transactions and Notifications. Proceedings of the 9th USENIX Symposium on Operating Systems Design and Implementation.
  47. The Register. Google Percolator – global search jolt sans MapReduce comedown
  48. Chandler Evans (2008). "Google Platform". Future of Google Earth. Madison Publishing Company. p. 299. ISBN 978-1-4196-8903-1.
  49. Chris Sherman (2005). "How Google Works". Google Power. McGraw-Hill Professional. pp. 10–11. ISBN 978-0-07-225787-8.
  50. Michael Miller (2007). "How Google Works". Googlepedia. Pearson Technology Group. pp. 17–18. ISBN 978-0-7897-3639-0.

Further reading

External links