Kai įvedame norimą užklausą į „Google“ paieškos laukelį, kreipiamės į vieną didžiausių duomenų saugyklų visame pasaulyje. Dar įspūdingiau atrodo štai kas: tam, kad petabaituose informacijos būtų surastas atsakymas į mūsų klausimą, kompanijai „Google“ užtenka kelių sekundžių dalių. Štai jums dideli duomenys (angl. big data) visu gražumu!
Žinoma, atsakymas slypi ne tik išteklių paieškos procese, bet ir infrastruktūroje. Ir šioje srityje „Google“ ne tik atliko proveržį. Sprendimas, kurį pirmą kartą panaudojo ši paieškos sistema, tapo standartu daugeliui sėkmingų kompanijų, kurioms tenka dirbti su dideliais duomenimis, kurie dažnai būna ypač silpnai struktūruoti.
Kelias į galybės viršūnę
Kai 1998 metais Sergey Brinas ir Larry Page'as pateikė Stenfordo universiteto bendruomenės teismui „Didelės apimties paieškos sistemos anatomiją“, jie su savo prognozėmis buvo gana kuklūs, t.y. jie dar nelabai įsivaizdavo, kokius potencialiai milžiniškus duomenų kiekius apdoros jų „vaikas“.
Prie straipsnio pridėtame priede jie bando įvertinti užduočių apimtis, kurias teks apdoroti jų paieškos sistemai. Tarkime, sistemai būtina indeksuoti viską, ką JAV gyventojai (tuo metu jų buvo apie 250 mln.) internete sugeba parašyti per visus metus. Tarkime, kiekvienas amerikietis kiekvieną per dieną parašo apie 10 kilobaitų tekstinės informacijos. Tai reiškia, kad paieškos sistemai reikės „suvirškinti“ apie 850 terabaitų informacijos.
Būsimų milijardierių skaičiavimu, jei gerai žinomas Mūro dėsnis ir toliau galios, tai centralizuota skaičiavimų sistema, galinti apdoroti tokį duomenų masyvą ir prieinama savo kaina nedidelėms kompanijoms, galėtų atsirasti tik po 15 metų. Būtent todėl straipsnis baigiamas išvada, kad ateitis – tai paskirstyta tarp sistemų indeksacija.
Beje, tuomet abu „Google“ įkūrėjai skundėsi, kad įtikinti pasaulį naudoti paskirstytąsias sistemas yra labai sunku – juk daugybės mazgų administravimas pakankamai brangus dalykas.
Straipsnyje aptariami skaičiai žymiai viršijo tuometines „Google“ galimybes. Paieškos sistemos mažytis klasteris, patalpintas vienoje iš universiteto patalpų, tuomet saugojo vos 24 mln. puslapių ir indeksų bazę. Artimiausioje perspektyvoje vaikinai planavo turinį padidinti iki 100 mln. puslapių. Toliau jie negalvojo, ir, matyt, įsivaizduoti negalėjo, kad po 15 metų jų sistema sugebės apdoroti neįtikėtinus 24 petabaitų duomenų per dieną.
Unikaliam „Google“ produktyvumo lygiui nemažai įtakos turėjo pasiūlymas, kuris numatė, kad paieškos sistemų ateitis – paskirstytieji skaičiavimai.
Tokios kompanijos, kaip „Dell“ ir „Hewlett-Packard“, pardavinėjo galingus ir nuo įvairiausio pobūdžio gedimų apsaugotus klasterius. Tik „Google“ įkūrėjai, plėtodami savo sistemą, jais nepasinaudojo. Iš dalies dėl didelės kainos, tačiau daugiausia įtakos tam turėjo kruopštūs tyrimai, kuriuos atliko geriausi specialistai. Jie pademonstravo, kad su dideliais duomenimis geriausiai susidoros sąlyginai nebrangių kompiuterių masyvas, kuris veiks su atviro kodo sistemomis (pavyzdžiui, „Linux“).
Vis tik tam, kad visa tai iš tikrųjų taptų realybe, praktiškai visur reikės atsiriboti nuo tuo metu galiojusių standartų ir mąstymo šablonų.
„Google“ serveriai
Kai tik „Google“ savo paieškos efektyvumu ėmė lenkti visas tuomet egzistavusias paieškos sistemas, tapo aišku: S.Brino ir L.Page'o komandai iš tikrųjų pavyko įgyvendinti savo idėją. Beje, vaikinai savo minčių neslėpė, o aktyviai apie jas pasakojo mokslinių publikacijų puslapiuose.
Ką gi pavyko sukurti „Google“ komandai?
Pagrindiniu pasiekimu tapo architektūrinės piramidės sukūrimas. Tai buvo aparatinė-programinė duomenų saugojimo ir interneto turinio indeksavimo sistema, kuri suteikia galimybę ją plėsti praktiškai iki begalybės.
Piramidė susideda iš klasterių masyvo, kuriame kiekvieno mazgo pagrindą sudaro nebrangus ir toli gražu ne pats patikimiausias kompiuteris – „Google“ serveris. Jo architektūrą dar 2005 metais sukūrė talentingasis Ben Jai. Savo kūrinį, ilgai laikytą paslaptyje, jis vadino „Google“ „Manhatano projektu“. Ir ne veltui. Tuo metu, kai klasteriai naudojo sudėtingas rezervinio maitinimo sistemas, kiekvienas „Google“ serveris (2U formato) turėjo savo nuosavą 12 V bateriją.
Absurdas? Nieko panašaus. Šios nebrangios baterijos buvo montuojamos tiesiog serveryje ir tai leido daugybę kartų sumažinti „Google“ imperijos išlaidas aparatinei įrangai. Susitarti su motininių plokščių gamintojais (iš pradžių buvo naudojama „Gigabyte“ įranga), kad šie atliktų nedideles modifikacijas, buvo kur kas paprasčiau ir pigiau nei montuoti ypač daug vietos užimančias rezervinio maitinimo sistemas.
Jei ne pigi „geležis“, „Google“ negalėtų augti tokiu greičiu. Greitai kompanija turėjo kelis šimtus tūkstančių serverių. „Google“ duomenų apdorojimo centrai augo kaip grybai po lietaus. Buvo naudojami standartiniai konteineriai, skirti krovinių pervežimui jūros transportu. Jie būdavo aprūpinami serverių spintomis, kuriose tilpdavo 1160 serverių. Vienas toks konteineris suvartodavo apie 250 kilovatų energijos.
Iš esmės „Google“ paieškos sistema atlieka keletą nesudėtingų operacijų: „sandėliuoja“ interneto robotų atsiunčiamą turinį, suspaudžia jį ir jo pagrindu sukuria indeksų bazę. Paskirstytoji failų sistema visa tai padeda atlikti greitai ir efektyviai.
Serverio architektūroje naudojama rezervinė baterija, žinoma, labai sumažina finansines išlaidas. Tačiau koks tokios sistemos patikimumo lygis? Jei nutrūktų elektros tiekimas, toks serveris su viena baterija veiktų vos keletą minučių.
Ir tegul. Juk kitas „Google“ architektūrinės piramidės lygis – tai paskirstytoji failų sistema „Google File System“ (GFS). Ji kaip tik sukurta darbui tokiomis sąlygomis, kai aparatinės įrangos ir tinklo sutrikimai yra normalus reiškinys, o ne katastrofa.
„Google“ failų sistema
Kodėl „Google“ pasirinko gana sudėtingą kelią ir ėmėsi savo failų sistemos kūrimo? Kodėl nebuvo galima panaudoti jau paruoštų failų sistemų, pavyzdžiui, NFS arba AFS? Viską lėmė specializacija.
Taip, NFS – tai puiki, gerai plėtojama failų sistema. Tačiau ji yra bendros paskirties sistema, skirta darbui su failais, kurių dydis sudaro nuo kelių baitų iki šimtų terabaitų. Tuo tarpu GFS yra siaurai specializuota ir nugali universalius sprendimus būtent tose užduotyse, kurios reikalingos „Google“.
Iš esmės „Google“ paieškos sistema atlieka keletą nesudėtingų operacijų: „sandėliuoja“ interneto robotų atsiunčiamą turinį, suspaudžia jį ir jo pagrindu sukuria indeksų bazę. Paskirstytoji failų sistema visa tai padeda atlikti greitai ir efektyviai.
Šio projekto ideologas Howardas Gobioffas ir jo komanda viešai papasakojo apie GFS dar 2003 metais. Tuomet pasaulis buvo nustebintas sprendimu paskirstytų skaičiavimų aplinkoje naudoti centralizuotą planavimą. Antra vertus, nieko čia nuostabaus. Nepatikimai aparatinei aplinkai visai nebūtina kurti sudėtingų planavimo įrankių, kurie išskirstytų duomenų masyvus į galybę serverių.
GFS darbo algoritmas taip smarkiai skiriasi nuo egzistuojančių tradicinių failų sistemų veikimo, kad „Linux“ valdomi „Google“ serveriai kreipiasi į GFS apeidami „Linux Virtual File System“ tvarkyklę, kuri paprastai ir naudojama tokiais atvejais. GFS veikia tarsi savarankiškas vienetas ir sąveikauti su ja tenka per specialią programinę sąsają.
Žinoma, GFS realizacija gigantiškame nebrangių serverių masyve yra nuostabus sprendimas. Tačiau „Google“ architektūrinė piramidė turi dar vieną kozirį.
„MapReduce“
Efektyviai saugoti indeksų bazę paskirstytoje ir linkusioje gesti aplinkoje, žinoma, yra puikus dalykas, tačiau bet kurios paieškos sistemos esmė yra greitas ir ekonomiškas algoritmas, kuris tą indeksų bazę sukuria. Juk galiausiai būtent dėl jos mūsų esminiai žodžiai paieškos laukelyje pavirsta nuorodomis į konkrečius puslapius.
Ir čia „Google“ sunku nevadinti pradininku. 2004 metais Jeffrey Dean ir Sanjay Ghemawat sukurta duomenų apdorojimo dideliuose masyvuose technologija, vėliau pavadinta „MapReduce“, faktiškai tapo didelių duomenų sinonimu.
Linijinės užduoties indeksavimo idėja buvo pritaikyta išskirstytai aplinkai, taigi „MapReduce“ kūrėjai pasiekė, kad sudėtingas indeksų bazės sukūrimo procesas taip pat būtų vykdomas paskirstytai.
„MapReduce“ – tai firminis sprendimas, tačiau idėja, kuri sudaro jos pagrindą, tokia permatoma ir efektyvi, jog ją staigiai perėmė kiti kūrėjai. Bene populiariausia šios technologijos alternatyva tapo projektas „Hadoop“, kurį savo laiku pradėjo „Yahoo“, o dabar jį plėtoja Atvirojo kodo bendruomenė.
Didelių IT sistemų pasaulyje buvo priimta patikimą duomenų saugojimą patikėti specialiai sukurtiems klasteriams-saugykloms, o operacijos jose buvo vykdomos pasitelkiant didelės galios skaičiavimų klasterius. Tačiau „Google“ turėjo savo požiūrį. Kodėl nepanaudojus vieną ir tą patį klasterį turinio saugojimui ir indeksų bazės sukūrimui?
Būtent todėl failų sistema GFS ir technologija „MapReduce“ korporacijos „Google“ klasteriuose ypač glaudžiai integruotos. Vis tik „Google“ inovacijų sąrašas šiomis didelių duomenų apdorojimo technologijomis nesibaigia. Dar yra ir kitų (pavyzdžiui, duomenų bazė „BigTable“, kuri įkvėpė „NoSQL“ kūrėjus), kurios dabartinei „Google“ leidžia vadintis neginčijama paieškos sistemų lydere visame pasaulyje.