Google keittää kahvia



Olen viime aikoina tutustunut Googlen uuteen datatyökaluun Percolatoriin. Se onkin erikoinen kone, vahvasti C-luokkaa.

Mennään ajassa kuusi vuotta taaksepäin. Google julkaisee MapReduce-laskentamallin ja kertoo toteuttaneensa indeksointijärjestelmänsä sen päälle. Sen lisäksi M/R luikertelee osaksi lähes jokaista Googlen merkittävää tuotetta. Googleplexin ulkopuolella MapReduce todetaan skaalautuvuudeltaan hyväksi ja avoimen lähdekoodin mullasta ponnistaa Hadoop — MapReduce meille muille.

Nyt kuitenkin syyskuussa 2010 Google paljastaa, että heidän uusi indeksointijärjestelmänsä ei enää käytäkään MapReducea vaan upouutta Percolator-nimistä järjestelmää. Mitä ihmettä? Onko taivas pudonnut? Onko MapReduce out ja Percolator in?

Vastaus ei ole aivan yksinkertainen. Lainaan Ricky Ho:lta analyysiä siitä, milloin Hadoopia/MapReducea ei kannata käyttää:

  • Perform online data access where low latency is critical
  • Perform random ad/hoc processing of a small subset of data within a large data set
  • Perform real-time, stream-based processing where data is arrived continuously and immediate processing is needed.

Googlen hakurobotit päivittävät vuorokauden aikana noin 5-10% kaikista varastoiduista sivuista. Tietoa tulee jatkuvasti pienissä erissä robottien kulkiessa webin halki. Ja olisihan oikein mukavaa, että sivujen muutokset näkyisivät hakukoneessa heti eivätkä vaikkapa viikon päästä.

MapReduce, vaikka onki hyvä työkalu moneen dataintensiiviseen ongelmaan, ei erityisen hyvin sovi alkuperäiseen käyttötarkoitukseensa. Edes Googlella ei ole käytössään kristallipalloa.

Vaan asiaan. Google julkaisi kuun alussa kuvauksen uudesta järjestelmästään. Itse paperi on kirjoitettu hyvin tiiviiseen tyyliin, mutta sen salaisuudet aukesivat muutaman tunnin työllä. Registerin ja InfoQ:n tiivistelmät voivat mahdollisesti avittaa sunnuntaitiedemiestä.

Hyvin tiivistettynä Percolatorissa on kolme mielenkiintoista ratkaisua.

  • Indeksin konsistenssin säilyttämiseksi Bigtable-tietokannan päälle rakennettiin useamman rivin kattavat transaktiot
  • Datan ohjailua varten lisättiin ns. observerit, jotka käynnistävät (laiskasti) laskennan seuraavan vaiheen syöterivien muuttuessa.
  • Lukko- ja aikaleimapalvelut, joiden avulla edelliset pysyvät ruodussa.

Percolator tuo hieman järjestystä Bigtablen anarkiaan ja ottaa askeleen perinteisempien tietokantojen suuntaan. Ironisesti Googlen insinöörien oli tarkoitus lisätä Bigtableen laajempi transaktiotuki, mutta se jätettiin pois tarpeettomana.

Suorituskyvyltään Percolatorin päälle tehty indeksointijärjestelmä (koodinimeltään Caffeine) on MapReduce-serkkuaan huonompi. Se pystyy kuitenkin käsittelemään sivut heti, kun ne tulevat hakuroboteilta ja saa yksittäisen sivun putken läpi noin 100 kertaa nopeammin kuin M/R-pohjainen indeksoija. Tämä merkittävä latenssiero selittyy kahdella tekijällä. Ensiksikin Percolatorin ei tarvitse käsitellä koko sivuvarastoa kerralla. Toisekseen MapReducessa laskentavaihe ei voi alkaa ennen edellisen päättymistä. Vanhemmassa järjestelmässä oli 100 perättäistä vaihetta, jolloin yksittäiset viiveet alkoivat kasautua. Fillarilla pääsee autoa nopeammin, jos auto jää jumittamaan jokaiseen liikennevaloon.

Percolator on myös vähentänyt liikkuvien osien määrää. Sadan MapReduce-askeleen sijaan Caffeine tarvitsee vain 10 observeria. Yksittäinen Percolator-kone on myös vaadittavien softakomponenttien osalta kohtalaisen yksinkertainen, mikä helpottaa ylläpitoa.

Veikkaan, että tämä toteutuksellinen yksinkertaisuus johtaa Percolatorin ideoiden leviämiseen. MapReducen laskentamalli on teoreettisesti miellyttävä. Worse is Better -filosofian mukaan kuitenkin Percolatorin observerit ja multirow locking löytävät tiensä Hadooppiin ja moneen muuhun työkaluun. Tämä siitä huolimatta, että mikään ei estä käsistään kätevää koodaajaa luomasta vaikkapa kolmen prosessointivaiheen silmukkaa…

Mikään “MapReducen tappaja” Percolator ei ole. Kummallakin on omat ekologiset lokeronsa, joihin ne sopivat mainioisti. Kirjoittajat toteavat jo paperin etusivulla, että Percolatoria ennen tulisi harkita tavanomaisia tietokantoja, Bigtablea tai MapReducea. (Vaihda näiden tilalle oma vapaa tai kaupallinen suosikkisi, jos et ole Googlella töissä.) Ihan heti en suosittele oman kahvinkeittimen rakentamista. Vapaita vaihtoehtoja ilmestynee nopeasti ja kunkin työkalun vahvuudet paljastuvat ajallaan.

Tämän artikkelin on kirjoittanut Antti Rasinen ja sitä ovat sittemmin muokanneet muut Codenton työntekijät.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *