Scheduling wie die Großen: Corona für Hadoop
Hadoops MapReduce-Scheduling konnte den Anforderungen der Facebook-Entwickler nicht mehr gerecht werden. Also implementierten sie einen eigenen Algorithmus, der nun der Öffentlichkeit zur Verfügung steht.
Um mit ihren mehreren Petabyte großen Datenbanken besser zurechtzukommen (das größte Cluster umfasst etwa 100 PByte), haben die Entwickler des sozialen Netzes Facebook einen eigenen Scheduling-Algorithmus für Hadoop entwickelt. Corona [1] bearbeitet seit Mitte des Jahres alle Hive-Anfragen (Hadoops Data-Warehouse-System) und hat so die Stelle des MapReduce-Scheduling eingenommen, mit dem Hadoop normalerweise arbeitet.
Im Gegensatz zum MapReduce-Ansatz wird mit Corona das Ressourcen-Management von der Job-Koordination getrennt. Ein Cluster-Manager hat die Aufgabe, Knoten im Cluster zu finden und deren freie Ressourcen zu ermitteln. Für jeden Job wird darüber hinaus ein Job-Tracker erstellt, der entweder im selben Prozess wie der Client oder als einzelner Prozess im Cluster laufen kann.
Ein weiterer Unterschied zum MapReduce-Scheduling-Framework ist das Verwenden eines Push-orientierten Scheduling, statt des Pull-Ansatzes: Nachdem der Job-Tracker Ressourcen-Anfragen erhalten hat, gibt er die entsprechenden Ressourcenbewilligungen zurück an der Tracker, der dann Tasks erstellt und diese zum Ausführen an den Task-Tracker weiterleitet. Da das Scheduling keinem bestimmten Rhythmus unterliegt, wird so die Latenz reduziert.
Innerhalb von drei Monaten wurden das gesamte Facebook-Produktionssystem von MapReduce-Scheduling auf Corona umgestellt, was dem Cluster, laut Entwicklern, unter anderem bessere Skalierbarkeit, weniger Latenz und besseres Ressourcenmanagement einbrachte. Die kommende MapReduce-Version, welche auch unter dem Namen YARN bekannt ist, kann als Alternative zu Corona gesehen werden. Allerdings konnte das Team aufgrund der Anforderungen nicht auf MapReduce 2.0 warten.
Der Corona-Quellcode [2] ist im Hadoop-Github-Repository zu finden. (jul [3])
URL dieses Artikels:
https://www.heise.de/-1747087
Links in diesem Artikel:
[1] https://www.facebook.com/notes/facebook-engineering/under-the-hood-scheduling-mapreduce-jobs-more-efficiently-with-corona/10151142560538920
[2] https://github.com/facebook/hadoop-20/tree/master/src/contrib/corona
[3] mailto:jul@heise.de
Copyright © 2012 Heise Medien