Facebook ha puesto la valla alta en temas de escalabilidad de SQL, al lanzar un motor de búsquedas open source en SQL que desarrolló, llamado Presto, que fue construido para trabajar con data warehouses.
Actualmente, más de 1000 empleados usan Presto cada día para correr 30,000 búsquedas interactivas, que tienen en cuenta más de un petabyte de procesamiento, según un post del ingeniero de software de Facebook Martin Traverso. La compañía ha escalado el software para que pueda correr en un cluster de 1000 nodos.
Hoy, Facebook quiere que otras organizaciones que trabajan con datos refinan Presto. La compañía ha subido el código fuente del software y alienta las contribuciones de otras organizaciones. El software ya está siendo probado por un gran número de otros servicios de internet, como AirBnB y Dropbox.
Los data warehouses tradicionales podría estar muy interesados en ofrecer las características de Presto, según los ingenieros de Facebook. El data warehouse de Facebook tiene más de 300 petabytes de material de sus usuarios, almacenados en clusters Hadoop. Presto interactúa con esta data a través de analísis interactivos, así como con algoritmos de machine-learning y procesamiento estándar por lotes.
Para analizar esta data, Facebook usó originalmente Hadoop MapReduce junto con Hive. Pero conforme el data warehouse creció, esta aproximación probó ser muy lenta.
El grupo de Infraestructura de Datos de Facebook miró inicialmente otro software para correr búsquedas más rápido, pero no encontró nada que fuera maduro y capaz de escalar a los niveles requeridos. En cambio, el grupo creó su propio motor de búsquedas en SQL, usando Java.
Presto puede hacer muchas de las tareas que los motors estándar de SQL pueden hacer, como búsquedas complejas, agregaciones, uniones, sub búsquedas y muchas otras funciones. No tiene la habilidad de escribir los resultados de vuelta en las tablas de información y no puede crear uniones de tablas a partir de cierto tamaño.
A diferencia de Hive, Presto no utiliza MapReduce, que involucra escribir los resultados de vuelta en el disco. En vez de eso, Presto compila partes de la búsqueda en el acto y hace todo el procesamiento en la memoria. Como resultado de esto, Facebook dice que Presto es 10 veces mejor en términos de eficiencia de CPU y latencia que Hive y MapReduce unidos.
Presto es uno de varios motoros de búsquedas en SQL que afrontan el problema de ofrecer resultados rápidos en grupos de datos Hadoop. El distribuidor de Hadoop, Pivotal, ha desarrollado Hawq para ello, y el distribuidor Cloudera está trabajando en el software Impala.
Otro beneficio de Presto es la habilidad para trabajar con fuentes de datos distintas a Hadoop. Facebook corre un banco de datos personalizado para su flujo de noticias, por ejemplo, al que Presto puede entrar a trabajar. Facebook también ha construido conectores para HBase y Scribe. El software se puede extender a otras fuentes, también, según Traverso.
Fuente: CIO / Joab Jackson / 6-11-13