Facebook: post-zoekfunctie Graph Search zou 700 terabyte in ram innemen

Facebook liep tegen problemen aan bij het integreren van de post-zoekfunctie in Graph Search. De site gebruikt een combinatie van flashgeheugen en werkgeheugen om de miljard dagelijkse posts en in honderden terabytes aan data te indexeren en snel doorzoekbaar te maken.

Facebook maakte het begin deze oktober mogelijk om posts te doorzoeken via Graph Search. In een blogpost legt Ashoat Tevosyan van het zoekteam van Facebook uit dat het project twee jaar in beslag nam en dat het bedrijf tegen complexe problemen aanliep: "Het was een flinke uitdaging aangezien er elke dag een miljard posts worden toegevoegd, de index al meer dan een biljoen posts bevat en dit honderden terabytes aan data betreft."

Tevosyan beschrijft dat Facebook 70 verschillende soorten data onderscheidt en indexeert zoals tijd, locatie en tags. Facebook vertrouwt hiervoor op MySQL en slaat de data op in een HBAse-cluster. Met behulp van Hadoop Map/Reduce wordt de grote hoeveelheid ruwe data parallel omgezet naar een zoekindex, zodat Facebooks zoekinfrastructuur Unicorn ermee aan de slag kan.

Telkens als een gebruiker een nieuwe post maakt, een bestaande post aanpast of een post verwijdert, vindt er een aanpassing bij de MySQL-database plaats om de index te updaten, waarbij Facebook via verschillende technieken code-duplicatie probeert te voorkomen. Voor de komst van de postzoekfunctie in Graph Search konden de zoekindexes van Facebook geheel vanuit werkgeheugen geserveerd worden. De index van de nieuwe zoekfunctie zou echter 700 terabyte aan ram in beslag nemen. Het grootste deel van de index is daarom in flashgeheugen opgeslagen. Om de zoekprestaties op peil te houden worden de meest opgevraagde datastructuren wel in ram geplaatst.

Om de gebruiker relevante zoekresultaten te tonen maakt Facebook gebruik van query rewriting, een soort voorselectie alvorens de daadwerkelijke zoekactie wordt uitgevoerd. Daarnaast is er dynamic result scoring voor het rangschikken van resultaten achteraf op basis van informatie in de documentdata. Volgens Tevosyan is het project begonnen als Hackathon-project en is het meeste werk het afgelopen jaar door 'enkele dozijnen' ontwikkelaars verricht.

Door Olaf van Miltenburg

Nieuwscoördinator

25-10-2013 • 14:22

70 Linkedin

Reacties (70)

70
61
34
4
0
4
Wijzig sortering
Kost al dat flashgeheugen dan niet bakken veel geld ? Wel hoedje af dat ze dit alsnog gerealiseerd hebben _/-\o_
700TB = 716800 GB.
De goedkoopste SSD per GB in de pricewatch kost €0,495 per GB.
Als je ze voor normale winkelprijzen zal kopen betaal je dus €354,816 voor je SSD's.

Uiteraard stel Facebook bepaalde eisen aan hun SSD's, maar tegelijk kunnen ze ze per pallet inkopen, dus zal de prijs per stuk een enorm stuk omlaag kunnen.

Het zou me niks verbazen als ze voor 'slechts' een half miljoen euro 1500TB aan SSD ruimte kunnen aanschaffen, en dat is voor een bedrijf als Facebook een peuleschil :)
Ik ga er vanuit dat ze van alle data wel meerdere kopieën hebben en aan load balancing doen. Maar dan nogm de hardwarekosten zoals je ze berekent vallen me alleszins mee. Zelfs als je het maal een factor 1.000 doet, dan is het bedrag (350 mio) voor een bedrijf met een waarde van tientallen miljarden nog een goede investering. Zoeken is een must-have.

Wel vraag ik me af of een totaal andere oplossing niet mogelijk was geweest. Google heeft toch ook niet alles in flash geheugen staan?

[Reactie gewijzigd door pietje63 op 25 oktober 2013 15:10]

natuurlijk zijn er andere oplossingen, het is maar wat de beste afweging is tussen snelheid, capaciteit, duurzaamheid, redundantie, interoperabiliteit, compatibiliteit, kostprijs, ... Je kan nooit op elk vlak het beste hebben en ga er maar van uit dat de mensen die deze keuze gemaakt hebben meer dan gekwalificeerd genoeg zijn om dit te doen
Dus 3,5 ton voor je SSD's, zonder korting? Dat is wisselgeld voor ieder groot bedrijf, en voor iemand als facebook al helemaal.

Daarbij natuurlijk nog de kosten van het ontwikkelwerk. Ze praten over enkele dozijnen, laten we dat even afromen op 3, dus 36 man. Aan 200 mandagen per jaar komen we dus uit op 7200 mandagen, 57600 manuur. Aan gemiddeld 70 euro per uur komen we uit op net iets meer dan 4 miljoen euro voor de ontwikkelaars. Tel daarbij 25% overhead voor (project) management, architecten en dergelijk en je bent voor pakweg 5,5 miljoen euro klaar.

Wederom zelfs voor een beetje bedrijf in Nederland is 5,5 miljoen voor een project van een jaar niet veel geld. Facebook lacht dat weg. Een beetje financiële instelling heeft dat na een dag handelen op de beurs al terugverdiend. Niks wereldschokkend dus :-)
70 euro per uur is wat optimistisch gedacht. Zeker bij facebook verdien je vanaf $100.000 per jaar als ontwikkelaar. Blijft het natuurlijk nog kinderspel.
De koers is nu inderdaad laag, maar de kale loonkosten zijn natuurlijk niet alle kosten die een werkgever per werknemer kwijt is ;) En dan bedoel ik niet de projectoverhead. Maar hoe die er voor fb uitziet weet ik ook niet, maar naar mijn schatting wordt het wel iets iets meer dan 70eur p/u .
Wat ik me afvraag is hoe lang die SSD schijven meegaan. Want je kan ze maar een beperkt aantal keer beschrijven, waardoor ze me minder geschikt lijken voor servers.
Enorm omlaag reken maar van niet.
Deconsumenten prijzen zijn aardig uitgeknepen, de marges zijn ook niet zo hoog dat facebook 40% korting kan krijgen.
Daarnaast wil men betrouwbare ssd's en zal deze in raid en dan nog via meerdere datacenters laten werken. Reken dus al maar 2x voor datacenter en 2x coor raid dus al 4 keer.
Klopt helemaal.. Alleen moet je ook nog meeberekenen wat de kosten zijn aan machine's om die SSD's heen... Ik denk dat het bedrag al snel 2x zo veel word.
ach als meneer Zuckerberg een beloning krijgt van 2.3 miljard...
dan kan dit er ook wel vanaf lijkt me...
http://www.smh.com.au/it-...llion-20131023-hv27f.html
Arrogante kwast die Z. dat hij zijn Facebook klanten "dumb fucks" noemde, inzake de privacy die massaal geschonden wordt.
hij heeft gelijk. het is maar een heel kleine minderheid die zich bewust is van wat ze allemaal weten en met die info doen. Van die minderheid is het nog eens een heel klein percentage die facebook (en google) effectief mijden.

Kijk eens bij wat random niet-IT mensen naar hun timeline en profiel, vaak zijn die volledig public en kan iedereen alles zien wat ze posten/doen
...niet-IT mensen ...
Laat dat maar weg, want er zijn zat random wel-IT mensen die ook public posten.

Omdat het ze niet uitmaakt of zoals ik, omdat ik elke keer weer vergeet dat de instelling van je laatste post de default wordt. Ofzo.
Facebook op ssd's yeah right |:(

Denk dat in de facebook data centertjes toch echt wel een serie ramsan's hangen in plaats van wat kneuterige ssd schijfjes.

-edit-
Realiseer me net dat ramsan opgekocht is door IBM, waarom heeft dat nooit op tweakers gestaan?

[Reactie gewijzigd door sHELL op 25 oktober 2013 21:58]

SSD's zijn toch in feite ook gewoon een iets trager ram? SSD's in raid, dan ga je al aardig die kant op lijkt mij?
SSD's in raid, alleen al 700TB dan heb je het over een grote hoeveelheid hardware dat je moet onderhouden. Dat zijn 1400 hd units als uit gaat van 512GB SAS SSD's die in 60 2U units moeten staan, dat zijn bijna 4 volle server racks. (RAID dependency en failover nog niet eens mee berekent)

In vergelijking met een 1u ramsan (of flashsystem zoals IBM het nu noemt) praat je over +/- 35 units, dus bijna 1 volle server rack van hooguit 35 units.
Wat jij daar schrijft, klopt niet. 700 terabyte is 700000 gigabyte, niet 716800 gigabyte.

Kilo betekent factor duizend. Mega betekent factor miljoen. Giga betekent factor miljard. Tera betekent factor biljoen.

Als je de kwantiteit terabytes wilt uitdrukken in gigabytes, moet je het aantal terabytes vermenigvuldigen met duizend. Dat heb jij niet gedaan. Jij rekent totaal verkeerd.
Zeg meneer strikt. Je hebt het over een IEC-standaard die zelfs door Google niet wordt gebruikt. Zeg dat dan gewoon.

Er staat niet voor niets het volgende in het artikel waar je naar verwijst.
Een terabyte, afgekort TB, is strikt genomen 1000 gigabytes. (...) In de praktijk wordt de terabyte ook gebruikt voor 1024 GiB (...), maar dit gebruik wordt ontraden sinds er een nieuwe standaard is voor binaire voorvoegsels. 240 B heet nu een tebibyte, afgekort TiB. 1000 TB heet een petabyte.

[Reactie gewijzigd door martijnsch op 27 oktober 2013 16:28]

natuurlijk kost het bakken veel geld, maar nog altijd heel wat bakken minder geld dan puur RAM geheugen :p
Anoniem: 415197
@TT1725 oktober 2013 16:27
Wat ik me vooral afvraag is... heeft facebook dan maar 1 machine met zoveel geheugen (700TB)? En waarom wordt die hoeveelheid geheugen niet gedistribueerd over meerdere machines?
Wat denk je zelf 1 machine met 700 TB ?

Sorry maar een beetje tweaker moet dat toch weten ;-)
Anoniem: 415197
@bbob25 oktober 2013 17:35
Zo logisch is dat helemaal niet. Je weet toch niet wat voor een machine dat is?
700 TB ? Aan 4 TB schijven zijn dat er al 175, dat lijkt me een vrij moeilijke taak; Ik zou ook het voordeel niet zien van 1 machine; Er is ook sprake van cluster, ik vermoed dus een serverparkje ;-)
Ja precies, meerdere proxy's verdeeld over de regio's waar toch voornamelijk lokaal gezocht wordt- die ene hit overzees tov de rest in verhouding, die zal dan een paar ms trager zijn, merk je toch niks van als gebruiker.
Als ze dit willen bijhouden zullen ze steeds meer capaciteit nodig hebben of heb ik het nou mis? 700 terabyte is al een hoop als je het in termen van ruwe opslag beschouwd, als werkgeheugen is het al helemaal een absurd bedrag... Wel een ambitieus project dus.
Uiteraard is er steeds meer capaciteit nodig. Alles wat mensen uploaden verdwijnt niet zomaar in het niets, dat wordt ergens heen geschreven.
Gelukkig verdubbelt de capaciteit ook continu, dus ik denk dat ze dit ook in de toekomst steeds kunnen bijhouden. Bovendien zullen ze hun code steeds verder optimaliseren, waardoor ze voor dezelfde hoeveelheid informatie minder Ram en berekeningen nodig hebben.

Als ze dit tien jaar geleden op een pentium 133 Mhz hadden moeten doen was het niet mogelijk geweest :-)
Volgens mij zit jij met je hoofd in de jaren 90.
In 2003 had je al pentium 4's met 3ghz en hyperthreading ;)
De tijd gaat zo snel :o
lol
Ik wou eerst nog zeggen dat het met een 80-86 jaren zou duren voordat alle data van 1 dag verwerkt was, maar ik vermoedde al dat die meer dan 10 jaar geleden was.

Thanx voor het herinneren dat ik al vrij oud aan het worden ben :-)
Zou mooi zijn om eens bij een bedrijf als Facebook of Google onder de technische-motorkap te kijken. Bedrijven als Facebook en Google zijn ontzettend belangrijk voor nieuwe technieken en het optimaliseren van de bestaande. Steady oplossingen op gebied van caching, storage, etc..
Ze hebben ook HipHopPHP ontwikkeld. Een behoorlijke acceleratie voor PHP.
Is die Graph Search zoekfunctie al voor iedereen beschikbaar? Volgens mij heb ik die nog niet. Hopelijk hebben ze voor mij nog budget over dan.
Gewoon op engels zetten
Flashgeheugen is niet hetzelfde als SSD's hè ;). Is nog tikkeltje duurder dan SSD's ;).
Inderdaad. En sneller bovendien.
baas: ik wil in de zoekfunctie dit kunnen
ontwikkelaar: onmogelijk. dan moet je terabytes aan ram-geheugen hebben...
baas: ja? dus?

heerlijk, veel geld hebben!
misschien waren ze beter gewoon even bij google in de leer geweest. zij spannen nog steeds de kroon voor dit soort implementaties.
Best wel absurd als je ziet wat die site genereert aan load en traffiek.
Zou heus geen nee zeggen om eens rondgeleid te worden in één van hun datacenters.

Zijn er eigenlijk geek stats beschikbaar over het stroomverbruik dat nodig is om FB in de lucht te houden, gegenereerde traffiek, etc... ? Denk dat dat echt wel indrukwekkend cijfers moeten zijn.
Zou heus geen nee zeggen om eens rondgeleid te worden in één van hun datacenters.
Dat zal er toch uitzien als elk ander data centrum? Een muffe ruimte waar het warm en lawaaiig is, waar heel computers staan met knipperende lampjes en verder niks te zien is. Datacenters, heb je 1 gezien heb je ze allemaal gezien.
Ik wil maar zeggen dat ik benieuwd ben hoeveel servers er staan voor een enkele website draaiende te houden. Ik weet heus hoe een datacenter eruit ziet maar ben jij dan niet benieuwd om eens te zien hoeveel racks enz er staan?
Anoniem: 156876
@kh6525 oktober 2013 15:08
Wat mensen vaak vergeten bij het bashen van Facebook, is dat niemand verplicht is om gebruik te maken van Facebook. Je staat er vrij in om het niet te gebruiken, dan staat er helemaal niks van je op de Facebook servers…
Daar vergis je je in. Als er 2 vrienden van jou zijn, die je een invite sturen op je mailadres, dan heeft Facebook die twee vrienden al aan jou en aan elkaar gekoppeld. Eventueel kunnen ze nog door te kijken naar gemeenschappelijke dingen bepaalde eigenschappen van jou achterhalen. Bijvoorbeeld, als ze allebei in dezelfde woonplaats wonen, op dezelfde school zitten en hetzelfde geboortejaar hebben dan concludeerd Facebook dat het klasgenoten zijn.

Dit is maar een voorbeeld, er zijn veel meer mogelijkheden:
http://www.groovypost.com...hadow-accounts-non-users/
Zodra een website een Like-knop van Facebook heeft, komen gegevens van jou, of gegevens welke indirect naar jou verwijzen, wel degelijk op de Facebook-servers terecht..
Dan moet je ook niet naar die websites gaan. Ze zullen het pas veranderen als de websites waarop die like-buttons staan geboycot worden door het publiek. De snellere manier is: je installeert Ghostery. :)

[Reactie gewijzigd door Anoniem: 494777 op 26 oktober 2013 23:36]

Zodra een website een Like-knop van Facebook heeft, komen gegevens van jou, of gegevens welke indirect naar jou verwijzen, wel degelijk op de Facebook-servers terecht..
Als je geen account hebt komt er ook niets op Facebook..
En als je wel een account hebt kun je het via diverse browser plugins er ook voor zorgen dat je niet gevolgd wordt.
Mis! Als je geen account hebt kan er nog steeds informatie van jou verzameld en aan elkaar geknoopt worden,en dat doet fb ook. Die Like knop genereert gewoon cookies.
dan druk je toch gewoon niet op die knop? of bezoekt die site niet.. opgelost
Komop man iedere site heeft tegenwoordig zo'n knop. Wat een stom argument zeg.

Niet iedere consument weet dit. Je eerst argument is dus ook niet valide. Bovendien maakt het nog steeds bar weinig uit aangezien er nog meer wegen zijn die naar Rome leiden en ze nog wel meer truukjes hebben dan alleen cookies. Wat dacht je bijvoorbeeld van 3rd party apps?
De knop genereert ook cookies als je er niet op drukt... daar is een hele ophef over geweest.
Precies de reden dat hier ghostery geinstalleerd staat, om de "social" meuk buiten te houden.
Een beetje tweaker heeft toch wel ghostery en do not track me in zijn browser geinstalleerd..
Hoe naïef kan je zijn.. _/-\o_
Dan nog net met al die NSA verhalen die nog maar het topje van de ijsberg zijn.

[Reactie gewijzigd door SmokingCrop op 28 oktober 2013 15:02]

:D

Dus jij denkt dat FB geen weet heeft van mensen die geen account bij FB hebben?

Door alle cookietracking en ad-targetting weten zij al wie je bent, wat je doet, wat je eet, waar je komt, met wie je omgaat voordat je jezelf aanmeld bij FB ;)
Anoniem: 494461
@kh6525 oktober 2013 14:53
Ik betaal nergens mee, bij facebook voor zover ik weet. Beetje aparte reactie.
If you don't pay for the product, you ARE the product...
Wie verplicht je om Facebook te gebruiken?

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee