martes, 29 de agosto de 2017

¿Qué es Presto DB?

Este artículo está hecho para que los posibles administradores y usuarios finales sepan qué esperar de Presto.


Definición

Presto es un motor de consulta SQL distribuido diseñado para consultar conjuntos de datos grandes distribuidos sobre una o más fuentes de datos heterogéneas.


Lo que no es Presto DB en la actualidad

Debido a que Presto está siendo llamado una base de datos por muchos miembros de la comunidad, tiene sentido comenzar con una definición de lo que Presto no es.

No confunda el hecho de que Presto entiende SQL con él que proporciona las características de una base de datos estándar. Presto no es una base de datos relacional de uso general. No es un reemplazo para bases de datos como MySQL, PostgreSQL u Oracle. Presto no fue diseñado para procesar transacciones en línea (OLTP). Esto también es cierto para muchas otras bases de datos diseñadas y optimizadas para data warehouse o análisis de datos.

¿Qué es Presto?

Presto es una herramienta diseñada para consultar eficientemente grandes cantidades de datos mediante consultas distribuidas. Si trabaja con terabytes o petabytes de datos, es probable que utilice herramientas que interactúen con Hadoop y HDFS. Presto fue diseñado como una alternativa a las herramientas que consultan HDFS usando tuberías de trabajos de MapReduce como Apache Hive o Pig, pero Presto no se limita a acceder a HDFS. Presto puede ser ampliado para operar sobre diferentes tipos de fuentes de datos, incluyendo bases de datos relacionales tradicionales y otras fuentes de datos como Cassandra.

Presto fue diseñado para manejar data warehousing y análisis: análisis de datos, agregando grandes cantidades de datos y produciendo reportes. Estas cargas de trabajo se clasifican a menudo como procesamiento analítico en línea (OLAP).

¿Quién usa Presto?


Presto es un proyecto de código abierto que funciona bajo los auspicios de Facebook. Fue inventado en Facebook y el proyecto continúa siendo desarrollado por los desarrolladores internos de Facebook y un número de desarrolladores de terceros en la comunidad. En mi último trabajo se usó para sustituir a la base de datos que soportaba el modelo de datawarehouse, debido a coste económico del mantenimiento.

Presto es un sistema distribuido que se ejecuta en un grupo de máquinas. Una instalación completa incluye un coordinador y varios trabajadores. Las consultas se envían desde un cliente como la CLI Presto al coordinador. El coordinador analiza, analiza y planifica la ejecución de la consulta, luego distribuye el procesamiento a los trabajadores.

Requisitos

Presto tiene algunos requisitos básicos: 
  • Linux o Mac OS X
  • Java 8, 64 bits
  • Python 2.4+



Conectores

Presto admite conectores enchufables que proporcionan datos para consultas. Los requisitos varían según el conector.

HADOOP / HIVE

Presto admite la lectura de datos de cola de las siguientes versiones de Hadoop: 
    • Apache Hadoop 1.x
    • Apache Hadoop 2.x
    • Cloudera CDH 4
    • Cloudera CDH 5

Se admiten los siguientes formatos de archivo: Texto, Archivo secuencial, RCFile, ORC y Parquet.

Además, se requiere un metastore remoto de colmena. No se admite el modo local o incorporado. Presto no usa MapReduce y por lo tanto sólo requiere HDFS.

CASSANDRA

Se requiere Cassandra 2.x. Este conector es completamente independiente del conector Hive y sólo requiere una instalación de Cassandra existente.

TPC-H

El conector TPC-H genera dinámicamente datos que pueden utilizarse para experimentar y probar Presto. Este conector no tiene requisitos externos.

Despliegue

Consulte Implementación de Presto para obtener instrucciones completas de implementación.

Ejecución de consultas

Puede ejecutar consultas utilizando la Interfaz de línea de comandos después de implementar Presto.
La CLI de Presto proporciona un shell interactivo basado en terminal para ejecutar consultas. La CLI es un archivo JAR que se ejecuta automáticamente, lo que significa que actúa como un ejecutable normal de UNIX.

Descargar presto-cli-0.183-ejectable.jar, renombrarlo a presto, hacerlo ejecutable con chmod + x, luego ejecutarlo:

./presto --server localhost: 8080 --cambio de catálogo --schema default

Ejecute la CLI con la opción --help para ver las opciones disponibles.


De forma predeterminada, los resultados de las consultas se paginan utilizando el programa menos que está configurado con un conjunto cuidadosamente seleccionado de opciones. Este comportamiento se puede sobreescribir estableciendo la variable de entorno PRESTO_PAGER al nombre de un programa diferente como, por ejemplo, más o establecerlo en un valor vacío para desactivar completamente la paginación.