De openbron-infrastructuur van Facebook

De 500 miljoen gebruikers van Facebook komen met elkaar in contact dankzij een aaneenschakeling van openbronsoftware. Dat maakt een sociaal netwerk en data-inteligentie mogelijk: Facebooks infrastructuur is namelijk meer dan de oude vertrouwde LAMP-configuratie (Linux/Apache/MySQL/PHP).
Tijdens een presentatie op de openbronsoftwareconferentie OSCON gaf David Recordon, Facebooks senior manager voor open programma’s, details over de huidige infrastructuur.
Als programmeertaal gebruikt de website PHP, in de vorm van zijn eigen HipHopproject. Facebook kondigde HipHop eerder dit jaar officieel aan en gebruikt het om PHP-functies sneller uit te voeren. Verder is het project efficiënter en belast het de server-CPU veel minder dan een standaard PHP-distributie.
Datakluis
Data worden bewaard in een MySQL-database. Facebook gebruikt duizenden nodes, zegt Recordon. En hij voegt eraan toe dat het Facebook niet uitmaakt dat MySQL een relationele database is. “We gebruiken het niet om tabellen samen te voegen of om complexe queries uit te voeren.”
Het sociale netwerk gebruikt drie lagen voor data. De eerste en belangrijkste laag is de MySQL-database. Daarbovenop gebruikt de website de cachingtechnologie Memcached, en als laatste is er de webserver om de data aan de gebruiker te tonen.
“We gebruiken onze webserver vooral om de data te combineren, en juist daarom is HipHop zo belangrijk”, verklaart Recordon. “Onze webservercode is vrij CPU-intensief omdat we erg veel verschillende dingen doen met data.”
Naast MySQL gebruikt de website een paar NoSQL-databases. Cassandra, maar ook HBase, dat deel uitmaakt van Apaches Hadoopproject.
“We bewaren de meeste data in MySQL, maar onze Cassandra-database bevat 150 terabyte die we gebruiken voor zoekopdrachten op de website. In het algemeen bevat Hadoop 36 petabytes aan ongecomprimeerde informatie.”
Recordon zegt ook dat Facebooks Hadoopcluster ongeveer 2.200 servers telt, die samen 23.000 CPU’s sterk zijn. Facebook verwacht dat het tegen het einde van dit jaar 50 petabytes aan informatie bewaart.
Data-analyse
De Hadoopcomponenten helpen Facebook de data te analyseren, om zo te kunnen begrijpen hoe mensen de website gebruiken. Facebook gebruikt data-analyse om productbeslissingen te nemen, zoals de manier waarop het e-mails stuurt of hoe het nieuwslijsten rangschikt.
Voor die data-analyse vertrouwt het sociale netwerk op Scribe. “Scribe haalt data van onze webservers, vormt het om naar HDSF (Hadoop Distributed File System) en stuurt het door naar ons Hadooppakhuis”, vervolgt Recordon. “In het begin hadden we te veel webservers die data probeerden te versturen naar één plek. Scribe splitst die datastroom trechtergewijs op en verzamelt data over een bepaalde tijdspanne.”
“Een groot deel van onze infrastructuur is openbron en dat vinden we erg belangrijk”, sluit Recordon af. “Vooral ontwikkelaars die het Facebookplatform gebruiken in hun applicaties kunnen dat met dezelfde infrastructuur die wij gebruiken. Uiteindelijk komen we allemaal dezelfde uitdagingen tegen.”













