Qui dispose d'un entrepôt de données qui stocke 300 Po de données sur des clusters Hadoop et se bat avec la latence des requêtes ? Facebook bien sûr. Pour résoudre ce problème de latence des requêtes, le réseau social a élaboré son propre moteur de requête SQL distribué baptisé Presto. Il est actuellement utilisé quotidiennement par plus de 1 000 personnes chez Facebook pour exécuter 30 000 requêtes interactives, impliquant plus de 1 Po de traitement, souligne Martin Traverso, ingénieur à la firme de Menlo Park sur un blog. Il ajoute que ce logiciel peut fonctionner sur un cluster de 1000 noeuds.

Aujourd'hui, Facebook annonce la mise à disposition en Open Source de sa solution sous licence Apache 2.0. La société a publié le code source du logiciel et encourage les contributions. A noter que d'autres services Internet, comme Airbnb et Dropbox utilisent ce service. Chris Guttierez, data scientist chez Airbnb explique qu'avec Presto, « Un ingénieur en chef se met en production en quelques jours. C'est un ordre de grandeur plus rapide que nous permet Hive dans nos cas d'utilisation. On peut y lire directement depuis HDFS, pas comme Redshift, il n'y a pas beaucoup d'ETL avant de pouvoir l'utiliser. Cela fonctionne tout de suite ». Même constat pour Fred Wulff, ingénieur chez Dropbox, « Nous avons l'intention de nous en servir pour obtenir rapidement un aperçu sur les différentes manières dont nos clients utilisent Dropbox, ainsi que le diagnostic des problèmes qu'ils rencontrent. Lors de nos tests jusqu'à présent, Presto a été solide comme un roc et extrêmement rapide lorsqu'il est appliqué à certains de nos cas d'utilisation les plus importants ».

Compilation à la volée et traitement en mémoire


Concrètement, Presto peut effectuer beaucoup de tâches que les moteurs SQL standard, comme les requêtes complexes, l'agrégation, les fonctions de jointures externes, les sous-requêtes, ainsi que la plupart des solutions de mise à l'échelle. Il lui manque néanmoins la capacité d'écrire le retour des résultats en table de données et de ne pas pouvoir joindre des tables au-delà d'une certaine taille. Pour analyser ses données, Facebook utilisait MapReduce de Hadoop avec Hive, mais avec l'augmentation de l'entrepôt de données, cette approche s'est avérée beaucoup trop lente. Le groupe en charge de l'infrastructure de données chez Facebook a d'abord examiné d'autres logiciels pour exécuter des requêtes plus rapides, mais n'a rien trouvé de suffisamment mature et capable de s'adapter aux niveaux requis. Le réseau social a donc construit sa propre solution utilisant Java.



L'architecture de Presto de Facebook

Contrairement à Hive, Presto n'utilise pas MapReduce, qui impliquait l'écriture des résultats sur le disque. Au lieu de cela, Presto compile des parties de la requête à la volée et réalise tout son traitement en mémoire. Facebook affirme que Presto est 10 fois plus efficace en terme de CPU et de latence que la combinaison Hive/MapReduce. Un autre avantage mis en avant par Martin Traverso réside dans la capacité de Presto de travailler avec des sources de données autres que Hadoop. Le réseau social gère par exemple un datawarehouse personnalisé pour son fil d'actualité. La société a aussi créé des connecteurs pour HBase et Scribe.

Avec la mise à disposition de Presto, la firme fondée par Mark Zuckerberg se lance sur le marché émergent des moteurs de requêtes SQL qui offrent des résultats rapides sur des grands ensembles Hadoop. Pivotal, filiale regroupant des actifs de VMware et EMC a développé Hawq et son compatriote Cloudera travaille sur sa propre solution baptisée Impala.