Maszyneria Google

Czy zastanawiałeś się kiedyś, co kryje się za skromnym wyglądem wyszukiwarki Google? Już odpowiadamy – najszybszy system komputery świata. Niewiele o nim wiadomo, bo Google pilnie strzeże swoich sekretów. Dla naszych czytelników uchylamy rąbka tajemnicy.

Czy zastanawiałeś się kiedyś, co kryje się za skromnym wyglądem wyszukiwarki Google? Już odpowiadamy – najszybszy system komputery świata. Niewiele o nim wiadomo, bo Google pilnie strzeże swoich sekretów. Dla naszych czytelników uchylamy rąbka tajemnicy.

Dziesięć lat temu było to tylko szkolny projekt dwóch entuzjastów. Dzisiaj Google każdego dnia dostarcza setkom milionów użytkowników wyniki wyszukiwania. Bez kolejek i żadnych opóźnień, co jest możliwe za sprawą olbrzymiej maszynerii – tysiącom serwerów i różnych urządzeń sieciowych. Infrastruktura Google może rozpalać wyobraźnię, niestety firma nie spieszy się, żeby zaspokoić ciekawość internautów. Oficjalnie dostępne informacje są bardzo skąpe. Przekopaliśmy jednak Internet wzdłuż i wszerz, aby przedstawić naszym czytelnikom ten fascynujący świat.

Prawie pół miliona serwerów

Liczby nie są publicznie znane, ale szacuje się, że Google zarządza ponad 450 tysiącami serwerów. Jeśli przyjmiemy, że każdy serwer ma dwa procesory to otrzymujemy ponad 900 tysięcy procesorów. Są to bardzo ogólne obliczenia, nie uwzględniające liczby rdzeni w procesorach, jednak przydadzą się do porównania – Blue-Gene/L, pierwszy na liście 500 najszybszych superkomputerów na świecie (wyniki z listopada 2007) ma ok. 213 tysięcy procesorów, czyli ponad cztery razy mniej. Tak ogromna moc obliczeniowa jest niezbędna, bo obsłużenie pojedynczego zapytania pochłania miliardy cykli procesora i wiąże się z odczytaniem setek megabajtów danych.

Szafy pełne komputerów

Ogromną liczbę serwerów gdzieś trzeba upchnąć i to dosłownie. Nie są to wolnostojące serwery, bo takie zajmują zbyt dużo miejsca. Google korzysta z serwerów rackowych, które wyglądem przypominają szufladę wsuwaną do szafy. Tak też jest w rzeczywistości. Serwery są montowane w specjalnych szafach, również zwanych rackowymi. Rack oznacza standardowe szafy o szerokości 19 cali i wysokości podawanej w jednostkach U (1U=1.75 cala). Z kolei serwery rackowe mają wysokość 1U lub 2U i w serwerowniach Google są montowane po 40 lub 80 w jednej szafie. W każdej szafie znajduje się urządzenie sieciowe zwane przełącznikiem (ang. switch). Wszystkie serwery z danej szafy są do niego podłączone kablem Ethernet o przepustowości 100 Mbit/s. Z kolei przełącznik w szafie jest połączony z głównymi przełącznikami jednym lub dwoma kablami o przepustowości 1 Gbit/s.

Serwerownia jak dwa boiska

Serwery tworzą klastry, które znajdują się w 25 lokalizacjach na całym świecie, w tym w kilku głównych: Mountain View w Kaliforni, Virginii, Atlancie, Dallas, Dublinie i Saint-Ghislain w Belgii. W 2009 Google planuje uruchomić kolejną, wartą 600 milionów dolarów serwerownię, w której pracować będzie aż 200 osób. Powstaje ona w wietrznym stanie Iowa, aby wykorzystać ekologiczne źródło zasilania – wiatraki. Bo utrzymanie w ciągłej pracy takiej masy serwerów wymaga ogromnego zasilania, co kosztuje i jest nieekologiczne. Może się to wydać zaskakujące, ale między wyszukiwarką a ekologią istnieje bardzo bliski związek. Jeśli przyjąć, że zasilanie jednego serwera kosztuje 500 dolarów rocznie, to okaże się, że w tym okresie Google wydaje na prąd 225 milionów dolarów. Warto dodać, że rozmieszczenie klastrów w różnych regionach świata chroni wyszukiwarkę przed katastrofami naturalnymi typu trzęsienia ziemie.

Jedna z dwóch serwerowni Google w pobliżu Dallas. Podobno może pomieścić kilkadziesiąt tysięcy serwerów.

Jedna z dwóch serwerowni Google w pobliżu Dallas. Podobno może pomieścić kilkadziesiąt tysięcy serwerów.

W 2006 roku pojawiły się informacje o centrum obliczeniowym (data center), które Google budował w okolicach Dallas. Nieoficjalnie prasa donosiła wtedy, że ma ono wielkość dwóch boisk piłkarskich i dwie wieże chłodzące o wysokości czterech pięter. Jednym z powodów wyboru tej lokalizacja było sąsiedztwo elektrowni wodnej zapewniającej tanią i ekologiczną energię do zasilania serwerów.

W Dallas znajduje się dwie bliźniacze serwerownie. Według ocen ekspertów w każdej mieści się ok. 8200 szaf rakowych. Jedna szafa mieści serwery z 80 czterordzeniowymi procesorami, a więc 320 rdzeni. Po przemnożeniu daje to ponad 650 tysięcy rdzeni w każdej z tych dwóch serwerowni, razem 1,3 miliona. Prawdopodobnie serwery znajdujące się w Dallas są poza tym wyposażone w 4GB pamięci RAM oraz dwa dyski twarde 160 GB (w pojedynczym serwerze).

Prehistoria

Tak wygladały pierwsze serwery obsługujące w 1998 roku wyszukiwarkę Google.

Tak wygladały pierwsze serwery obsługujące w 1998 roku wyszukiwarkę Google.

Pierwsza serwerowania Google znajdowała się w Stanford University. W 1998 roku podstawową maszyną był serwer Sun Ultra II z dwoma procesorami 200 MHz i 256 MB RAM. Do niego podłączono dwie macierze dyskowe: jedną z trzema dyskami po 9 GB i drugą z sześcioma dyskami po 4 GB. Na tym serwerze działał tzw. pajączek (webcrawler), czyli oprogramowanie przeszukujące Internet i zbierające informacje o stronach WWW. Zebrane informacje stawały dla wyszukiwarki się źródłem wiedzy o zasobach Internetu. Oprócz tego były dwa serwery podarowane przez Intela. Miały na pokładzie po dwa procesory 300 MHz, 512 MB RAM oraz dziewięć twardych dysków o pojemności 9 GB. To one w większości przetwarzały zapytania internautów. Kolejną maszyną był serwer F50 IBM RS/6000 podarowany przez jego producenta. Miał 4 procesory, 512 MB RAM i 8 twardych dysków o łącznej pojemności 72 GB. Oprócz tego była jeszcze macierz dyskowa IBM z ośmioma dyskami po 9GB oraz domowej produkcji macierz z dziesięcioma dyskami SCSI o pojemności 9 GB każdy.

Gwałtowny rozwój

W porównaniu z obecnym stanem posiadania, początki Google były bardzo skromne – w 1998 roku wyszukiwarkę obsługiwało raptem kilka serwerów (patrz ramka „Prehistoria”). Jednak już w 2000 roku Google miało, jak się szacuje, bo oficjalnych danych nie ma, cztery serwerownie i 6000 serwerów. Każda z nich była w tamtym czasie połączona z Internetem łączem o przepustowości 2488 Mbit/s. A były to czasy, kiedy polscy internauci mogli korzystać głównie z modemów telefonicznych o przepustowości 56 Kbit/s. W marcu 2001, gdy Google miał ruch na poziomie 70 milionów odsłon dziennie, jego obsługę zapewniało 8000 serwerów. Taką informację ujawnił pragnący zachować anonimowość pracownik Microsoftu, który miał okazję zobaczyć jedną z serwerowni Google. Do 2003 roku przybyło kolejnych 15 tysięcy serwerów, choć inne źródła podają, że w tym czasie było ich już 100 tysięcy. W 2005 prawdopodobnie liczba serwerów wynosiła ok. 200 tysięcy. Z niepotwierdzonych informacji wynika, że 2006 roku Google miał ponad 450 tysięcy serwerów. Firma wydaje tak dużo na sprzęt (ok. 1,5 miliarda dolarów rocznie), że może wpływać na producentów, aby projektowali nowe urządzenia według jej potrzeb.

Dyskrecja Google nie jest przypadkowa, choć możemy tylko żałować, że nie chce chwalić się swoją infrastrukturą. Konkurencja, jak Yahoo czy Microsoft nie śpi, a stawka jest ogromna. Microsoft, marzący o dominującej pozycji w Internecie, dysponował w 2006 roku 200 tysiącami serwerów, z planami rozbudowany do 800 tysięcy serwerów w 2011 roku.

MapReduce

MapReduce to specjalne oprogramowanie, którego zadaniem jest lepsze przetwarzanie dużych ilości danych na wielu serwerach równolegle (parallel processing). System ten jest wykorzystywany do indeksowania, obliczania rankingu stron WWW (PageRank), obsługi serwisu Google Maps i wielu innych usług Google. Nie będziemy zapuszczać się w omawianie MapReduce, ale przyjrzymy mu się od strony ilości przetwarzanych danych, co dobrze pokazuje, jak szybko rozwija się Google (patrz tabela).

Dane przetwarzane w ramach MapReduce są dzielone na zadania (ang. job). We wrześniu 2007 zadania te liczyły łącznie 403,152 TB. Średnio jedno zadanie obsługiwały 394 maszyny, a na jego realizację potrzebowały 6 minut. Szacuje się, że sprzęt zaprzężony do realizacji jednego zadania jest warty ok. 1 miliona dolarów.

Zadania Sierpień 2004 Marzec 2006 Sierpień 2007
Liczba zadań (tys.) 29 171 2 217
Średni czas wykonywania (sek)634874395
Wejściowa ilość danych mapy (TB)3 28852 254403 152
Wyjściowa ilość danych mapy (TB)7586 74334 774
Wyjściowa ilość zredukowanych danych (TB)1932 9714 018
Średnia liczba serwerów na zadanie 157268394
Unikalne implementacje
Mapy39519584083
Redukcje26912082418

Operacje wykonywane przez Google są dzielone na zadania (ang. jobs). Tabela pokazuje ile takich zadań oraz jaka ilość danych w ich ramach jest przetwarzana.


Zobacz również