10 formas de consultar Hadoop con SQL

SQL: viejo y arruinado. Hadoop: nuevo picor. Esa es la sabiduría convencional, pero la gran cantidad de proyectos que colocan una interfaz de SQL conveniente en los almacenes de datos de Hadoop muestra que existe una necesidad real de productos que ejecuten consultas SQL en datos que se encuentran dentro de Hadoop en lugar de simplemente usar los informes nativos de Hadoop o exportar datos de Hadoop a una base de datos convencional.

MapR produce una distribución de Hadoop propia, y la edición más reciente (4.0.1) la incluye con cuatro motores distintos para consultar Hadoop vial SQL. Los cuatro son importantes sistemas de consulta SQL para Hadoop, pero existe mucha más tecnología SQL para Hadoop, y están diseñados para satisfacer diferentes necesidades y casos de uso, desde lo esotérico hasta lo universal.

Primero, los cuatro motores SQL que vienen con MapR:

Apache Hive: esta es la solución SQL-on-Hadoop original, que intenta emular el comportamiento, la sintaxis y las interfaces de MySQL, incluido un cliente de línea de comandos. También incluye una API Java y controladores JDBC para aquellos con una inversión existente en aplicaciones Java que realizan consultas al estilo MySQL. A pesar de su relativa simplicidad y facilidad de uso, Hive ha sido lento y de solo lectura, lo que ha provocado una serie de iniciativas para mejorarlo.

Stinger: Hortonworks, productores de su propia distribución de Hadoop, inició el proyecto Stinger como una forma de avanzar en el desarrollo de Apache Hive y mejorar su rendimiento. La encarnación más reciente del proyecto, Stinger.next, tiene "tiempos de respuesta de consultas inferiores a un segundo" como uno de sus objetivos de diseño, junto con la compatibilidad con comportamientos transaccionales (inserciones, actualizaciones y eliminaciones). Todos estos cambios debutarán en los próximos 18 meses, y seguirán otras características como el análisis SQL.

Apache Drill: una implementación de código abierto de Dremel de Google (también conocido como BigQuery), Drill fue diseñado para realizar consultas de baja latencia en múltiples tipos de almacenes de datos a la vez con diferentes interfaces de consulta (como Hadoop y NoSQL), y para ser altamente escalable. Los ejercicios también están destinados a ejecutar consultas dentro de una amplia gama de tiempos de ejecución, que duran solo unos pocos milisegundos para ejecutarse durante minutos. MapR afirma que Drill mira hacia el futuro, no simplemente compatible con versiones anteriores, una de las razones por las que fue elegido para poner sus propios esfuerzos de desarrollo detrás de ese proyecto.

Spark SQL: el proyecto Spark de Apache es para el procesamiento en paralelo, en memoria y en tiempo real de datos de Hadoop. Spark SQL se basa en él para permitir que las consultas SQL se escriban en los datos. Una mejor forma de pensarlo podría ser Apache Hive para Apache Spark, ya que reutiliza piezas clave de la tecnología Hive. En ese sentido, es un complemento para quienes ya trabajan con Spark. (Un proyecto anterior, Shark, se ha incluido en este).

Más allá de estos cuatro, destacan otros seis:

Apache Phoenix: sus desarrolladores lo llaman "máscara SQL para HBase", una forma de consultar HBase con comandos similares a SQL a través de un controlador JDBC incrustable creado para operaciones de lectura / escritura y alto rendimiento. Considérelo casi una obviedad para aquellos que utilizan HBase, gracias a que es de código abierto, desarrollado de forma agresiva y equipado con funciones útiles como la carga masiva de datos.

Cloudera Impala: De alguna manera, Impala es otra implementación de Dremel / Apache Drill, diseñada para expandirse en Hive para que los usuarios salientes de Hive puedan aprovecharla al máximo. Los datos almacenados en HDFS o HBase se pueden consultar y la sintaxis SQL es, como era de esperar, la misma que la de Apache Hive. Pero la principal diferencia de Impala con Drill es que no está destinado a ser independiente de la fuente; consulta a Hadoop exclusivamente.

HAWQ para Pivotal HD: Pivotal proporciona su propia distribución Hadoop (Pivotal HD) y HAWQ es un componente propietario para realizar consultas SQL en HDFS. En consecuencia, es un producto exclusivo de Pivotal, aunque Pivotal destaca por su procesamiento SQL paralelo y su alto cumplimiento de los estándares SQL.

Presto: creado por los ingenieros de Facebook y utilizado internamente en esa empresa, este motor de consulta de código abierto recuerda a Apache Drill en el sentido de que es independiente de la fuente. Puede consultar tanto a Hive como a Cassandra usando comandos ANSI SQL, y los desarrolladores pueden extender el sistema escribiendo conectores para él usando su interfaz de proveedor de servicios. Se admiten algunas funciones de inserción de datos, pero siguen siendo muy básicas: no puede realizar actualizaciones, solo inserciones.

Oracle Big Data SQL: era solo cuestión de tiempo antes de que Oracle lanzara su propia interfaz de consulta SQL para Hadoop. Al igual que Drill, puede consultar tanto Hadoop como otras tiendas NoSQL. Pero a diferencia de Drill, es un producto propio de Oracle y solo se integra con Oracle Database 12c y versiones posteriores, lo que limita seriamente el mercado para él.

IBM BigSQL: Era solo cuestión de tiempo antes de que IBM hiciera lo mismo, aunque anunció la primera vista previa de la tecnología de BigSQL a principios de 2013. Lamentablemente, al igual que con la oferta de Oracle, está vinculada a un producto específico de IBM en el back-end: en este caso, Hadoop de IBM, InfoSphere BigInsights. Dicho esto, la interfaz puede ser un cliente JDBC / ODBC estándar, y las consultas pueden incluir datos de instancias de IBM DB2, Teradata o PureData Systems for Analytics.