Вы находитесь на странице: 1из 9

Historia

Stanfordeko Unibertsitatea

Google-ko bi sortzaileak elkarrizketa batean

Google enpresa 1998 urtean sortu zen. Bere sortzaileak Larry Page eta Sergey Brin izan ziren. Sortzaileak Stanfordeko Unibertsitateko Konputazio Zientzietan doktoretzako ikasleak ziren garai hartan eta gaur egun lehendakaria eta teknologia alorreko presidentea dira, hurrenez hurren. Hasiera batean BackRub izena eman zioten proiektu bat garatu zuten. Bilatzaile bat zen hau ere eta Java eta Python lengoaietan idatzita zegoen. Arkitektura sinplea zuen. Alde batetik, bilatzaileak Linux sistema eragilea zuten Sun Ultra eta Intel Pentium makinen gainean ibiltzen zen eta, bestalde, bilatzailearen datu basea Sun etxeko "Ultra II" izeneko ordenagailu batean kokatuta zegoen eta disko gogorrak 28 GBeko edukiera zuen. Gerora Google izena jarri zioten baina Stanfordeko Unibertsitatean (Kalifornia, Ameriketako Estatu Batuak) erabiltzen zenez, unibertsitateko domeinuaren azpian zegoen http://google.stanford.edu helbidean hain zuzen ere. www.google.com domeinua 1997an erregistratu zuten eta Google inc. enpresa 1998an sortu zen.

Arkitektura
Google-n, beste bilatzaileetan ez bezala, elkar konektatutako PC arruntak erabiltzen ditu hasieratik. Zerbitzari handiak erabiltzean sor daitezkeen arazoak (karga handiko momentuetan, erantzuna moteldu daitekeelarik) ekidin nahian. Hori dela eta, sistema banatu bat erabiltzen du Google-k, gainera irtenbide honek hedagarritasun handiagoa ematen du, kostuak gutxituz aldi berean.

Google-k ez du informazioa publiko egin, baina estimatzen da 2006an 4.500 zerbitzari zituela clusterretan mundu osoan zehar banatuta. Erabiltzen dituzten ordenagailuek errendimendu handia eskaintzen dute. Izan ere, ordenagailu hauek estimatzen da %90-eko eraginkortasuna dutela. Hau da, Google-k erabiltzen dituen ordenagailuei etekin handia ateratzen die. Enpresak egitura nagusia galderak erantzuteko prestatua dago, indize eta dokumentuen atzipenak gehienetan irakurketak dira. Eguneraketak ez dira ohikoak irakurketen aldean. Gainera, eguneraketa bat segurtasunez egin daiteke, berau egiten ari den bitartean galdera bat etortzen bada urrutiko beste zerbitzari batera birbideratu daitekeelako. Printzipio honek datu-baseen sendotasun zorrotza alde batetara uzten du, baina eraginkortasuna hobetzen du. Bilatzailean egiten den eskaera bakoitza modu independente batean tratatzen da. Era honetan bertako makinek paraleloan exekuta ditzakete eskaera guztiak, aldi berean.
Zerbitzari motak

Jarraian Google osatzen duten zerbitzari nagusiak azaltzen dira:

DNS zerbitzariak: erabiltzailearen DNS eskaera bat zerbitzatzen du, modu adimentsu batean munduan zehar karga banaketa eginez. Eskaera egin den tokitik gertuen dagoen zerbitzariak erantzungo dio. Web zerbitzariak: eskaera baten exekuzioa koordinatzen du eta emaitza gisa HTML orri bat sortzen du. Informazio biltze zerbitzariak: web osoa miatzen eta bertako indize eta dokumentuak eguneratzen ari dira une oro, balio bat emanez orri bakoitzari Google-ren algoritmo baten arabera. Indize zerbitzariak: zerbitzari bakoitzak indize sarrera multzo bat du. Indize lista bat itzultzen du. Disko edukiera txikiagoa duten arren CPU errendimendu hobea behar dute makina hauek. Dokumentu zerbitzariekin batera sakonago aztertuko ditugu behean. Dokumentu zerbitzariak: bertan dokumentuak gordetzen dira. Dokumentu bakoitza dozenaka zerbitzaritan gordetzen da. Zerbitzari hauek disko edukiera handia behar dute. Iragarki zerbitzariak: iragarkiak azaltzeaz arduratzen dira, AdWords eta AdSense zerbitzuak ematen dituzte. Ortografia zerbitzariak: gomendioak ematen ditu galderari buruz.

Arkitektura logikoa

Googlek zerbitzariak egitura fraktalean banatzen ditu, googleplex izena eman diotena. Hau da, ordenagailu bakar baten ezaugarriak cluster osoaren antzekoak dira, clusterrenak datu zentroenak eta datu zentroenak googleren egitura orokorrenarena (hainbat datu zentro).

Galdera baten prozesamendua

Erabiltzaileak galdera bat egiten duenean (adib: http://www.google.com/search?q=wikipedia) lortu behar duen lehenengo gauza web zerbitzariaren IP helbidea da. www.google.com makinaren izena IP helbide konkretu batengatik aldatu behar da. Jasaten dituen galdera pilari aurre egiteko web zerbitzaria ez da bakarra eta hainbat cluster ditu banatuta munduan zehar. Cluster bakoitzak bere barnean ehunaka makina ditu eta munduan zehar banatuta daude. Karga banaketa egiteko DNS zerbitzuan oinarritzen da, erabiltzaile bakoitzari geografikoki gertuen dagoen clusterrak erantzungo diolarik. Modu honetan galdera egiten duenetik erantzuna jasotzen duen arterako denbora (ingelesez round-trip time) txikitzea lortzen da. Behin IP helbidea erabiltzaileak duela, web nabigatzaileak HTTP eskaera bat bidaltzen dio clusterrari, bakarrari. Momentu honetatik aurrera cluster honek bakarrik tratatuko du erabiltzailearen eskaera. Cluster bakoitzean karga banaketa hardwarean oinarritutako sistema baten bidez egiten da. Hardwarean oinarritutako protokolo batek ikusten du zein Google Web Zerbitzari (GWS, Google Web Server) dagoen libre eta horien artean banatzen du eskaera. Eskaera jaso ondoren GWS makina batek koordinatzaile lanak egingo ditu eta erantzuna HTML orri batean sartuko du, erabiltzailearen nabigatzaileak erakutsi dezan. Eskaera bat bi zati nagusitan banatzen da: lehenengoan, indize zerbitzariek parte hartzen dute eta bigarrenean dokumentu zerbitzariek, indize zerbitzariek emandako emaitzekin.

Indize zerbitzariek alderantzikatutako indize bat kontsultatzen dute. Egindako galderako hitzak hartu eta hainbat dokumenturekin parekatzen dituzte. Orduan, indize zerbitzariek esanguratsuak diren dokumentuak hartzen dituzte. Gainera, dokumentu bakoitzari duen garrantziaren araberako balio bat ematen zaio. Zenbaki hauek erantzunak zein ordenatan erakutsiko duen baldintzatuko du. Erabiltzen diren datuen tamaina ikaragarrian dago bilaketaren zailtasuna. Dokumentu gordinek hainbat hamarnaka terabyteko (TB) edukiera dute, batere konprimitu gabe. Beraz, modu eraginkorrean atzitzeko alderantzikatutako indizeak erabiltzen dira. Indize hauek ere, bere baitan hainbat terabyteeko edukiera dute. Zorionez, galdera erraz paralelizatu daiteke indizea hainbat zatitan eginez (index shards), eta bakoitzak dokumentuaren zorizko zati bat aztertuko du. Zati bakoitza makina batek (edo gutxi batzuek) zerbitzatzen du eta indize orokorrak sarrera bat du makina (edo makina talde) bakoitzeko. Azken finean, galdera bakoitza makina batera doa. Indize zerbitzari honek karga banaketa egiten du. Makina batek huts egiten badu, aurretik karga banaketa egin denez, makina hau zerbitzutik kanpo geratuko da eta berpizten saiatuko da, osorik edo zati batean gutxienez. Huts egiteak irauten duen bitartean sistemaren ahalmena gutxitu egingo da, makina horrek (edo horiek), ordezkatzen zuten proportzioan. Hala ere, zerbitzuak erabilgarri egoten jarraituko du, eta indizea guztiz erabilgarri egoten jarraituko da.

Googleen bilaketa baten arkitektura gaztelaniaz.

Galderaren tratamenduko lehenengo zati honen emaitza ordenatutako dokumentuen identifikadore lista bat da (docids, izena eman diotena). Eta bigarren zatia emaitza hauetatik abiatuko da. Bigarren fasean, dokumentu zerbitzariek (docservers) hartzen dute parte. Dokumentu zerbitzari hauek Web osokorako atzipena izan behar dute. Atzipena ez da zuzenekoa eta gordetzen dena Webaren kopia bat da, latentzia txikiko atzipena izan dezan. Gainera, erreplikazioak errendimendua eta eskuragarritasuna eskaini behar duenez, Google-k dozenaka kopia gordetzen ditu bere clusterretan barrena. Aurreko fasean bezala, zati honetan ere lana banatzeko estrategia erabiltzen da. Dokumentuak zoriz banatzen dira zerbitzarien artean, helburu bakoitzeko hainbat

zerbitzari errepikatu daude erantzuna emateko prest eta lana bideratzea karga banaketa bidez egiten da. Bi fase nagusi hauez gain beste hainbat lan egiten ditu Google-ko web zerbitzariak galdera bat jasotzen duenean. Hala nola, galdera zuzentzaile ortografiko bati bidaltzen dio baita iragarki zerbitzu bati ere, egoki bada iragarkiak jar ditzan. Azkenean, fase guztiak bukatu direnean google web zerbitzariak HTML orri bat sortzen du eta erabiltzailearen nabigatzailera bidaltzen du
Hasierako hardwarea

Google-k erabili zuen lehenengo hardwarea Stanfordeko Unibertsitatean zegoen eta ondorengo ezagugarriak zituen:

2 prozesagailuko Sun Ultra II 200 MHz eta 256 MB memoria RAM. 2 ordenagailu 2 prozesagailukoa bakoitza. Prozesagailuak Pentium II Server 300 MHz, 512 MB RAM eta 9GB disko gogor ordenagailu bakoitzak. IBM-k emandako F50 IBM RS/6000, 4 prozesagailukoa, 512 MB memoria eta 8 x 9 GB disko gogor. 2 kutxa gehigarri, 3 x 9 GB disko gogor eta 6 x 4 GB disko gogor, hurrenez hurren. Hauek Sun Ultra II-ra lotuta zeuden. IBMek emandako kutxa bat disko gehigarriekin, 8 x 9 GB. Beraiek egindako kutxa bat. Bertan 10 x 9 GB SCSI disko gogorrak gordetzeko

Egungo hardwarea

Gaur egun Googlek makina askoz konplexuagoak erabiltzen ditu, hasierakoarekin konparatuta. Hala ere, PC arruntetan oinarritzen da. PC arrunt hauek multzokatu egiten ditu rack-etan. Eta rack hauek clusterrak osatzen dituzte. Egoitza nagusiak Kalifornian, Atlantan, Dublinen, Oregonen eta Belgikan ditu eta bertan gordetzen dira Googleen ordenagailu hauek. Googlek erabiltzen dituen rack-etan 40tik 80ra ordenagailu egoten dira. Ordenagailuak x86 arkitekturako zerbitzariak dira eta prezio/errendimendu erlazioa hobesten denez, ordenagailuaren ezaugarri gehienak erdi-mailako PC baten antzekoak dira. Aldiz, disko gogorrak bereziak erabiltzen dituzte, datu andana gordetzeko. Hainbat CPU generazio aldi berean lanean daude, prozesagailu bateko Intel Celeron (533 MHz), Intel Pentium III dual (1.4 GHz)... Zerbitzari bakoitzak 80 GB-eko IDE disko gogor bat edo gehiago du. Orokorrean indize zerbitzariek dokumentu zerbitzariek baino disko gogor edukiera txikiagoa dute CPU lan gehiago egin behar dutelako. Ordenagailu bakoitzak 2-4 GB memoria nagusia du. Rack barruan dauden zerbitzariak 100 Mbps bi Ethernet switch-en bidez konektatuta daude eta rack guztiak elkar konektatzeko gigabit-eko konexioak erabiltzen dira. Gastuak kalkulatzerakoan PCetan oinarritutako sistemak askoz merkeagoak dira zerbitzari dedikatuak baino. Adibide bat ematearren, Googlek erabiltzen duen rack batek 278.000 dolarretako kostua izan dezake, ondorengo ezaugarriekin:

176 2-GHz Xeon 176 GB RAM 7 TB disko edukiera

Aldiz, zerbitzari batek 758.000 $ balio ditu eta ezaugarri hauek ditu:

8 2-GHz Xeon 64 GB RAM 8 TB disko edukiera

Ondorioz, multiprozesadoreko zerbitzaria 3 bat aldiz garestiagoa da, 22 aldiz CPU gutxiago du eta 3 aldiz memoria gutxiago du, antzeko disko edukierarekin. Zerbitzarien gastua altuagoa da banda-zabalera eta fidagarritasun hobea eskaintzen dutelako. Baina, Googlek ez ditu hain ezaugarri zorrotzak behar. Merkeak izanda hainbat arazo sortzen dira P-etan oinarritutako rack-etan. Hala ere, Google prestatuta dago akats hauei aurre egiteko modu eraginkorrean eta inongo pertsonaren esku hartzerik gabe.

Fitxategi sistema

Google-en 1990ko zerbitzaria.

Googlek informazioa gordetzeko bere fitxategi sistema propioa garatu du. Fitxategi sistema honi Google File System (GFS) izena eman diote. GFS egokia da, informazio datu handiak sistema banatu batean gordetzeko. GFSk sistema banatuetako aplikazioek bezala, eraginkortasuna, hedagarritasuna, berrerabilpena eta eskuragarritasuna ditu helburu.

Sortu behar diren datuak ehunka (edo milaka) ordenagailu arruntetan gorde behar dira. Hori dela eta, posible da ordenagailu hauetako batzuek huts egitea (eta huts egitetik berreskuratu ezin izatea). Baina, birtualki kalitatea bermatu beharra dago. Berreskuratu ahal izateko monitorizazio jarraitua, errore detekzioa, akatsekiko tolerantzia eta berreskuratze automatikoa sistemaren barnean egon behar dira. Bestalde, gorde beharreko datuak ikaragarri handiak dira, erabiltzaile arrunten fitxategiekin alderatuz. Hainbat Terabyteetako (TB) fitxategiak gorde behar dira eta hauek modu berezi batean tratatu behar dira eraginkorra izango bada. Nahiz eta 100 MB baino txikiagoak diren fitxategiak onartu behar diren, hauek atzitzeko ez dute inolako optimizaziorik erabiltzen. GFSak hainbat makinatan daude. Horietako handienek 1000 nodo eta 300 TBetako datuak gordetzeko ahalmena dute. Makina hauek modu konkurrentean ehunka erabiltzailek atzitzen dute makina ezberdinetatik.
Interfazea

GFSek erabiltzen duen interfazea ohikoa da. Fitxategiak hierarkikoki banatuta daude eta helbidearekin (path-name) identifikatzen dira. Fitxategi hauek ohikoak diren eragiketak onartzen dituzte; irakurri, idatzi, sortu, ezabatu, iriki, itxi... Horretaz gain, GFSek snapshot eta record append eragiketak ahalbidetzen ditu. Snapshot eragiketak fitxategi baten kopiak sortzen ditu eta record append eragiketak berriz, hainbat bezerok fitxategi berdinean batera informazioa txertatzea ahalbidetzen du beti ere atomizitatea bermatuz.
Arkitektura

Fitxategiak nagusia den konputagailu batean eta hainbat morroitan banatzen dira. Konputagailu bakoitzak Linux zerbitzari bat du eta erabiltzaile mailako prozesu bat sortzen du. Fitxategiak tamaina finkoko zati edo chunk-etan zatitzen dira. Fidagarritasuna bermatzeko zati horietako bakoitza hainbat zerbitzaritan gordetzen da, zerbitzari hauei chunservers deitzen zaie. Zerbitzari nagusiak fitxategi sistemaren informazio guztia gordetzen du, hala nola, baimenak, zati bakoitzaren kokapena... Periodikoki zerbitzari nagusia chunk zerbitzariekin komunikatzen da beraien uneko egoera ezagutu eta beharra egonez gero informazioaren eguneraketa bat egiteko.
Chunk edo zatien tamaina

GFSen sortzaileek chunk bakoitza 64 MBekoa izatea erabaki zuten, hau ohiko fitxategisistemen blokeen tamaina (1024 KB) baino askoz handiagoa da. Tamaina honek hainbat abantaila eskaintzen ditu. Lehenik, bezeroa eta zerbitzari nagusiaren arteko elkarrekintza murrizten du, idazketa eta irakurketa prozesuetan chunkaren kokapena jakiteko zerbitzari nagusiari egin beharreko eskaerak gutxitzen baititu. Bigarrenik, bezero eta zerbitzari nagusiaren arteko eskaerak gutxiago izanik, sareko trafikoa gutxitzen da. Eta azkenik, zerbitzari nagusiak chunk edo zatien inguruan

gorde behar duen informazioa gutxiago da, zati kopurua txikiagoa izanik horien guztien informazioa jakiteko byte gutxiago gorde behar baitira. Bestalde blokeen tamaina hain handia izateak baditu bere desabantailak. Sarritan gertatuko da, fitxategi batek bloke bakarra izatea. Bezero kopuru handi batek fitxategi hori eskuratu nahi badu, bloke osoa lortu beharko dute eta horren ondorioz bloke hori gordetzen duen chunk zerbitzariaren gainkarga sor daiteke. Hau saihesteko, chunk edo zati erreplikak hainbat zerbitzaritan gordetzen dira, lan karga banatu ahal izateko.
Sendotasuna

Fitxategien gaineko aldaketak atomikoak dira. Ekintza hauek zerbitzari nagusiak soilik gauzatzen ditu horrela atomizitatea eta zuzentasuna bermatzen direlarik. Fitxategi baten aldaketaren ondoren, fitxategiaren egoera egin den aldaketa hori arrakastatsua edo edo okerra izan denaren araberakoa da. Fitxategiaren zati bat sendoa izango da baldin eta bezero guztiek informazio berdina ikusten badute, irakurtzen ari diren erreplika desberdina izanda ere. Aldaketa bat arrakastatsua eta konkurrenteki inolako interferentziarik gabe egin bada, aldatutako blokea definitua dagoela esaten da eta honek sendoa izatea inplikatzen du: uneoro bezero guztiek aldaketak egindakoa ikusiko dute. Konkurrenteki egiten diren aldaketek, blokea definitu gabe bezala uzten dute baina sendoa izaten jarraitzen du: bezero guztiek informazio bera ikusiko dute, baina ez da ziurtatzen aldaketa guztiek egindakoa islatuko denik. Arrakastatsua izan ez den aldaketa batek, bloke bat sendotasunik gabe uzten du: bezero desberdinek informazio desberdina ikus dezakete.
Hutsegite tolerantzia

Zerbitzariek izan ditzaketen arazoen aurrean, sistemak erantzunak ematen jarraitzeko bi estrategia nagusi erabiltzen dituzte: berreskuratze azkarra eta erreplikazioa. Berreskuratze azkarraren funtsa, zerbitzari nagusia eta chunkserverrak beraien egoera berreskuratzeko diseinatuak daudela da, berdin izanik zein arrazoirengatik huts egin duten, hau da, gai dira huts egin duten une berean zuten egoera berdinean berriro lanean hasteko. Erreplikazioari esker, zati edo chunk bakoitza hainbat chunserverretan erreplikatzen da. Zerbitzari nagusia arduratzen da sortuta dauden erreplikak klonatu eta zati bakoitza kopuru egoki batean mantentzeaz hainbat chunserverretan, hauetakoren batek edo batzuek huts egiten badute chunk edo zati horiek eskuragarri egon daitezen. Horretaz gain, zerbitzari nagusiaren egoeraren erreplika ere egiten dira. Zerbitzari honen erregistro fitxategiak (log) hainbat makinatan gordetzen dira. Aldaketa bat commit bezala onartuko da baldin eta zerbitzari nagusiaren erreplika guztietako erregistro fitxategien edukia erreplika guztietako disko lokaletan idatzi izan bada.

Softwarea

Linuxen ikurra

Googleko ordenagailuek Linux sistema eragilea dute instalatuta. 1999tik aurrera RedHat banaketa erabiltzen dute. Bilaketa bat egiterakoan milisegundo batzuetan ebatzi behar da. Bilaketa modu eraginkor batean egiteko Google etxeak PageRank izenarekin batailatu duen teknologia bat erabiltzen du. Honek algoritmo bat inplementatzen du. Algoritmo honetan 2000 miloi sarrera eta 500 miloi aldagai izaten dira kontuan. Algoritmo honetan estekak izaten dira kontuan. Esteka hauek garrantziaren arabera antolatzen dira. Antolaketa hau egiteko esteka bakoitzak balorazio bat du. Balorazio altu bat izateko botoak lortu behar dira. Botoak irabazteko esteka batek beste batek atzitu behar du. Hau da, A-tik B-rako esteka bat badago B-k boto bat jasotzen du. Era berean, botoa ematen duten orri guztiek ez dute garrantzi berdina, orri batzuen botoek indar gehiago dute. Azkenean, bilaketa baten ondoren, balorazio altuena lortu duten emaitzak azaltzen dira aurrena. Prozesu honetan gizakiak ez du eskurik sartzen eta modu automatikoan ateratzen dira emaitzak.

Вам также может понравиться